Brána ESP32 Lora Thingspeak s uzlem senzoru: 9 kroků
Brána ESP32 Lora Thingspeak s uzlem senzoru: 9 kroků

Video: Brána ESP32 Lora Thingspeak s uzlem senzoru: 9 kroků

Video: Brána ESP32 Lora Thingspeak s uzlem senzoru: 9 kroků
Video: Знакомство с платой разработки Heltec LoRa CubeCell HTCC-AB01 2025, Leden
Anonim
Brána ESP32 Lora Thingspeak s uzlem senzoru
Brána ESP32 Lora Thingspeak s uzlem senzoru

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

Brána ESP32 LoRa Thingspeak
Brána ESP32 LoRa Thingspeak
Brána ESP32 LoRa Thingspeak
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

Uzel snímače ESP32 LoRa
Uzel snímače ESP32 LoRa
Uzel snímače ESP32 LoRa
Uzel snímače 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

Nastavení Thingspeak
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

Monitorujte data na serveru Thingspeak
Monitorujte data na serveru Thingspeak
Monitorujte data na serveru Thingspeak
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.