
Sommario:
- Passaggio 1: componenti necessari
- Passaggio 2: installazione delle librerie richieste
- Passaggio 3: gateway ESP32 LoRa Thingspeak
- Passaggio 4: Nodo del sensore LoRa ESP32
- Passaggio 5: configurazione di Thingspeak
- Passaggio 6: codice gateway
- Passaggio 7: codice del nodo del sensore
- Passaggio 8: monitorare i dati su Thingspeak Server
- Passaggio 9: riferimenti
2025 Autore: John Day | [email protected]. Ultima modifica: 2025-01-23 14:49

in questo progetto IoT, ho progettato ESP32 LoRa Gateway e anche ESP32 LoRa Sensor Node per monitorare la lettura del sensore in modalità wireless da una distanza di pochi chilometri. Il mittente leggerà i dati di umidità e temperatura utilizzando il sensore DHT11. Quindi trasmette i dati tramite LoRa Radio. I dati vengono ricevuti dal modulo ricevitore. Il ricevitore invierà quindi i dati a Thingspeak Server dopo un certo intervallo.
Passaggio 1: componenti necessari
1. Scheda ESP32 - 2
2. Modulo Lora SX1278/SX1276
3. Sensore di temperatura dell'umidità DHT11
4. Tagliere
5. Collegamento dei cavi dei ponticelli
Passaggio 2: installazione delle librerie richieste
Dobbiamo prima installare diverse librerie:
1. Libreria DHT11
2. Libreria LoRa
Passaggio 3: gateway ESP32 LoRa Thingspeak


Ora vediamo il circuito del mittente e del ricevitore per la creazione di ESP32 LoRa Gateway & Sensor Node. Ho montato entrambi i circuiti su una breadboard. Puoi farlo su PCB se vuoi.
Ecco un circuito gateway ESP32 LoRa Module SX1278. Questa parte funziona come un ricevitore. I dati di umidità e temperatura vengono ricevuti utilizzando LoRa Radio e caricati su Thingspeak Server.
Passaggio 4: Nodo del sensore LoRa ESP32


Ecco un circuito del nodo del sensore LoRa ESP32 con sensore DHT11. Questa parte funziona come un trasmettitore. I dati di umidità e temperatura vengono letti dal sensore di temperatura dell'umidità DHT11 e trasmessi tramite LoRa Radio.
Passaggio 5: configurazione di Thingspeak

Per monitorare i dati del sensore su Thingspeak Server, devi prima configurare Thingspeak. Per configurare il server Thingspeak, visitare https://thingspeak.com/. Crea un account o semplicemente accedi se hai creato l'account in precedenza. Quindi crea un nuovo canale con i seguenti dettagli.
Passaggio 6: codice gateway
#includere
//Librerie per LoRa #include #include //definisce i pin utilizzati dal modulo ricetrasmettitore LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 //433E6 per l'Asia, 866E6 per l'Europa, 915E6 per il Nord America // Sostituisci con le tue credenziali di rete String apiKey = "14K8UL2QEK8BTHN6"; // Inserisci la tua chiave API di scrittura da ThingSpeak const char *ssid = "Wifi SSID"; // sostituisci con il tuo ssid wifi e la chiave wpa2 const char *password = "Password"; const char* server = "api.thingspeak.com"; client WiFi Client; // Inizializza le variabili per ottenere e salvare i dati LoRa int rssi; String loRaMessage; Temperatura della stringa; Umidità della stringa; ID lettura stringa; // Sostituisce il segnaposto con i valori DHT String processor(const String& var){ //Serial.println(var); if(var == "TEMPERATURA") { temperatura di ritorno; } else if(var == "UMIDITÀ") { restituisce l'umidità; } else if (var == "RRSI") { return String(rssi); } return String(); } void setup() { Serial.begin(115200); contatore int; //configura il modulo ricetrasmettitore LoRa LoRa.setPins(ss, rst, dio0); //imposta il modulo ricetrasmettitore LoRa while (!LoRa.begin(BAND) && counter < 10) { Serial.print("."); contatore++; ritardo (2000); } if (counter == 10) { // Incrementa readingID ad ogni nuova lettura Serial.println("Avvio LoRa fallito!"); } Serial.println("Inizializzazione LoRa OK!"); ritardo (2000); // Connettiti alla rete Wi-Fi con SSID e password Serial.print("Connessione a"); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { ritardo(2000); Serial.print("."); } // Stampa l'indirizzo IP locale e avvia il server web Serial.println(""); Serial.println("WiFi connesso."); Serial.println("Indirizzo IP: "); Serial.println(WiFi.localIP()); } // Legge il pacchetto LoRa e ottiene le letture del sensore void loop() { int packetSize = LoRa.parsePacket(); if (packetSize) { Serial.print("Lora pacchetto ricevuto: "); while (LoRa.available()) // Leggi pacchetto { String LoRaData = LoRa.readString(); Serial.print(LoRaData); int pos1 = LoRaData.indexOf('/'); int pos2 = LoRaData.indexOf('&'); readingID = LoRaData.substring(0, pos1); // Ottieni readingID temperature = LoRaData.substring(pos1 +1, pos2); // Ottieni l'umidità della temperatura = LoRaData.substring(pos2+1, LoRaData.length()); // Ottieni l'umidità } rssi = LoRa.packetRssi(); // Ottieni RSSI Serial.print(" with RSSI "); Serial.println(rssi); } if (client.connect(server, 80)) // "184.106.153.149" o api.thingspeak.com { String postStr = apiKey; postStr += "&field1="; postStr += String (ID lettura); postStr += "&field2="; postStr += String(temperatura); postStr += "&field3="; postStr += String(umidità); postStr += "&field4="; postStr += String(rssi); postStr += "\r\n\r\n\r\n\r\n"; client.print("POST /update HTTP/1.1\n"); client.print("Host: api.thingspeak.com\n"); client.print("Connessione: chiudi\n"); client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n"); client.print("Content-Type: application/x-www-form-urlencoded\n"); client.print("Lunghezza contenuto: "); client.print(postStr.length()); client.print("\n\n"); client.print(postStr); } //ritardo(30000); }
Passaggio 7: codice del nodo del sensore
#includere
#include //Librerie per LoRa #include "DHT.h" #define DHTPIN 4 //pin dove è connesso il dht11 DHT dht(DHTPIN, DHT11); //definire i pin utilizzati dal modulo ricetrasmettitore LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 //433E6 per l'Asia, 866E6 per l'Europa, 915E6 per il Nord America //packet counter int readingID = 0; contatore int = 0; String LoRaMessage = ""; temperatura galleggiante = 0; umidità galleggiante = 0; //Inizializza il modulo LoRa void startLoRA() { LoRa.setPins(ss, rst, dio0); //imposta il modulo ricetrasmettitore LoRa while (!LoRa.begin(BAND) && counter < 10) { Serial.print("."); contatore++; ritardo (500); } if (counter == 10) { // Incrementa readingID su ogni nuova lettura readingID++; Serial.println("Avvio di LoRa fallito!"); } Serial.println("Inizializzazione LoRa OK!"); ritardo (2000); } void startDHT() { if (isnan(umidità) || isnan(temperatura)) { Serial.println("Impossibile leggere dal sensore DHT!"); Restituzione; } } void getReadings(){ umidità = dht.readHumidity(); temperatura = dht.readTemperature(); Serial.print(F("Umidità: ")); Serial.print(umidità); Serial.print(F("% Temperatura: ")); Serial.print(temperatura); Serial.println(F("°C ")); } void sendReadings() { LoRaMessage = String(readingID) + "/" + String(temperatura) + "&" + String(umidità); //Invia il pacchetto LoRa al destinatario LoRa.beginPacket(); LoRa.print(LoRaMessage); LoRa.endPacket(); Serial.print("Invio pacchetto: "); Serial.println(readingID); ID lettura++; Serial.println(LoRaMessage); } void setup() { //inizializza Serial Monitor Serial.begin(115200); dht.begin(); inizioDHT(); startLoRA(); } void loop() { getReadings(); sendReading(); ritardo (500); }
Passaggio 8: monitorare i dati su Thingspeak Server


