Πίνακας περιεχομένων:

ESP32 Lora Thingspeak Gateway With Sensor Node: 9 βήματα
ESP32 Lora Thingspeak Gateway With Sensor Node: 9 βήματα

Βίντεο: ESP32 Lora Thingspeak Gateway With Sensor Node: 9 βήματα

Βίντεο: ESP32 Lora Thingspeak Gateway With Sensor Node: 9 βήματα
Βίντεο: Sending LoRaWAN Sensor Node Data to The Things Network Server (TTN) 2024, Νοέμβριος
Anonim
ESP32 Lora Thingspeak Gateway With Sensor Node
ESP32 Lora Thingspeak Gateway With Sensor Node

σε αυτό το έργο IoT, σχεδίασα το ESP32 LoRa Gateway & επίσης το ESP32 LoRa Sensor Node για να παρακολουθώ τον αισθητήρα να διαβάζει ασύρματα από αποστάσεις μερικών χιλιομέτρων. Ο αποστολέας θα διαβάσει τα δεδομένα υγρασίας και θερμοκρασίας χρησιμοποιώντας τον αισθητήρα DHT11. Στη συνέχεια μεταδίδει τα δεδομένα μέσω του LoRa Radio. Τα δεδομένα λαμβάνονται από τη μονάδα δέκτη. Στη συνέχεια, ο δέκτης θα στείλει τα δεδομένα στον διακομιστή Thingspeak μετά από ένα ορισμένο διάστημα.

Βήμα 1: Απαιτούνται εξαρτήματα

1. Πίνακας ESP32 - 2

2. Lora Module SX1278/SX1276

3. Αισθητήρας θερμοκρασίας υγρασίας DHT11

4. Breadboard

5. Σύνδεση καλωδίων βραχυκυκλωτήρα

Βήμα 2: Εγκατάσταση των απαιτούμενων βιβλιοθηκών

Πρέπει πρώτα να εγκαταστήσουμε διαφορετικές βιβλιοθήκες:

1. Βιβλιοθήκη DHT11

2. Βιβλιοθήκη LoRa

Βήμα 3: ESP32 LoRa Thingspeak Gateway

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

Τώρα ας δούμε το κύκλωμα αποστολέα και δέκτη για την κατασκευή του κόμβου ESP32 LoRa Gateway & Sensor. Συναρμολόγησα και τα δύο κυκλώματα σε μια σανίδα ψωμιού. Μπορείτε να το φτιάξετε σε PCB αν θέλετε.

Εδώ είναι ένα κύκλωμα πύλης ESP32 LoRa Module SX1278. Αυτό το μέρος λειτουργεί ως δέκτης. Τα δεδομένα υγρασίας και θερμοκρασίας λαμβάνονται μέσω του LoRa Radio και μεταφορτώνονται στον Thingspeak Server.

Βήμα 4: Κόμβος αισθητήρα ESP32 LoRa

Κόμβος αισθητήρα ESP32 LoRa
Κόμβος αισθητήρα ESP32 LoRa
Κόμβος αισθητήρα ESP32 LoRa
Κόμβος αισθητήρα ESP32 LoRa

Εδώ είναι ένα κύκλωμα κόμβου αισθητήρα ESP32 LoRa με αισθητήρα DHT11. Αυτό το μέρος λειτουργεί ως πομπός. Τα δεδομένα υγρασίας και θερμοκρασίας διαβάζονται από τον αισθητήρα θερμοκρασίας υγρασίας DHT11 και μεταδίδονται με χρήση του LoRa Radio.

Βήμα 5: Ρύθμιση του Thingspeak

Ρύθμιση του Thingspeak
Ρύθμιση του Thingspeak

Για να παρακολουθήσετε τα δεδομένα αισθητήρα στον διακομιστή Thingspeak, πρέπει πρώτα να ρυθμίσετε το Thingspeak. Για να ρυθμίσετε τον διακομιστή Thingspeak, επισκεφτείτε τη διεύθυνση https://thingspeak.com/. Δημιουργήστε έναν λογαριασμό ή απλώς συνδεθείτε εάν δημιουργήσατε τον λογαριασμό νωρίτερα. Στη συνέχεια, δημιουργήστε ένα νέο κανάλι με τις ακόλουθες λεπτομέρειες.

