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
Video: IOT con red celular con ESP32: 23 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
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
Recomendado:
Alimente un teléfono celular / móvil con batería externa o red eléctrica: 3 pasos
Alimentar un teléfono celular / móvil con batería externa o red eléctrica .: Introducción. Esta idea solo funcionará con teléfonos o tabletas si la batería es extraíble. Observar la polaridad es importante, por supuesto. Tenga cuidado de no dañar su dispositivo por descuido. Si no está seguro de su capacidad para hacer esto, el
¡Haga una cámara con control remoto desde un teléfono celular !: 5 pasos (con imágenes)
¡Haga una cámara con control remoto desde un teléfono celular !: ¿Quiere saber qué hace su gato en el trabajo? Envíe un mensaje de texto a su teléfono celular de vigilancia recién creado y reciba imágenes y videos segundos después. ¿Suena como un sueño? ¡Ya no! Este video explica cómo funciona:
Inversor de bricolaje conectado a la red (no alimenta la red) Alternativa de UPS: 7 pasos (con imágenes)
Inversor de conexión a la red de bricolaje (no alimenta la red) Alternativa de UPS: esta es una publicación de seguimiento de mi otro Instructable sobre cómo hacer un inversor de conexión a la red que no retroalimenta a la red, ya que ahora siempre es posible hacer esto en ciertas áreas como un proyecto de bricolaje y algunos lugares no permiten alimentar allí g
Controlador de red IoT. Parte 9: IoT, automatización del hogar: 10 pasos (con imágenes)
Controlador de red IoT. Parte 9: IoT, automatización del hogar: descargo de responsabilidad LEA ESTO PRIMERO Este Instructable detalla un proyecto que usa energía de la red (en este caso, Reino Unido 240VAC RMS), mientras que se ha tomado todo el cuidado para usar prácticas seguras y buenos principios de diseño, siempre existe el riesgo de que sea potencialmente letal. electo
Reloj ESP32 usando WiFi, ESP-NOW y celular: 4 pasos
Reloj ESP32 usando WiFi, ESP-NOW y celular: Este es un reloj wifi basado en ESP32 que hice para el concurso inalámbrico. Decidí hacer este reloj demasiado inalámbrico para que use tres formas diferentes de comunicación inalámbrica (WiFi, ESP-NOW y celular). El teléfono está conectado a una torre celular y