Obsah:
Video: Brána ESP32 Lora Thingspeak s uzlem senzoru: 9 kroků
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
v tomto projektu IoT jsem navrhl ESP32 LoRa Gateway a také ESP32 LoRa Sensor Node pro bezdrátové monitorování odečtu senzorů ze vzdálenosti několika kilometrů. Odesílatel bude číst údaje o vlhkosti a teplotě pomocí snímače DHT11. Poté přenáší data prostřednictvím rádia LoRa. Data jsou přijímána přijímacím modulem. Přijímač poté odešle data na server Thingspeak po určitém intervalu.
Krok 1: Požadované součásti
1. Deska ESP32 - 2
2. Modul Lora SX1278/SX1276
3. Čidlo teploty vlhkosti DHT11
4. Breadboard
5. Připojení propojovacích vodičů
Krok 2: Instalace požadovaných knihoven
Nejprve musíme nainstalovat různé knihovny:
1. Knihovna DHT11
2. Knihovna LoRa
Krok 3: Brána ESP32 LoRa Thingspeak
Nyní se podívejme na obvod vysílače a přijímače pro stavbu brány a senzoru ESP32 LoRa. Sestavil jsem oba obvody na prkénko. Pokud chcete, můžete to udělat na PCB.
Zde je obvod brány ESP32 LoRa Module SX1278. Tato část funguje jako přijímač. Údaje o vlhkosti a teplotě jsou přijímány pomocí LoRa Radio a nahrávány na server Thingspeak.
Krok 4: Senzorový uzel ESP32 LoRa
Zde je obvod uzlu snímače ESP32 LoRa se snímačem DHT11. Tato část funguje jako vysílač. Údaje o vlhkosti a teplotě jsou snímány snímačem vlhkosti DHT11 a přenášeny pomocí rádia LoRa.
Krok 5: Nastavení Thingspeak
Abyste mohli sledovat data senzorů na serveru Thingspeak, musíte nejprve nastavit Thingspeak. Chcete -li nastavit server Thingspeak, navštivte https://thingspeak.com/. Pokud jste si účet vytvořili dříve, vytvořte si účet nebo se jednoduše přihlaste. Poté vytvořte nový kanál s následujícími detaily.
Krok 6: Kód brány
#zahrnout
// Knihovny pro LoRa #include #include // definují piny používané modulem transceiveru LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 pro Asii, 866E6 pro Evropu, 915E6 pro Severní Ameriku // Nahradit síťovými údaji Řetězec apiKey = "14K8UL2QEK8BTHN6"; // Zadejte svůj klíč API pro zápis z ThingSpeak const char *ssid = "Wifi SSID"; // nahraďte klíčem wifi ssid a wpa2 const char *heslo = "heslo"; const char* server = "api.thingspeak.com"; Klient WiFiClient; // Inicializace proměnných pro získání a uložení dat LoRa int rssi; Řetězec loRaMessage; Teplota řetězce; Vlhkost strun; String readingID; // Nahradí zástupný symbol hodnotami DHT Řetězec procesor (const Řetězec & var) {//Serial.println(var); if (var == "TEPLOTA") {teplota zpátečky; } else if (var == "HUMIDITY") {zpětná vlhkost; } else if (var == "RRSI") {return String (rssi); } return String (); } neplatné nastavení () {Serial.begin (115200); int počítadlo; // nastavení modulu LoRa transceiveru LoRa.setPins (ss, rst, dio0); // nastavení transceiverového modulu LoRa while (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); čítač ++; zpoždění (2000); } if (counter == 10) {// Zvýšení ID čtení při každém novém čtení Serial.println („Start LoRa failed!“); } Serial.println ("Inicializace LoRa v pořádku!"); zpoždění (2000); // Připojení k síti Wi-Fi pomocí SSID a hesla Serial.print („Připojování k“); Serial.println (ssid); WiFi.begin (ssid, heslo); while (WiFi.status ()! = WL_CONNECTED) {zpoždění (2000); Serial.print ("."); } // Vytiskněte místní IP adresu a spusťte webový server Serial.println (""); Serial.println („WiFi připojeno.“); Serial.println ("IP adresa:"); Serial.println (WiFi.localIP ()); } // Přečíst paket LoRa a získat hodnoty ze senzorů void loop () {int packetSize = LoRa.parsePacket (); if (packetSize) {Serial.print ("Lora packet prijat:"); while (LoRa.available ()) // Přečíst paket {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); readingID = LoRaData.substring (0, pos1); // Získat teplotu čtení ID = LoRaData.substring (poz1 +1, pos2); // Získat teplotní vlhkost = LoRaData.substring (pos2+1, LoRaData.length ()); // Získejte vlhkost} rssi = LoRa.packetRssi (); // Získejte RSSI Serial.print ("s RSSI"); Serial.println (rssi); } if (client.connect (server, 80)) // "184.106.153.149" nebo api.thingspeak.com {String postStr = apiKey; postStr += "& field1 ="; postStr += String (ID čtení); postStr += "& field2 ="; postStr += řetězec (teplota); postStr += "& field3 ="; postStr += String (vlhkost); postStr += "& field4 ="; postStr += String (rssi); postStr += "\ r / n / r / n / r / n / r / n"; client.print ("POST /aktualizace HTTP /1.1 / n"); client.print ("Host: api.thingspeak.com / n"); client.print ("Připojení: zavřít / n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Content-Type: application/x-www-form-urlencoded / n"); client.print ("Délka obsahu:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // zpoždění (30 000); }
Krok 7: Kód uzlu senzoru
#zahrnout
#include // Knihovny pro LoRa #include "DHT.h" #define DHTPIN 4 // pin, kde je připojen dht11 DHT dht (DHTPIN, DHT11); // definujte piny používané modulem transceiveru LoRa #define ss 5 #defst rst 14 #define dio0 2 #define BAND 433E6 // 433E6 pro Asii, 866E6 pro Evropu, 915E6 pro Severní Ameriku // čítač paketů int čteníID = 0; int čítač = 0; Řetězec LoRaMessage = ""; plovoucí teplota = 0; plovoucí vlhkost = 0; // Inicializace modulu LoRa neplatí startLoRA () {LoRa.setPins (ss, rst, dio0); // nastavení transceiverového modulu LoRa while (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); čítač ++; zpoždění (500); } if (counter == 10) {// Zvýšení ID čtení při každém novém čtení ID čtení ++; Serial.println („Spuštění LoRa se nezdařilo!“); } Serial.println („Inicializace LoRa v pořádku!“); zpoždění (2000); } neplatné startDHT () {if (isnan (vlhkost) || isnan (teplota)) {Serial.println ("Selhalo čtení ze snímače DHT!"); vrátit se; }} neplatné getReadings () {vlhkost = dht.readHumidity (); teplota = dht.readTemperature (); Serial.print (F ("Vlhkost:")); Sériový tisk (vlhkost); Serial.print (F ("% Teplota:")); Sériový tisk (teplota); Serial.println (F ("° C")); } void sendReadings () {LoRaMessage = String (readingID) + "/" + String (teplota) + "&" + String (vlhkost); // Odeslat paket LoRa příjemci LoRa.beginPacket (); LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("Odesílání paketu:"); Serial.println (ID čtení); readingID ++; Serial.println (LoRaMessage); } void setup () {// inicializace Serial Monitor Serial.begin (115200); dht.begin (); startDHT (); startLoRA (); } void loop () {getReadings (); sendReadings (); zpoždění (500); }
Krok 8: Monitorujte data na serveru Thingspeak
Jakmile je kód nahrán, můžete otevřít sériový monitor na obvodu brány i senzoru uzlu. Pokud je kód správný, budete odesílat a přijímat data. Nyní můžete navštívit Thingspeak Private View. Zde můžete vidět údaje o počtu paketů, teplotě, vlhkosti a bráně se nahrávají po intervalu 15 sekund.
Krok 9: Reference
1.
2.