Βήμα 6: Κωδικός πύλης

#περιλαμβάνω

// Βιβλιοθήκες για LoRa #include #include // καθορίστε τις ακίδες που χρησιμοποιούνται από τη μονάδα πομποδέκτη LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 για την Ασία, 866E6 για την Ευρώπη, 915E6 για τη Βόρεια Αμερική // Αντικαταστήστε με τα διαπιστευτήρια δικτύου σας String apiKey = "14K8UL2QEK8BTHN6"; // Εισαγάγετε το κλειδί εγγραφής API από το ThingSpeak const char *ssid = "Wifi SSID"; // αντικαταστήστε με το wifi ssid και το κλειδί wpa2 const char *password = "Password"; const char* server = "api.thingspeak.com"; Πελάτης WiFiClient. // Αρχικοποίηση μεταβλητών για λήψη και αποθήκευση δεδομένων LoRa int rssi; Συμβολοσειρά loRaMessage; Θερμοκρασία συμβολοσειράς Υγρασία συμβολοσειράς String readID; // Αντικαθιστά το σύμβολο κράτησης θέσεων με τιμές DHT Επεξεργαστής συμβολοσειράς (const String & var) {//Serial.println(var); εάν (var == "ΘΕΡΜΟΚΡΑΣΙΑ") {θερμοκρασία επιστροφής? } else if (var == "ΥΓΡΑΣΙΑ") {επιστροφή υγρασίας? } else if (var == "RRSI") {return String (rssi); } επιστροφή συμβολοσειράς (); } void setup () {Serial.begin (115200); int counter? // setup LoRa module module LoRa.setPins (ss, rst, dio0); // setup LoRa module module while (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); μετρητής ++; καθυστέρηση (2000). } if (counter == 10) {// Αύξηση αναγνωστικού αναγνωριστικού σε κάθε νέα ανάγνωση Serial.println ("Η εκκίνηση του LoRa απέτυχε!"); } Serial.println ("LoRa Initialization OK!"); καθυστέρηση (2000). // Σύνδεση σε δίκτυο Wi-Fi με SSID και κωδικό πρόσβασης Serial.print ("Σύνδεση σε"). Serial.println (ssid); WiFi.begin (ssid, κωδικός πρόσβασης); while (WiFi.status ()! = WL_CONNECTED) {καθυστέρηση (2000); Serial.print ("."); } // Εκτύπωση τοπικής διεύθυνσης IP και εκκίνηση διακομιστή ιστού Serial.println (""); Serial.println ("WiFi συνδεδεμένο."); Serial.println ("Διεύθυνση IP:"); Serial.println (WiFi.localIP ()); } // Διαβάστε το πακέτο LoRa και λάβετε τις ενδείξεις των αισθητήρων void loop () {int packetSize = LoRa.parsePacket (); if (packetSize) {Serial.print ("Το πακέτο Lora ελήφθη:"); while (LoRa.available ()) // Ανάγνωση πακέτου {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); ανάγνωσηςID = LoRaData.substring (0, pos1); // Λάβετε θερμοκρασία αναγνώρισης = LoRaData.substring (pos1 +1, pos2); // Λάβετε υγρασία θερμοκρασίας = LoRaData.substring (pos2+1, LoRaData.length ()); // Λάβετε υγρασία} rssi = LoRa.packetRssi (); // Λήψη RSSI Serial.print ("με RSSI"); Serial.println (rssi); } if (client.connect (διακομιστής, 80)) // "184.106.153.149" ή api.thingspeak.com {String postStr = apiKey; postStr += "& field1 ="; postStr += Συμβολοσειρά (αναγνωστικό αναγνωστικό); postStr += "& field2 ="; postStr += String (θερμοκρασία); postStr += "& field3 ="; postStr += String (υγρασία); postStr += "& field4 ="; postStr += String (rssi); postStr += "\ r / n / r / n / r / n / r / n"; client.print ("POST /ενημέρωση HTTP /1.1 / n"); client.print ("Host: api.thingspeak.com / n"); client.print ("Σύνδεση: κλείσιμο / n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Τύπος περιεχομένου: application/x-www-form-urlencoded / n"); client.print ("Περιεχόμενο-Μήκος:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // καθυστέρηση (30000); }

