Taula de continguts:

ESP32 Lora Thingspeak Gateway amb node de sensor: 9 passos
ESP32 Lora Thingspeak Gateway amb node de sensor: 9 passos

Vídeo: ESP32 Lora Thingspeak Gateway amb node de sensor: 9 passos

Vídeo: ESP32 Lora Thingspeak Gateway amb node de sensor: 9 passos
Vídeo: LoRa/LoRaWAN tutorial 26: Sending Sensor Data To The Things Network 2024, Desembre
Anonim
ESP32 Lora Thingspeak Gateway amb node de sensor
ESP32 Lora Thingspeak Gateway amb node de sensor

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

ESP32 LoRa Thingspeak Gateway
ESP32 LoRa Thingspeak Gateway
ESP32 LoRa Thingspeak Gateway
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

Node del sensor ESP32 LoRa
Node del sensor ESP32 LoRa
Node sensor ESP32 LoRa
Node 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

Configuració de Thingspeak
Configuració de 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

Superviseu les dades al servidor de Thingspeak
Superviseu les dades al servidor de Thingspeak
Superviseu les dades al servidor de Thingspeak
Superviseu 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.

Recomanat: