Taula de continguts:
- Pas 1: components necessaris
- Pas 2: Instal·lació de les biblioteques necessàries
- Pas 3: ESP32 LoRa Thingspeak Gateway
- Pas 4: Node del sensor ESP32 LoRa
- Pas 5: configurar Thingspeak
- Pas 6: Codi de passarel·la
- Pas 7: Codi del node del sensor
- Pas 8: supervisar les dades al servidor de Thingspeak
- Pas 9: referències
2025 Autora: John Day | [email protected]. Última modificació: 2025-01-13 06:57
en aquest projecte IoT, vaig dissenyar ESP32 LoRa Gateway i també ESP32 LoRa Sensor Node per controlar la lectura sense fils del sensor des de distàncies d’uns quants quilòmetres. L’emissor llegirà les dades d’humitat i temperatura mitjançant el sensor DHT11. A continuació, transmet les dades mitjançant LoRa Radio. Les dades les rep el mòdul receptor. Després, el receptor enviarà les dades al Thingspeak Server després d’un determinat interval.
Pas 1: components necessaris
1. Taula ESP32 - 2
2. Mòdul Lora SX1278 / SX1276
3. Sensor de temperatura d’humitat DHT11
4. Taula de pa
5. Connexió de cables de pont
Pas 2: Instal·lació de les biblioteques necessàries
Primer hem d’instal·lar diferents biblioteques:
1. Biblioteca DHT11
2. Biblioteca LoRa
Pas 3: ESP32 LoRa Thingspeak Gateway
Ara vegem el circuit emissor i receptor per a la construcció de la passarel·la ESP32 LoRa i el node de sensor. Vaig muntar el circuit en una taula de treball. Podeu fer-ho al PCB si voleu.
Aquí teniu un circuit de passarel·la ESP32 LoRa Module SX1278. Aquesta part funciona com un receptor. Les dades d’humitat i temperatura es reben mitjançant LoRa Radio i es carreguen a Thingspeak Server.
Pas 4: Node del sensor ESP32 LoRa
Aquí teniu un circuit de node de sensor ESP32 LoRa amb sensor DHT11. Aquesta part funciona com a transmissor. El sensor de temperatura d’humitat DHT11 llegeix les dades d’humitat i temperatura i es transmet mitjançant LoRa Radio.
Pas 5: configurar Thingspeak
Per supervisar les dades del sensor al servidor Thingspeak, primer heu de configurar Thingspeak. Per configurar el servidor de Thingspeak, visiteu https://thingspeak.com/. Creeu un compte o inicieu la sessió simplement si el heu creat anteriorment. A continuació, creeu un canal nou amb els detalls següents.
Pas 6: Codi de passarel·la
#incloure
// Biblioteques per LoRa #include #include // defineix els pins utilitzats pel mòdul transceptor LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 per a Àsia, 866E6 per a Europa, 915E6 per a Amèrica del Nord // Substitueix les credencials de xarxa String apiKey = "14K8UL2QEK8BTHN6"; // Introduïu la vostra clau API d'escriptura des de ThingSpeak const char * ssid = "SSID Wifi"; // substituïu per la vostra clau ssid wifi i wpa2 const char * password = "Contrasenya"; const char * server = "api.thingspeak.com"; Client WiFiClient; // Inicialitzar variables per obtenir i desar dades LoRa en rssi; String loRaMessage; Temperatura de la corda; Humitat de la corda; ID de lectura de cadenes; // Substitueix l'espai reservat per valors DHT Processador de cadena (const String & var) {//Serial.println(var); if (var == "TEMPERATURA") {temperatura de retorn; } else if (var == "HUMITAT") {tornar la humitat; } else if (var == "RRSI") {return String (rssi); } return String (); } void setup () {Serial.begin (115200); int comptador; // setup LoRa transceiver module LoRa.setPins (ss, rst, dio0); // configureu el mòdul transceptor LoRa mentre (! LoRa.begin (BAND) && comptador <10) {Serial.print ("."); comptador ++; endarreriment (2000); } if (comptador == 10) {// Incrementa ID de lectura en cada nova lectura Serial.println ("S'ha produït un error en iniciar LoRa!"); } Serial.println ("La inicialització LoRa està bé!"); endarreriment (2000); // Connecteu-vos a la xarxa Wi-Fi amb SSID i contrasenya Serial.print ("Connexió a"); Serial.println (ssid); WiFi.begin (ssid, contrasenya); while (WiFi.status ()! = WL_CONNECTED) {delay (2000); Serial.print ("."); } // Imprimiu l'adreça IP local i inicieu el servidor web Serial.println (""); Serial.println ("WiFi connectat"); Serial.println ("adreça IP:"); Serial.println (WiFi.localIP ()); } // Llegiu el paquet LoRa i obteniu les lectures del sensor bucle buit () {int packetSize = LoRa.parsePacket (); if (packetSize) {Serial.print ("Paquet Lora rebut:"); while (LoRa.available ()) // Paquet de lectura {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); readingID = LoRaData.substring (0, pos1); // Obtén lecturaID temperatura = LoRaData.substring (pos1 +1, pos2); // Obtenir temperatura humitat = LoRaData.substring (pos2 + 1, LoRaData.length ()); // Obtenir humitat} rssi = LoRa.packetRssi (); // Obteniu RSSI Serial.print ("amb RSSI"); Serial.println (rssi); } if (client.connect (servidor, 80)) // "184.106.153.149" o api.thingspeak.com {String postStr = apiKey; postStr + = "& field1 ="; postStr + = Cadena (ID de lectura); postStr + = "& field2 ="; postStr + = String (temperatura); postStr + = "& field3 ="; postStr + = String (humitat); postStr + = "& field4 ="; postStr + = String (rssi); postStr + = "\ r / n / r / n / r / n / r / n"; client.print ("POST / actualització HTTP / 1.1 / n"); client.print ("Amfitrió: api.thingspeak.com / n"); client.print ("Connexió: tancar / n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Tipus de contingut: application / x-www-form-urlencoded / n"); client.print ("Longitud del contingut:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // demora (30000); }
Pas 7: Codi del node del sensor
#incloure
#include // Biblioteques per LoRa #include "DHT.h" #define DHTPIN 4 // pin on està connectat el dht11 DHT dht (DHTPIN, DHT11); // defineix els pins que utilitza el mòdul transceptor LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 per a Àsia, 866E6 per a Europa, 915E6 per a Amèrica del Nord // comptador de paquets int readingID = 0; int comptador = 0; String LoRaMessage = ""; temperatura de flotació = 0; humitat flotant = 0; // Inicialitzar el mòdul LoRa void startLoRA () {LoRa.setPins (ss, rst, dio0); // configureu el mòdul transceptor LoRa mentre (! LoRa.begin (BAND) && comptador <10) {Serial.print ("."); comptador ++; retard (500); } if (comptador == 10) {// Incrementa ID de lectura en cada lectura nova ID de lectura ++; Serial.println ("S'ha produït un error en iniciar LoRa!"); } Serial.println ("La inicialització LoRa està bé!"); endarreriment (2000); } void startDHT () {if (isnan (humitat) || isnan (temperatura)) {Serial.println ("No s'ha pogut llegir del sensor DHT!"); tornar; }} void getReadings () {humitat = dht.readHumidity (); temperatura = dht.readTemperature (); Serial.print (F ("Humitat:")); Serial.print (humitat); Serial.print (F ("% Temperatura:")); Serial.print (temperatura); Serial.println (F ("° C")); } void sendReadings () {LoRaMessage = Cadena (ID de lectura) + "/" + Cadena (temperatura) + "&" + Cadena (humitat); // Enviar paquet LoRa al receptor LoRa.beginPacket (); LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("Enviant paquet:"); Serial.println (readingID); readingID ++; Serial.println (LoRaMessage); } void setup () {// inicialitzar Serial Monitor Serial.begin (115200); dht.begin (); startDHT (); startLoRA (); } void loop () {getReadings (); sendReadings (); retard (500); }
Pas 8: supervisar les dades al servidor de Thingspeak
Un cop carregat el codi, podeu obrir el monitor de sèrie tant al circuit de la passarel·la com del node del sensor. Enviareu i rebreu dades si el codi és correcte. Ara podeu visitar Thingspeak Private View. Allà podeu veure les dades del número de paquets, temperatura, humitat i passarel·la que es carreguen després de l’interval de 15 segons.
Pas 9: referències
1.
2.