Sadržaj:
- Korak 1: Potrebne komponente
- Korak 2: Instaliranje potrebnih biblioteka
- Korak 3: ESP32 LoRa Thingspeak pristupnik
- Korak 4: ESP32 LoRa senzorski čvor
- Korak 5: Postavljanje Thingspeak -a
- Korak 6: Kôd mrežnog prolaza
- Korak 7: Kod čvora senzora
- Korak 8: Nadgledajte podatke na serveru Thingspeak
- Korak 9: Reference
Video: ESP32 Lora Thingspeak pristupnik sa čvorom senzora: 9 koraka
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
u ovom IoT projektu dizajnirao sam ESP32 LoRa pristupnik i ESP32 LoRa senzorski čvor za bežično praćenje očitavanja senzora s udaljenosti od nekoliko kilometara. Pošiljatelj će čitati podatke o vlažnosti i temperaturi pomoću DHT11 senzora. Zatim prenosi podatke putem LoRa radija. Prijemni modul prima podatke. Primalac će nakon određenog intervala poslati podatke na Thingspeak Server.
Korak 1: Potrebne komponente
1. ESP32 ploča - 2
2. Lora modul SX1278/SX1276
3. DHT11 Senzor temperature vlage
4. Oglasna ploča
5. Spajanje žica kratkospojnika
Korak 2: Instaliranje potrebnih biblioteka
Prvo moramo instalirati različite biblioteke:
1. Biblioteka DHT11
2. LoRa biblioteka
Korak 3: ESP32 LoRa Thingspeak pristupnik
Pogledajmo sada krug pošiljatelja i primatelja za izgradnju ESP32 LoRa pristupnika i čvora senzora. Sastavio sam oba kruga na ploči. Ako želite, možete ga napraviti i na štampanoj ploči.
Ovdje je krug pristupnika ESP32 LoRa modula SX1278. Ovaj dio radi kao prijemnik. Podaci o vlažnosti i temperaturi primaju se pomoću LoRa radija i učitavaju se na Thingspeak server.
Korak 4: ESP32 LoRa senzorski čvor
Ovdje je krug čvora senzora ESP32 LoRa sa senzorom DHT11. Ovaj dio radi kao odašiljač. Podaci o vlažnosti i temperaturi očitavaju se pomoću DHT11 senzora temperature vlažnosti i prenose se pomoću LoRa radija.
Korak 5: Postavljanje Thingspeak -a
Da biste pratili podatke senzora na Thingspeak serveru, prvo morate postaviti Thingspeak. Za postavljanje Thingspeak servera posjetite https://thingspeak.com/. Napravite račun ili se jednostavno prijavite ako ste račun kreirali ranije. Zatim kreirajte novi kanal sa sljedećim detaljima.
Korak 6: Kôd mrežnog prolaza
#include
// Knjižnice za LoRa #include #include // definirajte pinove koje koristi LoRa primopredajnički modul #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 za Aziju, 866E6 za Europu, 915E6 za Sjevernu Ameriku // Zamijenite svojim mrežnim vjerodajnicama String apiKey = "14K8UL2QEK8BTHN6"; // Unesite svoj API API ključ iz ThingSpeak const char *ssid = "Wifi SSID"; // zamijenite svojim wifi ssid i wpa2 ključem const char *password = "Lozinka"; const char* server = "api.thingspeak.com"; WiFiClient klijent; // Pokretanje varijabli za dobivanje i spremanje LoRa podataka int rssi; String loRaMessage; Temperatura žice; Vlažnost žica; String readingID; // Zamjenjuje rezervirano mjesto DHT vrijednostima String procesor (const String & var) {//Serial.println(var); if (var == "TEMPERATURE") {temperatura povrata; } else if (var == "HUMIDITY") {povratna vlaga; } else if (var == "RRSI") {return String (rssi); } return String (); } void setup () {Serial.begin (115200); int counter; // postavljanje LoRa primopredajnika LoRa.setPins (ss, rst, dio0); // postavljanje LoRa primopredajnika dok (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); counter ++; kašnjenje (2000); } if (counter == 10) {// Povećati ID čitanja pri svakom novom čitanju Serial.println ("Pokretanje LoRa nije uspjelo!"); } Serial.println ("LoRa inicijalizacija u redu!"); kašnjenje (2000); // Povezivanje na Wi-Fi mrežu sa SSID-om i lozinkom Serial.print ("Povezivanje na"); Serial.println (ssid); WiFi.begin (ssid, lozinka); while (WiFi.status ()! = WL_CONNECTED) {odgoda (2000); Serial.print ("."); } // Odštampajte lokalnu IP adresu i pokrenite web server Serial.println (""); Serial.println ("WiFi povezan."); Serial.println ("IP adresa:"); Serial.println (WiFi.localIP ()); } // Pročitajte LoRa paket i dobijte očitanja senzora void loop () {int packetSize = LoRa.parsePacket (); if (packetSize) {Serial.print ("Lora paket primljen:"); while (LoRa.available ()) // Čitanje paketa {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); readID = LoRaData.substring (0, pos1); // Dobivanje temperature čitanja ID = LoRaData.substring (poz1 +1, pos2); // Dobivanje temperaturne vlažnosti = LoRaData.substring (pos2+1, LoRaData.length ()); // Dobivanje vlažnosti} rssi = LoRa.packetRssi (); // Nabavite RSSI Serial.print ("sa RSSI"); Serial.println (rssi); } if (client.connect (server, 80)) // "184.106.153.149" ili api.thingspeak.com {String postStr = apiKey; postStr += "& polje1 ="; postStr += String (ID čitanja); postStr += "& polje2 ="; postStr += String (temperatura); postStr += "& polje3 ="; postStr += String (vlažnost); postStr += "& field4 ="; postStr += String (rssi); postStr += "\ r / n / r / n / r / n / r / n"; client.print ("POST /ažuriraj HTTP /1.1 / n"); client.print ("Domaćin: api.thingspeak.com / n"); client.print ("Veza: zatvori / n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Content-Type: application/x-www-form-urlencoded / n"); client.print ("Content-Length:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // kašnjenje (30000); }
Korak 7: Kod čvora senzora
#include
#include // Knjižnice za LoRa #include "DHT.h" #define DHTPIN 4 // pin gdje je dht11 spojen DHT dht (DHTPIN, DHT11); // definiramo pinove koje koristi modul primopredajnika LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 za Aziju, 866E6 za Evropu, 915E6 za Sjevernu Ameriku // brojač paketa int readingID = 0; int brojač = 0; String LoRaMessage = ""; temperatura plovka = 0; vlažnost plovka = 0; // Inicijalizacija LoRa modula void startLoRA () {LoRa.setPins (ss, rst, dio0); // postavljanje LoRa primopredajnika dok (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); counter ++; kašnjenje (500); } if (counter == 10) {// Povećati readID za svako novo čitanje readID ++; Serial.println ("Pokretanje LoRa nije uspjelo!"); } Serial.println ("LoRa inicijalizacija u redu!"); kašnjenje (2000); } void startDHT () {if (isnan (vlažnost) || isnan (temperatura)) {Serial.println ("Očitavanje nije uspjelo sa DHT senzora!"); return; }} void getReadings () {vlažnost = dht.readHumidity (); temperatura = dht.readTemperature (); Serial.print (F ("Vlažnost:")); Serial.print (vlažnost); Serial.print (F ("% Temperatura:")); Serial.print (temperatura); Serial.println (F ("° C")); } void sendReadings () {LoRaMessage = String (readID) + "/" + String (temperatura) + "&" + String (vlažnost); // Slanje LoRa paketa primatelju LoRa.beginPacket (); LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("Slanje paketa:"); Serial.println (readID); readID ++; Serial.println (LoRaMessage); } void setup () {// inicijalizirati Serial Monitor Serial.begin (115200); dht.begin (); startDHT (); startLoRA (); } void loop () {getReadings (); sendReadings (); kašnjenje (500); }
Korak 8: Nadgledajte podatke na serveru Thingspeak
Nakon što se kôd otpremi, možete otvoriti serijski monitor na oba kola pristupnog i senzorskog čvora. Podatke ćete slati i primati ako je kôd tačan. Sada možete posjetiti Thingspeak Private View. Tamo možete vidjeti podatke za broj paketa, temperaturu, vlažnost i pristupnik koji se učitavaju nakon intervala od 15 sekundi.
Korak 9: Reference
1.
2.