Sisällysluettelo:

ESP32 Lora Thingspeak Gateway anturisolmulla: 9 vaihetta
ESP32 Lora Thingspeak Gateway anturisolmulla: 9 vaihetta

Video: ESP32 Lora Thingspeak Gateway anturisolmulla: 9 vaihetta

Video: ESP32 Lora Thingspeak Gateway anturisolmulla: 9 vaihetta
Video: ESP32 LoRaWAN Gateway tutorial with Sensor Node 2024, Marraskuu
Anonim
ESP32 Lora Thingspeak Gateway anturisolmulla
ESP32 Lora Thingspeak Gateway anturisolmulla

Tässä IoT -projektissa suunnittelin ESP32 LoRa Gatewayn ja myös ESP32 LoRa -anturisolmun seuraamaan anturin lukemaa langattomasti muutaman kilometrin etäisyydeltä. Lähettäjä lukee kosteus- ja lämpötilatiedot DHT11 -anturin avulla. Sitten se lähettää tiedot LoRa -radion kautta. Vastaanotinmoduuli vastaanottaa tiedot. Vastaanotin lähettää tiedot tietyn ajan kuluttua Thingspeak Serverille.

Vaihe 1: Tarvittavat komponentit

1. ESP32 -kortti - 2

2. Lora -moduuli SX1278/SX1276

3. DHT11 -kosteuslämpötila -anturi

4. Leipälauta

5. Hyppyjohtojen liittäminen

Vaihe 2: Tarvittavien kirjastojen asennus

Meidän on ensin asennettava erilaisia kirjastoja:

1. DHT11 -kirjasto

2. LoRa -kirjasto

Vaihe 3: ESP32 LoRa Thingspeak Gateway

ESP32 LoRa Thingspeak Gateway
ESP32 LoRa Thingspeak Gateway
ESP32 LoRa Thingspeak Gateway
ESP32 LoRa Thingspeak Gateway

Katsotaanpa nyt lähetin- ja vastaanotinpiiriä ESP32 LoRa -yhdyskäytävän ja anturisolmun rakentamiseksi. Kokosin molemmat piirilevyt leipälaudalle. Voit tehdä sen PCB: lle, jos haluat.

Tässä on ESP32 LoRa -moduuli SX1278 -yhdyskäytäväpiiri. Tämä osa toimii vastaanottimena. Kosteus- ja lämpötilatiedot vastaanotetaan LoRa -radion avulla ja ladataan Thingspeak -palvelimelle.

Vaihe 4: ESP32 LoRa -anturisolmu

ESP32 LoRa -anturisolmu
ESP32 LoRa -anturisolmu
ESP32 LoRa -anturisolmu
ESP32 LoRa -anturisolmu

Tässä on ESP32 LoRa -anturisolupiiri, jossa on DHT11 -anturi. Tämä osa toimii lähettimenä. Kosteus- ja lämpötilatiedot luetaan DHT11 -kosteuslämpötila -anturilla ja lähetetään LoRa -radion avulla.

Vaihe 5: Asetuspuheen määrittäminen

Thingspeakin käyttöönotto
Thingspeakin käyttöönotto

Jotta voit seurata Thingspeak -palvelimen anturitietoja, sinun on ensin määritettävä Thingspeak. Asenna Thingspeak -palvelin osoitteessa https://thingspeak.com/. Luo tili tai kirjaudu sisään, jos loit tilin aiemmin. Luo sitten uusi kanava, jossa on seuraavat tiedot.

Vaihe 6: Yhdyskäytäväkoodi

#sisältää

// LoRa -kirjastot #include #include // määrittele LoRa -lähetin -vastaanotinmoduulin käyttämät nastat #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 Aasiassa, 866E6 Euroopassa, 915E6 Pohjois -Amerikassa // Korvaa verkkotunnuksillasi String apiKey = "14K8UL2QEK8BTHN6"; // Kirjoita Write API -avaimesi ThingSpeakista const char *ssid = "Wifi SSID"; // korvaa wifi -palvelimellasi ja wpa2 -avaimellasi const char *password = "Password"; const char* palvelin = "api.thingspeak.com"; WiFiClient -asiakas; // Alusta muuttujat LoRa -tietojen hakemiseksi ja tallentamiseksi int rssi; Merkkijono loRaMessage; Merkkijonon lämpötila; String kosteus; Merkkijonon lukeminenID; // Korvaa paikkamerkin DHT -arvoilla String -prosessori (const String & var) {//Serial.println(var); if (var == "TEMPERATURE") {paluulämpötila; } else if (var == "KOSTEUS") {paluu kosteus; } else if (var == "RRSI") {return String (rssi); } palautusmerkkijono (); } void setup () {Serial.begin (115200); int laskuri; // LoRa -lähetinvastaanotinmoduulin asennus LoRa.setPins (ss, rst, dio0); // Asenna LoRa -lähetinvastaanotinmoduuli, kun (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); laskuri ++; viive (2000); } if (laskuri == 10) {// Lisää lukutunnusta jokaisella uudella Serial.println -lukemalla ("LoRan käynnistäminen epäonnistui!"); } Serial.println ("LoRan alustus OK!"); viive (2000); // Yhdistä Wi-Fi-verkkoon SSID: llä ja salasanalla Serial.print ("Yhdistäminen"); Sarja.println (ssid); WiFi.begin (ssid, salasana); while (WiFi.status ()! = WL_CONNECTED) {delay (2000); Serial.print ("."); } // Tulosta paikallinen IP -osoite ja käynnistä verkkopalvelin Serial.println (""); Serial.println ("WiFi kytketty."); Serial.println ("IP -osoite:"); Serial.println (WiFi.localIP ()); } // Lue LoRa -paketti ja hanki anturin lukemat void loop () {int packetSize = LoRa.parsePacket (); if (packetSize) {Serial.print ("Lora -paketti vastaanotettu:"); while (LoRa.available ()) // Lue paketti {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); readID = LoRaData.substring (0, pos1); // Hae lukuID lämpötila = LoRaData.substring (pos1 +1, pos2); // Hae lämpötila kosteus = LoRaData.substring (pos2+1, LoRaData.length ()); // Hanki kosteus} rssi = LoRa.packetRssi (); // Hae RSSI Serial.print ("RSSI: n kanssa"); Sarja.println (rssi); } if (client.connect (palvelin, 80)) // "184.106.153.149" tai api.thingspeak.com {String postStr = apiKey; postStr += "& field1 ="; postStr += Jono (lukuID); postStr += "& field2 ="; postStr += Merkkijono (lämpötila); postStr += "& field3 ="; postStr += Merkkijono (kosteus); postStr += "& field4 ="; postStr += Jono (rssi); postStr += "\ r / n / r / n / r / n / r / n"; client.print ("POST /päivitä HTTP /1.1 / n"); client.print ("Isäntä: api.thingspeak.com / n"); client.print ("Yhteys: sulje / 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); } // viive (30000); }

Vaihe 7: Anturisolmukoodi

#sisältää

#include // LoRa -kirjastot #include "DHT.h" #define DHTPIN 4 // pin, johon dht11 on kytketty DHT dht (DHTPIN, DHT11); // määrittele LoRa -lähetinvastaanotinmoduulin käyttämät nastat #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 Aasiassa, 866E6 Euroopassa, 915E6 Pohjois -Amerikassa // pakettilaskuri int readingID = 0; int laskuri = 0; Jono LoRaMessage = ""; kellukkeen lämpötila = 0; kellukkeen kosteus = 0; // Alusta LoRa -moduuli void startLoRA () {LoRa.setPins (ss, rst, dio0); // Asenna LoRa -lähetinvastaanotinmoduuli, kun (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); laskuri ++; viive (500); } if (laskuri == 10) {// Lisää lukutunnusta jokaisella uudella lukemalla ID ++; Serial.println ("LoRan käynnistys epäonnistui!"); } Serial.println ("LoRan alustus OK!"); viive (2000); } void startDHT () {if (isnan (kosteus) || isnan (lämpötila)) {Serial.println ("DHT -anturin lukeminen epäonnistui!"); palata; }} void getReadings () {kosteus = dht.readHumidity (); lämpötila = dht.readTemperature (); Serial.print (F ("Kosteus:")); Sarjajälki (kosteus); Sarjajälki (F ("% lämpötila:")); Sarjajälki (lämpötila); Sarja.println (F ("° C")); } void sendReadings () {LoRaMessage = Jono (lukuID) + "/" + Jono (lämpötila) + "&" + Jono (kosteus); // Lähetä LoRa -paketti vastaanottimelle LoRa.beginPacket (); LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("Lähetyspaketti:"); Serial.println (luku ID); lukuID ++; Serial.println (LoRaMessage); } void setup () {// alustaa Serial Monitor Serial.begin (115200); dht.begin (); startDHT (); startLoRA (); } void loop () {getReadings (); sendReadings (); viive (500); }

Vaihe 8: Tarkkaile Thingspeak -palvelimen tietoja

Seuraa tietoja Thingspeak -palvelimella
Seuraa tietoja Thingspeak -palvelimella
Seuraa tietoja Thingspeak -palvelimella
Seuraa tietoja Thingspeak -palvelimella

Kun koodi on ladattu, voit avata sarjamonitorin sekä yhdyskäytävän että anturisolmun piirissä. Lähetät ja vastaanotat tiedot, jos koodi on oikea. Nyt voit vierailla Thingspeakin yksityisessä näkymässä. Siellä näet paketin numeron, lämpötilan, kosteuden ja yhdyskäytävän tiedot 15 sekunnin kuluttua.

Vaihe 9: Viitteet

1.

2.

Suositeltava: