Tabla de contenido:
- Paso 1: demostración
- Paso 2: Montaje
- Paso 3: Montaje - Mesa
- Paso 4: Ubidots
- Paso 5: Biblioteca SimpleDHT
- Paso 6: Biblioteca PubSubClient
- Paso 7: Biblioteca TinyGSM
- Paso 8: Biblioteca TFT_eSPI
- Paso 9: Biblioteca TFT_eSPI
- Paso 10: Ubidots
- Paso 11: Cambiar los datos en.ino
- Paso 12: GPRS_ESP32_DHT.ino - Declaraciones y variables
- Paso 13: Fijación
- Paso 14: configuración
- Paso 15: SetupDisplay
- Paso 16: Configuración de GSM
- Paso 17: ConnectMQTTServer
- Paso 18: bucle
- Paso 19: Leer DHT
- Paso 20: PublishMQTT
- Paso 21: CreateJsonString
- Paso 22: ShowDataOnDisplay
- Paso 23: archivos
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
Hoy hablaremos sobre el módem GPRS, o mejor dicho, el ESP32 y su uso con la red de telefonía celular. Esto es algo que funciona muy bien. Usando el protocolo MQTT, enviaremos datos al panel de Ubidots. Utilice en este conjunto una pantalla para retroalimentación del circuito, además del SIM800L y un chip de teléfono celular. Con este proyecto, por lo tanto, enviaremos datos de temperatura y humedad a través de GPRS y MQTT, y visualizaremos los datos en un gráfico de líneas.
Paso 1: demostración
Paso 2: Montaje
Paso 3: Montaje - Mesa
Paso 4: Ubidots
Paso 5: Biblioteca SimpleDHT
En el IDE de Arduino, vaya a Sketch-> Incluir biblioteca-> Administrar bibliotecas …
Instalar SimpleDHT
Paso 6: Biblioteca PubSubClient
En el IDE de Arduino, vaya a Sketch-> Incluir biblioteca-> Administrar bibliotecas …
Instalar PubSubClient
Paso 7: Biblioteca TinyGSM
En el IDE de Arduino, vaya a Sketch-> Incluir biblioteca-> Administrar bibliotecas …
Instalar TinyGSM
Paso 8: Biblioteca TFT_eSPI
En el IDE de Arduino, vaya a Sketch-> Incluir biblioteca-> Administrar bibliotecas …
Instalar TFT_eSPI
Paso 9: Biblioteca TFT_eSPI
Cambie los pines de la pantalla en la carpeta lib.
El anclaje está en el archivo User_Setup.h en
C: / Usuarios / \ Documentos / Arduino / bibliotecas / TFT_eSPI
Cambie estos valores predeterminados a los siguientes valores en la imagen.
Paso 10: Ubidots
Inicie sesión en Ubidots con su cuenta y haga clic en Dispositivos
Haga clic en el botón "+" en la esquina superior derecha
Haga clic en En blanco
Ingrese el nombre del dispositivo. Tenga en cuenta la "etiqueta del dispositivo", ya que se utilizará en el "tema" que utilizaremos en.ino
En la lista de dispositivos, aparecerá el dispositivo que acaba de crear. Haz click en eso.
En la pantalla que aparece, haga clic en "Agregar variable". Aparecerá una ventana emergente. Haga clic en "Raw".
Haga clic en el cuadro de texto e ingrese el nombre de la propiedad.
Tiene que ser exactamente lo que enviaremos en el json del.ino. Repita esto para la otra propiedad.
Regrese al tablero haciendo clic en el logotipo de Ubidots.
En el panel, haga clic en "Agregar nuevo widget".
En la lista de widgets, elija "Eje doble"
Paso 11: Cambiar los datos en.ino
Paso 12: GPRS_ESP32_DHT.ino - Declaraciones y variables
#define TINY_GSM_MODEM_SIM800 // Tipo de modem que estamos usando # include #include #include #include #include // Token de usuário que pegamos no Ubidots #define TOKEN "BBFF-abcdefghijklmnopqrstuvwxyz0123 (esp32_gprs é o nome do dispositivo no Ubidots) #define TOPIC "/v1.6/devices/esp32_gprs" // id do dispositivo que pegamos no painel do Ubidots #define DEVICE_ID "5c01234567890abc12345678" // URL do MQTT Server #T_SERQ " mqtt: //things.ubidots.com "// Porta padrão do MQTT #define MQTT_PORT 1883 // Pino onde está o DHT22 #define DHT_PIN 27
Paso 13: Fijación
// Pinagem em User_Setup.h na pasta da bibliotecaTFT_eSPI display = TFT_eSPI (); // Intervalo entre os envios e refresh da tela #define INTERVAL 10000 // Canal serial que vamos a usar para comunicarmos com o modem. Utilice semper 1 HardwareSerial SerialGSM (1); Módem TinyGsmGSM (SerialGSM); TinyGsmClient gsmClient (modemGSM); // Cliente MQTT, pasamos una url al servidor, un porta // e o cliente GSM PubSubClient client (MQTT_SERVER, MQTT_PORT, gsmClient); // Tempo em que o último envio / refresh foi feito uint32_t lastTime = 0; flotar la humedad; // Variável onde iremos armazenar o valor da umidade float temperature; // Variável onde iremos armazenar o valor da temperatura SimpleDHT22 dht; // Objeto que ejecutará a leitura da umidade e temperatura
Paso 14: configuración
configuración vacía () {Serial.begin (115200); setupDisplay (); // Inicializa e configura o visualiza setupGSM (); // Inicializa e configura o modem GSM connectMQTTServer (); // Conectamos ao mqtt server // Espera 2 segundos e limpamos o display delay (2000); display.fillScreen (TFT_BLUE); display.setCursor (0, 0); }
Paso 15: SetupDisplay
void setupDisplay () {display.init (); display.setRotation (1); display.fillScreen (TFT_BLUE); // Limpiar la pantalla com a cor azul display.setTextColor (TFT_WHITE, TFT_BLUE); // Coloca o texto como branco com fundo azul display.setTextWrap (true, true); // Ativa quebra de linha display.setTextSize (1); display.setCursor (0, 0, 2); // Posicção x, y e fuente del texto display.println ("Setup Display Complete"); }
Paso 16: Configuración de GSM
void setupGSM () {display.println ("Configurar GSM…"); // Inicializamos una onda serial o modem SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); retraso (3000); // Mostra informação sobre o modem Serial.println (modemGSM.getModemInfo ()); // Inicializa el módem if (! ModemGSM.restart ()) {display.println ("Falló el reinicio del módem GSM"); retraso (10000); ESP.restart (); regreso; } // Espera pela rede if (! ModemGSM.waitForNetwork ()) {display.println ("No se pudo conectar a la red"); retraso (10000); ESP.restart (); regreso; } // Conecta a red gprs (APN, usuário, senha) if (! ModemGSM.gprsConnect ("", "", "")) {display.println ("Falló la conexión GPRS"); retraso (10000); ESP.restart (); regreso; } display.println ("Configuración exitosa de GSM"); }
Paso 17: ConnectMQTTServer
void connectMQTTServer () {display.println ("Conectando al servidor MQTT…"); // Se conecta ao dispositivo que definimos if (client.connect (DEVICE_ID, TOKEN, "")) {// Se a conexão foi bem sucedida display.println ("Conectado"); } else {// Se ocorreu algum erro display.print ("error ="); display.println (client.state ()); retraso (10000); ESP.restart (); }}
Paso 18: bucle
void loop () {// Faz a leitura da umidade e temperatura readDHT (); // Se desconecta el servidor MQTT if (! Client.connected ()) {// Mandamos conectar connectMQTTServer (); } // Tempo decorrido desde o boot em milissegundos unsigned long now = millis (); // Se passou o intervalo de envio if (ahora - lastTime> INTERVAL) {// Publicamos para o server mqtt publishMQTT (); // Mostramos los datos sin mostrar showDataOnDisplay (); // Atualizamos o tempo em que foi feito o último envio lastTime = now; }}
Paso 19: Leer DHT
void readDHT () {float t, h; // Faz a leitura da umidade e temperatura e apenas atualiza as variáveis se foi bem sucedido if (dht.read2 (DHT_PIN, & t, & h, NULL) == SimpleDHTErrSuccess) {temperature = t; humedad = h; }}
Paso 20: PublishMQTT
void publishMQTT () {// Cria o json que iremos enviar para el servidor MQTT String msg = createJsonString (); Serial.print ("Publicar mensaje:"); Serial.println (msg); // Publicamos no tópico int status = client.publish (TOPIC, msg.c_str ()); Serial.println ("Estado:" + Cadena (estado)); // Estado 1 se sucesso ou 0 se deu erro}
Paso 21: CreateJsonString
String createJsonString () {String data = "{"; if (! isnan (humedad) &&! isnan (temperatura)) {data + = "\" humedad / ":"; datos + = Cadena (humedad, 2); datos + = ","; datos + = "\" temperatura / ":"; datos + = Cadena (temperatura, 2); } datos + = "}"; devolver datos; }
Paso 22: ShowDataOnDisplay
void showDataOnDisplay () {// Restaure la posición del cursor y muestre la temperatura y la temperatura display.setCursor (0, 0, 2); display.println ("Humedad:" + Cadena (humedad, 2)); display.println ("Temperatura:" + Cadena (temperatura, 2)); }
Paso 23: archivos
Descarga los archivos
INO