Puerta de enlace ESP32 Lora Thingspeak con nodo sensor: 9 pasos
Puerta de enlace ESP32 Lora Thingspeak con nodo sensor: 9 pasos

Video: Puerta de enlace ESP32 Lora Thingspeak con nodo sensor: 9 pasos

Video: Puerta de enlace ESP32 Lora Thingspeak con nodo sensor: 9 pasos
Video: Como conectar los módulos TTGO LORA 32 a TTN (paso a paso) 2025, Enero
Anonim
Puerta de enlace ESP32 Lora Thingspeak con nodo sensor
Puerta de enlace ESP32 Lora Thingspeak con nodo sensor

En este proyecto de IoT, diseñé ESP32 LoRa Gateway y también ESP32 LoRa Sensor Node para monitorear la lectura del sensor de forma inalámbrica desde distancias de unos pocos kilómetros. El remitente leerá los datos de humedad y temperatura utilizando el sensor DHT11. Luego transmite los datos a través de LoRa Radio. Los datos son recibidos por el módulo receptor. El receptor luego enviará los datos a Thingspeak Server después de un cierto intervalo.

Paso 1: componentes necesarios

1. Placa ESP32 - 2

2. Módulo Lora SX1278 / SX1276

3. Sensor de temperatura de humedad DHT11

4. Tablero de pruebas

5. Conexión de cables de puente

Paso 2: instalar las bibliotecas necesarias

Primero necesitamos instalar diferentes bibliotecas:

1. Biblioteca DHT11

2. Biblioteca LoRa

Paso 3: ESP32 LoRa Thingspeak Gateway

Puerta de enlace ESP32 LoRa Thingspeak
Puerta de enlace ESP32 LoRa Thingspeak
Puerta de enlace ESP32 LoRa Thingspeak
Puerta de enlace ESP32 LoRa Thingspeak

Ahora veamos el circuito emisor y receptor para construir ESP32 LoRa Gateway & Sensor Node. Monté ambos circuitos en una placa de pruebas. Puede hacerlo en PCB si lo desea.

Aquí hay un circuito de puerta de enlace ESP32 LoRa Module SX1278. Esta parte funciona como un receptor. Los datos de humedad y temperatura se reciben mediante LoRa Radio y se cargan en Thingspeak Server.

Paso 4: Nodo del sensor ESP32 LoRa

Nodo del sensor ESP32 LoRa
Nodo del sensor ESP32 LoRa
Nodo del sensor ESP32 LoRa
Nodo del sensor ESP32 LoRa

Aquí hay un circuito de nodo de sensor ESP32 LoRa con sensor DHT11. Esta parte funciona como transmisor. Los datos de humedad y temperatura son leídos por el sensor de temperatura de humedad DHT11 y transmitidos usando LoRa Radio.

Paso 5: Configurar Thingspeak

Configuración de Thingspeak
Configuración de Thingspeak

Para monitorear los datos del sensor en el servidor Thingspeak, primero debe configurar el Thingspeak. Para configurar el servidor Thingspeak, visite https://thingspeak.com/. Cree una cuenta o simplemente inicie sesión si creó la cuenta anteriormente. Luego crea un nuevo canal con los siguientes detalles.

Paso 6: Código de puerta de enlace

#incluir

// Bibliotecas para LoRa #include #include // define los pines utilizados por el módulo transceptor LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 para Asia, 866E6 para Europa, 915E6 para Norteamérica // Reemplace con sus credenciales de red String apiKey = "14K8UL2QEK8BTHN6"; // Ingrese su clave de API de escritura de ThingSpeak const char * ssid = "Wifi SSID"; // reemplace con su wifi ssid y wpa2 key const char * password = "Password"; const char * server = "api.thingspeak.com"; Cliente WiFiClient; // Inicializar variables para obtener y guardar datos de LoRa int rssi; String loRaMessage; Temperatura de la cuerda; Humedad de cuerdas; String readingID; // Reemplaza el marcador de posición con valores DHT. Procesador de cadenas (const String & var) {//Serial.println(var); if (var == "TEMPERATURA") {temperatura de retorno; } else if (var == "HUMEDAD") {humedad de retorno; } else if (var == "RRSI") {return String (rssi); } return String (); } configuración vacía () {Serial.begin (115200); int contador; // configurar el módulo transceptor LoRa LoRa.setPins (ss, rst, dio0); // configura el módulo transceptor LoRa while (! LoRa.begin (BAND) && contador <10) {Serial.print ("."); contador ++; retraso (2000); } if (contador == 10) {// Incrementar readID en cada nueva lectura Serial.println ("¡El inicio de LoRa falló!"); } Serial.println ("¡Inicialización de LoRa OK!"); retraso (2000); // Conéctese a la red Wi-Fi con SSID y contraseña Serial.print ("Conectando a"); Serial.println (ssid); WiFi.begin (ssid, contraseña); while (WiFi.status ()! = WL_CONNECTED) {retraso (2000); Serial.print ("."); } // Imprime la dirección IP local e inicia el servidor web Serial.println (""); Serial.println ("WiFi conectado"); Serial.println ("dirección IP:"); Serial.println (WiFi.localIP ()); } // Leer el paquete LoRa y obtener las lecturas del sensor void loop () {int packetSize = LoRa.parsePacket (); if (packetSize) {Serial.print ("Paquete Lora recibido:"); while (LoRa.available ()) // Leer paquete {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); readID = LoRaData.substring (0, pos1); // Obtener la temperatura de readID = LoRaData.substring (pos1 +1, pos2); // Obtener la temperatura y la humedad = LoRaData.substring (pos2 + 1, LoRaData.length ()); // Obtener humedad} rssi = LoRa.packetRssi (); // Obtener RSSI Serial.print ("con RSSI"); Serial.println (rssi); } if (client.connect (server, 80)) // "184.106.153.149" o api.thingspeak.com {String postStr = apiKey; postStr + = "& campo1 ="; postStr + = String (readingID); postStr + = "& campo2 ="; postStr + = String (temperatura); postStr + = "& field3 ="; postStr + = String (humedad); postStr + = "& campo4 ="; postStr + = Cadena (rssi); postStr + = "\ r / n / r / n / r / n / r / n"; client.print ("POST / actualización HTTP / 1.1 / n"); client.print ("Host: api.thingspeak.com / n"); client.print ("Conexión: cerrar / n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Tipo de contenido: aplicación / x-www-form-urlencoded / n"); client.print ("Content-Length:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // retraso (30000); }

Paso 7: Código de nodo del sensor

#incluir

#include // Bibliotecas para LoRa #include "DHT.h" #define DHTPIN 4 // pin donde está conectado el dht11 DHT dht (DHTPIN, DHT11); // define los pines utilizados por el módulo transceptor LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 para Asia, 866E6 para Europa, 915E6 para Norteamérica // contador de paquetes int readingID = 0; int contador = 0; String LoRaMessage = ""; temperatura de flotación = 0; humedad de flotación = 0; // Inicializar el módulo LoRa void startLoRA () {LoRa.setPins (ss, rst, dio0); // configura el módulo transceptor LoRa while (! LoRa.begin (BAND) && contador <10) {Serial.print ("."); contador ++; retraso (500); } if (contador == 10) {// Incrementar readID en cada nueva lectura readID ++; Serial.println ("¡Error al iniciar LoRa!"); } Serial.println ("¡Inicialización de LoRa OK!"); retraso (2000); } void startDHT () {if (isnan (humedad) || isnan (temperatura)) {Serial.println ("¡No se pudo leer el sensor DHT!"); regreso; }} void getReadings () {humedad = dht.readHumidity (); temperatura = dht.readTemperature (); Serial.print (F ("Humedad:")); Serial.print (humedad); Serial.print (F ("% de temperatura:")); Serial.print (temperatura); Serial.println (F ("° C")); } void sendReadings () {LoRaMessage = String (ID de lectura) + "/" + String (temperatura) + "&" + String (humedad); // Envía el paquete LoRa al receptor LoRa.beginPacket (); LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("Enviando paquete:"); Serial.println (readingID); readingID ++; Serial.println (LoRaMessage); } void setup () {// inicializar Serial Monitor Serial.begin (115200); dht.begin (); startDHT (); startLoRA (); } bucle vacío () {getReadings (); sendReadings (); retraso (500); }

Paso 8: supervisar los datos en el servidor Thingspeak

Monitorear datos en Thingspeak Server
Monitorear datos en Thingspeak Server
Monitorear datos en Thingspeak Server
Monitorear datos en Thingspeak Server

Una vez que se carga el código, puede abrir el Monitor en serie en el circuito del nodo de la puerta de enlace y del sensor. Enviará y recibirá datos si el código es correcto. Ahora puede visitar la vista privada de Thingspeak. Allí puede ver que los datos para el número de paquete, la temperatura, la humedad y la puerta de enlace se cargan después del intervalo de 15 segundos.

Paso 9: referencias

1.

2.