
Tabla de contenido:
- Paso 1: componentes necesarios
- Paso 2: instalar las bibliotecas necesarias
- Paso 3: ESP32 LoRa Thingspeak Gateway
- Paso 4: Nodo del sensor ESP32 LoRa
- Paso 5: Configurar Thingspeak
- Paso 6: Código de puerta de enlace
- Paso 7: Código de nodo del sensor
- Paso 8: supervisar los datos en el servidor Thingspeak
- Paso 9: referencias
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-23 14:39

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


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


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

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


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.
Recomendado:
Cómo convertir su Raspberry Pi en una puerta de enlace de acceso remoto: 6 pasos

Cómo convertir su Raspberry Pi en una puerta de enlace de acceso remoto: ¡Hola, chicos! A la luz de los acontecimientos recientes, nuestro equipo en remote.it ha estado trabajando arduamente en una lluvia de ideas para hacer que el trabajo remoto sea fácil y accesible. Hemos creado la imagen de la tarjeta SD remote.itPi, que es una tarjeta SD que puedes colocar en una nueva
¿Cómo hacer su propia puerta de enlace WIFI para conectar su Arduino a la red IP?: 11 pasos (con imágenes)

¿Cómo hacer tu propia puerta de enlace WIFI para conectar tu Arduino a la red IP?: Como mucha gente, ¡crees que Arduino es una muy buena solución para hacer domótica y robótica! Pero en términos de comunicación, los Arduino solo vienen con enlaces seriales. Estoy trabajando en un robot que necesita estar conectado permanentemente con un servidor que ejecuta ar
Puerta de enlace serial UDP / IP para Arduino basada en ESP8266 Shield: 8 pasos

Puerta de enlace serial UDP / IP para Arduino basada en ESP8266 Shield: ya publiqué en 2016 este instructivo " Cómo hacer su propia puerta de enlace Wifi para conectar su Arduino a la red IP ". Dado que hice algunas mejoras en el código y todavía estoy usando esta solución. Sin embargo, ahora hay algunos escudos ESP8266 t
Coche IoT RC con lámpara inteligente remota o puerta de enlace: 8 pasos (con imágenes)

Coche IoT RC con Smart Lamp Remote o Gateway: para un proyecto no relacionado, había estado escribiendo un código Arduino para hablar con las lámparas inteligentes MiLight y los controles remotos de lámparas que tengo en mi hogar. Decidí hacer un pequeño auto RC para probar
Módulo de puerta de enlace Bluetooth para radios bidireccionales: 3 pasos (con imágenes)

Módulo de puerta de enlace Bluetooth para radios de 2 vías: Adaptador de puerta de enlace Bluetooth para radios de 2 vías ¿Alguna vez ha querido tener un auricular inalámbrico para usar con su equipo de radioaficionado? Esto se puede realizar muy bien con un auricular Bluetooth que tenga un micrófono decente y una radio que admita Bluetooth. Hay radios más nuevas