Una volta caricato il codice, è possibile aprire il monitor seriale sia sul gateway che sul circuito del nodo del sensore. I dati verranno inviati e ricevuti se il codice è corretto. Ora puoi visitare la vista privata di Thingspeak. Lì puoi vedere i dati per il numero di pacchetto, la temperatura, l'umidità e il gateway vengono caricati dopo l'intervallo di 15 secondi.
Passaggio 9: riferimenti
1.
2.
Consigliato:
Sensore del respiro fai-da-te con Arduino (sensore elastico conduttivo a maglia): 7 passaggi (con immagini)

Sensore del respiro fai-da-te con Arduino (sensore elastico a maglia conduttiva): questo sensore fai-da-te assumerà la forma di un sensore elastico a maglia conduttiva. Si avvolgerà attorno al tuo torace/stomaco e quando il tuo torace/stomaco si espande e si contrae, anche il sensore e, di conseguenza, i dati di input che vengono inviati ad Arduino. Così
Lora Gateway basato su MicroPython ESP32: 10 passaggi (con immagini)

Lora Gateway Basato su MicroPython ESP32: Lora è stata molto popolare negli ultimi anni. Il modulo di comunicazione wireless che utilizza questa tecnologia è generalmente economico (utilizzando lo spettro libero), di piccole dimensioni, efficiente dal punto di vista energetico e ha una lunga distanza di comunicazione ed è principalmente utilizzato per la comunicazione reciproca
Nodo-RED con sensore di vibrazione e temperatura a lungo raggio IoT: 34 passaggi

Node-RED con sensore di temperatura e vibrazioni a lungo raggio IoT: introduzione del sensore di umidità e temperatura wireless a lungo raggio di NCD, che vanta una portata fino a 28 miglia utilizzando un'architettura di rete mesh wireless. Incorporando il sensore di umidità della temperatura Honeywell HIH9130 trasmette la temperatura ad alta precisione e
Sensore di temperatura e umidità wireless a lungo raggio IOT con nodo rosso: 27 passaggi

Sensore di temperatura e umidità wireless a lungo raggio IOT con Node-Red: Presentazione del sensore di temperatura e umidità wireless a lungo raggio di NCD, che vanta una portata fino a 28 miglia utilizzando un'architettura di rete mesh wireless. Incorporando il sensore di temperatura-umidità Honeywell HIH9130, trasmette la temperatura ad alta precisione e
IOT123 - ASSIMILAZIONE HUB SENSORE: ICOS10 3V3 NODO MQTT: 6 passaggi

IOT123 - ASSIMILATE SENSOR HUB: ICOS10 3V3 MQTT NODE: Questo è il primo di una varietà di combinazioni MCU/Feature negli ASSIMILATE SENSOR HUB: i master che raccolgono i dump dei dati dagli slave I2C ASSIMILATE SENSORS. Questa build utilizza un Wemos D1 Mini, per pubblicare tutti i dati scaricati da ASSIMILA