Βήμα 7: Κωδικός κόμβου αισθητήρα

#περιλαμβάνω

#include // Βιβλιοθήκες για LoRa #include "DHT.h" #define DHTPIN 4 // pin όπου το dht11 είναι συνδεδεμένο DHT dht (DHTPIN, DHT11). // καθορίστε τις ακίδες που χρησιμοποιούνται από τη μονάδα πομποδέκτη LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 για την Ασία, 866E6 για την Ευρώπη, 915E6 για τη Βόρεια Αμερική // πακέτο μετρητή int ανάγνωση ID = 0; int counter = 0; String LoRaMessage = ""; θερμοκρασία πλωτήρα = 0; υγρασία επίπλευσης = 0; // Αρχικοποίηση λειτουργικής μονάδας LoRa void startLoRA () {LoRa.setPins (ss, rst, dio0); // setup LoRa module module while (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); μετρητής ++; καθυστέρηση (500)? } if (μετρητής == 10) {// Αύξηση αναγνωστικού αναγνωριστικού σε κάθε νέα ανάγνωση ανάγνωσης ID ++; Serial.println ("Η εκκίνηση του LoRa απέτυχε!"); } Serial.println ("LoRa Initialization OK!"); καθυστέρηση (2000). } void startDHT () {if (isnan (υγρασία) || isnan (θερμοκρασία)) {Serial.println ("Η ανάγνωση από τον αισθητήρα DHT απέτυχε!"); ΕΠΙΣΤΡΟΦΗ; }} void getReadings () {υγρασία = dht.readHumidity (); θερμοκρασία = dht.readTemperature (); Serial.print (F ("Υγρασία:")); Serial.print (υγρασία)? Serial.print (F ("% Temperature:")); Serial.print (θερμοκρασία) Serial.println (F ("° C")); } void sendReadings () {LoRaMessage = String (readID) + "/" + String (θερμοκρασία) + "&" + String (υγρασία); // Αποστολή πακέτου LoRa στον παραλήπτη LoRa.beginPacket (); LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("Αποστολή πακέτου:"); Serial.println (αναγνωστικό αναγνωστικό); ανάγνωση ID ++; Serial.println (LoRaMessage); } void setup () {// αρχικοποίηση Serial Monitor Serial.begin (115200); dht.begin (); startDHT (); startLoRA (); } void loop () {getReadings (); sendReadings (); καθυστέρηση (500)? }

Βήμα 8: Παρακολούθηση δεδομένων στον διακομιστή Thingspeak

Παρακολούθηση δεδομένων στον διακομιστή Thingspeak
Παρακολούθηση δεδομένων στον διακομιστή Thingspeak
Παρακολούθηση δεδομένων στον διακομιστή Thingspeak
Παρακολούθηση δεδομένων στον διακομιστή Thingspeak

Μόλις μεταφορτωθεί ο κώδικας, μπορείτε να ανοίξετε τη Σειριακή οθόνη στο κύκλωμα Gateway & Sensor Node Circuit. Θα στείλετε και θα λάβετε δεδομένα εάν ο κωδικός είναι σωστός. Τώρα μπορείτε να επισκεφθείτε το Thingspeak Private View. Εκεί μπορείτε να δείτε τα δεδομένα για τον αριθμό πακέτου, τη θερμοκρασία, την υγρασία και την πύλη που μεταφορτώνονται μετά από ένα διάστημα 15 δευτερολέπτων.

Βήμα 9: Αναφορές

1.

2.

Συνιστάται: