Სარჩევი:

ESP32 ლორა Thingspeak Gateway სენსორული კვანძით: 9 ნაბიჯი
ESP32 ლორა Thingspeak Gateway სენსორული კვანძით: 9 ნაბიჯი

ვიდეო: ESP32 ლორა Thingspeak Gateway სენსორული კვანძით: 9 ნაბიჯი

ვიდეო: ESP32 ლორა Thingspeak Gateway სენსორული კვანძით: 9 ნაბიჯი
ვიდეო: ESP32 LoRaWAN Gateway tutorial with Sensor Node 2024, ნოემბერი
Anonim
ESP32 ლორა Thingspeak Gateway სენსორული კვანძით
ESP32 ლორა Thingspeak Gateway სენსორული კვანძით

ამ IoT პროექტში, მე შევიმუშავე ESP32 LoRa Gateway და ასევე ESP32 LoRa სენსორული კვანძი, რომ მონიტორინგი გავუწიო სენსორს უსადენოდ კითხულობს რამდენიმე კილომეტრიანი დისტანციიდან. გამგზავნი წაიკითხავს ტენიანობის და ტემპერატურის მონაცემებს DHT11 სენსორის გამოყენებით. შემდეგ ის გადასცემს მონაცემებს LoRa რადიოს საშუალებით. მონაცემები მიღებულია მიმღების მოდულის მიერ. მიმღები შემდეგ მონაცემებს გაუგზავნის Thingspeak სერვერს გარკვეული ინტერვალის შემდეგ.

ნაბიჯი 1: საჭირო კომპონენტები

1. ESP32 დაფა - 2

2. ლორა მოდული SX1278/SX1276

3. DHT11 ტენიანობის ტემპერატურის სენსორი

4. პურის დაფა

5. Jumper Wires- ის შეერთება

ნაბიჯი 2: საჭირო ბიბლიოთეკების დაყენება

ჩვენ ჯერ უნდა დავაყენოთ სხვადასხვა ბიბლიოთეკა:

1. DHT11 ბიბლიოთეკა

2. ლორა ბიბლიოთეკა

ნაბიჯი 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 Node- ის შესაქმნელად. ორივე სქემა შევკრიბე პურის დაფაზე. თუ გსურთ, შეგიძლიათ გააკეთოთ ის PCB– ზე.

აქ არის ESP32 LoRa მოდული SX1278 Gateway Circuit. ეს ნაწილი მუშაობს როგორც მიმღები. ტენიანობის და ტემპერატურის მონაცემები მიიღება LoRa რადიოს გამოყენებით და ატვირთულია Thingspeak სერვერზე.

ნაბიჯი 4: ESP32 LoRa სენსორული კვანძი

ESP32 LoRa სენსორის კვანძი
ESP32 LoRa სენსორის კვანძი
ESP32 LoRa სენსორის კვანძი
ESP32 LoRa სენსორის კვანძი

აქ არის ESP32 LoRa სენსორული კვანძის წრიული DHT11 სენსორით. ეს ნაწილი მუშაობს როგორც გადამცემი. ტენიანობის და ტემპერატურის მონაცემები იკითხება DHT11 ტენიანობის ტემპერატურის სენსორის მიერ და გადაეცემა LoRa რადიოს გამოყენებით.

ნაბიჯი 5: Thingspeak– ის დაყენება

Setting Up Thingspeak
Setting Up Thingspeak

სენსორული მონაცემების მონიტორინგისთვის Thingspeak სერვერზე, თქვენ ჯერ უნდა დააყენოთ Thingspeak. Thingspeak სერვერის დასაყენებლად ეწვიეთ https://thingspeak.com/. შექმენით ანგარიში ან უბრალოდ შედით, თუ ანგარიში ადრე შექმენით. შემდეგ შექმენით ახალი არხი შემდეგი დეტალებით.

ნაბიჯი 6: კარიბჭის კოდი

#ჩართეთ

// ბიბლიოთეკები LoRa- სთვის #მოიცავს #მოიცავს // განსაზღვრეთ ქინძისთავები, რომლებიც გამოიყენება LoRa გადამცემი მოდულის მიერ #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 for Asia, 866E6 for Europe, 915E6 for North America // შეცვალეთ თქვენი ქსელის სერთიფიკატებით String apiKey = "14K8UL2QEK8BTHN6"; // შეიყვანეთ თქვენი ჩაწერის API გასაღები ThingSpeak const char *ssid = "Wifi SSID"; // შეცვალეთ თქვენი wifi ssid და wpa2 გასაღებით const char *პაროლი = "პაროლი"; const char* სერვერი = "api.thingspeak.com"; WiFiClient კლიენტი; // ცვლადების ინიციალიზაცია LoRa მონაცემების მისაღებად და შესანახად int rssi; სიმებიანი loRaMessage; სიმებიანი ტემპერატურა; სიმებიანი ტენიანობა; სიმებიანი კითხვა ID; // ცვლის ადგილსამყოფელს DHT მნიშვნელობებით სიმებიანი პროცესორი (const String & var) {//Serial.println(var); if (var == "TEMPERATURE") {დაბრუნების ტემპერატურა; } else if (var == "HUMIDITY") {დააბრუნეთ ტენიანობა; } else if (var == "RRSI") {return string (rssi); } return String (); } void setup () {Serial.begin (115200); int counter; // LoRa გადამცემი მოდულის დაყენება LoRa.setPins (ss, rst, dio0); // LoRa გადამცემი მოდულის დაყენება while (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); მრიცხველი ++; დაგვიანება (2000); } if (counter == 10) {// ReadID– ის გაზრდა ყოველ ახალ კითხვაზე Serial.println ("LoRa– ს დაწყება ვერ მოხერხდა!"); } Serial.println ("LoRa ინიციალიზაცია კარგი!"); დაგვიანება (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 ("ლორას პაკეტი მიღებულია:"); while (LoRa.available ()) // წაკითხვის პაკეტი {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); readID = LoRaData.substring (0, pos1); // მიიღეთ კითხვა ID ტემპერატურა = 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 += სიმებიანი (კითხულობს ID); postStr += "& field2 ="; postStr += სიმებიანი (ტემპერატურა); postStr += "& field3 ="; postStr += სიმებიანი (ტენიანობა); postStr += "& field4 ="; postStr += სიმებიანი (rssi); postStr += "\ r / n / r / n / r / n / r / n"; client.print ("POST /განახლება HTTP /1.1 / n"); client.print ("მასპინძელი: api.thingspeak.com / n"); client.print ("კავშირი: დახურვა / n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("შინაარსი-ტიპი: განცხადება/x-www-form-urlencoded / n"); client.print ("შინაარსი-სიგრძე:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // დაგვიანება (30000); }

ნაბიჯი 7: სენსორული კვანძის კოდი

#ჩართეთ

#მოიცავს // ბიბლიოთეკები LoRa- სთვის #მოიცავს "DHT.h" #განსაზღვრეთ DHTPIN 4 // პინი, სადაც dht11 არის დაკავშირებული DHT dht (DHTPIN, DHT11); // განსაზღვრეთ LoRa გადამცემი მოდულის მიერ გამოყენებული ქინძისთავები #განსაზღვრეთ ss 5 #განსაზღვრეთ rst 14 #განსაზღვრეთ dio0 2 #განსაზღვრეთ BAND 433E6 // 433E6 აზიისთვის, 866E6 ევროპაში, 915E6 ჩრდილოეთ ამერიკაში // პაკეტის მრიცხველი int კითხვა ID = 0; int counter = 0; სიმებიანი LoRaMessage = ""; მცურავი ტემპერატურა = 0; float ტენიანობა = 0; // LoRa მოდულის ინიციალიზაცია void startLoRA () {LoRa.setPins (ss, rst, dio0); // LoRa გადამცემი მოდულის დაყენება while (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); მრიცხველი ++; დაგვიანება (500); } if (counter == 10) {// კითხვის ID- ის გაზრდა ყოველ ახალ კითხვაზე ID ++; Serial.println ("LoRa– ს დაწყება ვერ მოხერხდა!"); } Serial.println ("LoRa ინიციალიზაცია კარგი!"); დაგვიანება (2000); } void startDHT () {if (isnan (ტენიანობა) || isnan (ტემპერატურა)) {Serial.println ("DHT სენსორიდან წაკითხვა ვერ მოხერხდა!"); დაბრუნების; }} void getReadings () {ტენიანობა = dht.readHumidity (); ტემპერატურა = dht.readTemperature (); Serial.print (F ("ტენიანობა:")); სერიული. ბეჭდვა (ტენიანობა); Serial.print (F ("% ტემპერატურა:")); სერიული. ბეჭდვა (ტემპერატურა); Serial.println (F ("° C")); } void sendReadings () {LoRaMessage = სიმებიანი (კითხვა ID) + "/" + სიმებიანი (ტემპერატურა) + "&" + სიმებიანი (ტენიანობა); // გაუგზავნეთ LoRa პაკეტი მიმღებს LoRa.beginPacket (); LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("პაკეტის გაგზავნა:"); Serial.println (კითხულობს ID); კითხულობს ID ++; Serial.println (LoRaMessage); } void setup () {// სერიული მონიტორის ინიციალიზაცია Serial.begin (115200); dht. დაწყება (); startDHT (); startLoRA (); } void loop () {getReadings (); sendReadings (); დაგვიანება (500); }

ნაბიჯი 8: მონაცემების მონიტორინგი Thingspeak სერვერზე

მონაცემების მონიტორინგი Thingspeak სერვერზე
მონაცემების მონიტორინგი Thingspeak სერვერზე
მონაცემების მონიტორინგი Thingspeak სერვერზე
მონაცემების მონიტორინგი Thingspeak სერვერზე

მას შემდეგ, რაც კოდი აიტვირთება, შეგიძლიათ გახსნათ სერიული მონიტორი როგორც Gateway & Sensor Node Circuit. თქვენ გაგზავნით და მიიღებთ მონაცემებს, თუ კოდი სწორია. ახლა თქვენ შეგიძლიათ ეწვიოთ Thingspeak Private View. აქ შეგიძლიათ ნახოთ პაკეტის ნომრის, ტემპერატურის, ტენიანობის და კარიბჭის მონაცემები 15 წამის ინტერვალის შემდეგ.

ნაბიჯი 9: მითითებები

1.

2.

გირჩევთ: