Innholdsfortegnelse:

ESP32 Lora Thingspeak -gateway med sensornode: 9 trinn
ESP32 Lora Thingspeak -gateway med sensornode: 9 trinn

Video: ESP32 Lora Thingspeak -gateway med sensornode: 9 trinn

Video: ESP32 Lora Thingspeak -gateway med sensornode: 9 trinn
Video: Deaf People Arduino Wireless Project using NRF24L01 modules and Micro Vibration Motor 2024, November
Anonim
ESP32 Lora Thingspeak Gateway med sensornode
ESP32 Lora Thingspeak Gateway med sensornode

i dette IoT -prosjektet designet jeg ESP32 LoRa Gateway og også ESP32 LoRa Sensor Node for å overvåke sensoravlesningen trådløst fra noen få kilometers avstander. Avsenderen vil lese fuktighets- og temperaturdataene ved hjelp av DHT11 -sensor. Deretter overfører den dataene via LoRa Radio. Dataene mottas av mottakermodulen. Mottakeren sender deretter dataene til Thingspeak Server etter et visst intervall.

Trinn 1: Komponenter påkrevd

1. ESP32 -kort - 2

2. Lora -modul SX1278/SX1276

3. DHT11 Fuktighetstemperaturføler

4. Brødbrett

5. Koble til hoppetråder

Trinn 2: Installere de nødvendige bibliotekene

Vi må først installere forskjellige biblioteker:

1. DHT11 bibliotek

2. LoRa bibliotek

Trinn 3: ESP32 LoRa Thingspeak Gateway

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

La oss nå se avsender- og mottakerkretsen for å bygge ESP32 LoRa Gateway & Sensor Node. Jeg monterte begge kretsene på et brødbrett. Du kan gjøre det på PCB hvis du vil.

Her er en ESP32 LoRa Module SX1278 Gateway Circuit. Denne delen fungerer som mottaker. Fuktighets- og temperaturdata mottas ved hjelp av LoRa Radio og lastes opp til Thingspeak Server.

Trinn 4: ESP32 LoRa Sensornode

ESP32 LoRa Sensor Node
ESP32 LoRa Sensor Node
ESP32 LoRa Sensor Node
ESP32 LoRa Sensor Node

Her er en ESP32 LoRa Sensor Node Circuit med DHT11 Sensor. Denne delen fungerer som en sender. Luftfuktighets- og temperaturdata leses av DHT11 Fuktighetstemperaturføler og overføres ved hjelp av LoRa Radio.

Trinn 5: Konfigurere Thingspeak

Sette opp Thingspeak
Sette opp Thingspeak

For å overvåke sensordata på Thingspeak Server må du først sette opp Thingspeak. For å sette opp Thingspeak Server, besøk https://thingspeak.com/. Opprett en konto eller logg deg på hvis du opprettet kontoen tidligere. Lag deretter en ny kanal med følgende detaljer.

Trinn 6: Gateway -kode

#inkludere

// Biblioteker for LoRa #include #include // definer pinnene som brukes av LoRa -transceivermodulen #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 for Asia, 866E6 for Europa, 915E6 for Nord -Amerika // Erstatt med nettverksopplysningene String apiKey = "14K8UL2QEK8BTHN6"; // Skriv inn Write API -nøkkelen din fra ThingSpeak const char *ssid = "Wifi SSID"; // bytt ut med wifi ssid og wpa2 -nøkkelen const char *password = "Password"; const char* server = "api.thingspeak.com"; WiFiClient -klient; // Initialiser variabler for å få og lagre LoRa -data int rssi; String loRaMessage; Streng temperatur; Strengfuktighet; StringavlesningID; // Erstatter plassholder med DHT -verdier Stringprosessor (const String & var) {//Serial.println(var); if (var == "TEMPERATURE") {returtemperatur; } annet hvis (var == "HUMIDITY") {returfuktighet; } annet hvis (var == "RRSI") {return String (rssi); } returstreng (); } ugyldig oppsett () {Serial.begin (115200); int teller; // setup LoRa transceiver module LoRa.setPins (ss, rst, dio0); // sette opp LoRa -mottakermodul mens (! LoRa.begin (BAND) && teller <10) {Serial.print ("."); teller ++; forsinkelse (2000); } if (counter == 10) {// Øk lese -ID på hver nye lesing Serial.println ("Start LoRa mislyktes!"); } Serial.println ("LoRa -initialisering OK!"); forsinkelse (2000); // Koble til Wi-Fi-nettverk med SSID og passord Serial.print ("Koble til"); Serial.println (ssid); WiFi.begin (ssid, passord); mens (WiFi.status ()! = WL_CONNECTED) {forsinkelse (2000); Serial.print ("."); } // Skriv ut lokal IP -adresse og start webserveren Serial.println (""); Serial.println ("WiFi tilkoblet."); Serial.println ("IP -adresse:"); Serial.println (WiFi.localIP ()); } // Les LoRa -pakken og få sensoravlesningene til å gjøre loop () {int packetSize = LoRa.parsePacket (); if (packetSize) {Serial.print ("Lora -pakke mottatt:"); while (LoRa.available ()) // Les pakke {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); readingID = LoRaData.substring (0, pos1); // Få lese -ID temperatur = LoRaData.substring (pos1 +1, pos2); // Få temperaturfuktighet = LoRaData.substring (pos2+1, LoRaData.length ()); // Få fuktighet} rssi = LoRa.packetRssi (); // Få RSSI Serial.print ("med RSSI"); Serial.println (rssi); } if (client.connect (server, 80)) // "184.106.153.149" eller api.thingspeak.com {String postStr = apiKey; postStr += "& field1 ="; postStr += String (readingID); postStr += "& field2 ="; postStr += String (temperatur); postStr += "& field3 ="; postStr += String (fuktighet); postStr += "& field4 ="; postStr += String (rssi); postStr += "\ r / n / r / n / r / n / r / n"; client.print ("POST /oppdater HTTP /1.1 / n"); client.print ("Vert: api.thingspeak.com / n"); client.print ("Tilkobling: lukk / n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Innholdstype: application/x-www-form-urlencoded / n"); client.print ("Content-Length:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // forsinkelse (30000); }

Trinn 7: Sensornodekode

#inkludere

#include // Libraries for LoRa #include "DHT.h" #define DHTPIN 4 // pin hvor dht11 er tilkoblet DHT dht (DHTPIN, DHT11); // definere pinnene som brukes av LoRa -transceivermodulen #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 for Asia, 866E6 for Europa, 915E6 for Nord -Amerika // packet counter int readingID = 0; int teller = 0; String LoRaMessage = ""; flyte temperatur = 0; flytefuktighet = 0; // Initialiser LoRa -modulen ugyldig startLoRA () {LoRa.setPins (ss, rst, dio0); // sette opp LoRa -mottakermodul mens (! LoRa.begin (BAND) && teller <10) {Serial.print ("."); teller ++; forsinkelse (500); } if (teller == 10) {// Øk lese -ID for hver ny lesing readingID ++; Serial.println ("Start LoRa mislyktes!"); } Serial.println ("LoRa -initialisering OK!"); forsinkelse (2000); } ugyldig startDHT () {if (isnan (fuktighet) || isnan (temperatur)) {Serial.println ("Kunne ikke lese fra DHT -sensor!"); komme tilbake; }} void getReadings () {fuktighet = dht.readHumidity (); temperatur = dht.readTemperature (); Serial.print (F ("Fuktighet:")); Serial.print (fuktighet); Serial.print (F ("% temperatur:")); Serial.print (temperatur); Serial.println (F ("° C")); } void sendReadings () {LoRaMessage = String (readingID) + "/" + String (temperatur) + "&" + String (fuktighet); // Send LoRa -pakken til mottaker LoRa.beginPacket (); LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("Sender pakke:"); Serial.println (readingID); readingID ++; Serial.println (LoRaMessage); } ugyldig oppsett () {// initialize Serial Monitor Serial.begin (115200); dht.begin (); startDHT (); startLoRA (); } void loop () {getReadings (); sendReadings (); forsinkelse (500); }

Trinn 8: Overvåk data på Thingspeak Server

Overvåk data på Thingspeak Server
Overvåk data på Thingspeak Server
Overvåk data på Thingspeak Server
Overvåk data på Thingspeak Server

Når koden er lastet opp, kan du åpne Serial Monitor på både Gateway & Sensor Node Circuit. Du sender og mottar data hvis koden er riktig. Nå kan du besøke Thingspeak Private View. Der kan du se dataene for pakkenummer, temperatur, fuktighet og gateway lastes opp etter intervallet på 15 sekunder.

Trinn 9: Referanser

1.

2.

Anbefalt: