Мазмуну:
- 1 -кадам: компоненттери талап кылынат
- 2 -кадам: Керектүү китепканаларды орнотуу
- 3 -кадам: ESP32 LoRa Thingspeak Gateway
- 4 -кадам: ESP32 LoRa сенсор түйүнү
- 5 -кадам: Thingspeakти орнотуу
- 6 -кадам: Gateway Code
- 7 -кадам: Sensor Node Code
- 8 -кадам: Thingspeak Serverдеги маалыматтарды көзөмөлдөө
- 9 -кадам: Шилтемелер
Video: ESP32 Lora Thingspeak шлюзу сенсор түйүнү менен: 9 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:39
Бул IoT долбоорунда мен ESP32 LoRa Gateway жана ESP32 LoRa Sensor Node бир нече километр аралыктан зымсыз окууну көзөмөлдөө үчүн иштелип чыккан. Жөнөтүүчү DHT11 сенсорунун жардамы менен нымдуулук жана температура маалыматтарды окуйт. Андан кийин ал LoRa радиосу аркылуу маалыматтарды өткөрүп берет. Маалыматтар кабыл алуучу модуль тарабынан кабыл алынат. Кабыл алуучу белгилүү бир интервалдан кийин маалыматты Thingspeak Serverге жөнөтөт.
1 -кадам: компоненттери талап кылынат
1. ESP32 Board - 2
2. Лора модулу SX1278/SX1276
3. DHT11 нымдуулук температура сенсору
4. Нан тактасы
5. Jumper зымдарын туташтыруу
2 -кадам: Керектүү китепканаларды орнотуу
Адегенде ар кандай китепканаларды орнотушубуз керек:
1. DHT11 китепканасы
2. LoRa китепканасы
3 -кадам: ESP32 LoRa Thingspeak Gateway
Эми ESP32 LoRa шлюзу жана сенсор түйүнүн куруу үчүн жөнөтүүчү менен алуучунун схемасын көрөлү. Мен экөөнү тең нан табакка чогулттум. Кааласаңыз, аны ПХБдан жасай аласыз.
Бул жерде ESP32 LoRa Module SX1278 Gateway Circuit. Бул бөлүк алуучу катары иштейт. Нымдуулук жана температура жөнүндө маалыматтар LoRa Radio аркылуу алынат жана Thingspeak Serverге жүктөлөт.
4 -кадам: ESP32 LoRa сенсор түйүнү
Бул жерде DHT11 Sensor менен ESP32 LoRa Sensor Node Circuit. Бул бөлүк өткөргүч катары иштейт. Нымдуулук жана температура маалыматтары DHT11 нымдуулук температура сенсору тарабынан окулат жана LoRa радиосунун жардамы менен берилет.
5 -кадам: Thingspeakти орнотуу
Thingspeak Serverдеги сенсордук маалыматтарды көзөмөлдөө үчүн, адегенде Thingspeakти орнотушуңуз керек. Thingspeak Serverди орнотуу үчүн https://thingspeak.com/ дарегине баш багыңыз. Аккаунтту түзүңүз же жөн эле кириңиз, эгерде сиз мурда каттоо эсебин түзсөңүз. Андан кийин төмөнкү деталдар менен жаңы канал түзүңүз.
6 -кадам: Gateway Code
#кошуу
// LoRa үчүн китепканалар #кошуу #кошуу // LoRa transceiver модулу колдонгон казыктарды аныктоо #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 Азия үчүн, 866E6 Европа үчүн, 915E6 Түндүк Америка үчүн // Тармактык грамоталарыңыз менен алмаштырыңыз String apiKey = "14K8UL2QEK8BTHN6"; // ThingSpeak const char *ssid = "Wifi SSID" ден жазуу API ачкычыңызды киргизиңиз; // wifi ssid жана wpa2 key const char *password = "Password" менен алмаштырыңыз; const char* server = "api.thingspeak.com"; WiFiClient кардары; // LoRa маалыматтарды int rssi алуу жана сактоо үчүн өзгөрмөлөрдү баштоо; String loRaMessage; String температурасы; Сымдын нымдуулугу; String readingID; // Толтургучту DHT мааниси менен алмаштырат String Processor (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 transceiver модулун орнотуу LoRa.setPins (ss, rst, dio0); // LoRa transceiver модулун жөндөп жатканда (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); counter ++; кечигүү (2000); } if (counter == 10) {// Ар бир жаңы окуу боюнча Serial.println ("LoRa башталбай калды!") окуу IDсин көбөйтүү; } 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 пакетин окуңуз жана сенсордун окуусунан боштук циклин алыңыз () {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 ('&'); readingID = LoRaData.substring (0, pos1); // ReadID температурасын алуу = LoRaData.substring (pos1 +1, pos2); // Температуранын нымдуулугун алуу = LoRaData.substring (pos2+1, LoRaData.length ()); // Нымдуулукту алыңыз} rssi = LoRa.packetRssi (); // RSSI Serial.print алуу ("RSSI менен"); Serial.println (rssi); } if (client.connect (server, 80)) // "184.106.153.149" же api.thingspeak.com {String postStr = apiKey; postStr += "& field1 ="; postStr += String (readID); postStr += "& field2 ="; postStr += Сап (температура); postStr += "& field3 ="; postStr += сап (нымдуулук); postStr += "& field4 ="; postStr += String (rssi); postStr += "\ r / n / r / n / r / n / r / n"; client.print ("POST /update HTTP /1.1 / n"); client.print ("Хост: api.thingspeak.com / n"); client.print ("Байланыш: жабуу / n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Content-Type: application/x-www-form-urlencoded / n"); client.print ("Content-Length:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // кечигүү (30000); }
7 -кадам: Sensor Node Code
#кошуу
#include // LoRa үчүн китепканалар #include "DHT.h" #аныктоо DHTPIN 4 // pin, dht11 туташкан жерде DHT dht (DHTPIN, DHT11); // LoRa трансивер модулу колдонгон казыктарды аныктаңыз #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 Азия үчүн, Европа үчүн 866E6, Түндүк Америка үчүн 915E6 // packet counter int readingID = 0; int counter = 0; String LoRaMessage = ""; сүзүү температурасы = 0; калкып нымдуулук = 0; // LoLa модулун баштоо startLoRA () {LoRa.setPins (ss, rst, dio0); // LoRa transceiver модулун жөндөп жатканда (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); counter ++; кечигүү (500); } if (counter == 10) {// Ар бир жаңы окуу боюнча Окууну жогорулатууIDID ++; Serial.println ("LoRa башталбай калды!"); } Serial.println ("LoRa Initialization OK!"); кечигүү (2000); } void startDHT () {if (isnan (нымдуулук) || isnan (температура)) {Serial.println ("DHT сенсорунан окулбай калды!"); кайтуу; }} жараксыз getReadings () {нымдуулук = dht.readHumidity (); температура = dht.readTemperature (); Serial.print (F ("Нымдуулук:")); Serial.print (нымдуулук); Serial.print (F ("% Температура:")); Serial.print (температура); Serial.println (F ("° C")); } void sendReadings () {LoRaMessage = String (readingID) + "/" + String (температура) + "&" + String (нымдуулук); // LoRa пакетин LoRa.beginPacket алуучуга жөнөтүү (); LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("Пакет жөнөтүлүүдө:"); Serial.println (readID); readID ++; Serial.println (LoRaMessage); } void setup () {// Serial Monitor Serial.begin (115200) баштоо; dht.begin (); startDHT (); startLoRA (); } void loop () {getReadings (); sendReadings (); кечигүү (500); }
8 -кадам: Thingspeak Serverдеги маалыматтарды көзөмөлдөө
Код жүктөлгөндөн кийин, сиз Gateway жана Sensor Node Circuit'де Сериялык Мониторду ача аласыз. Код туура болсо, сиз маалыматтарды жөнөтөсүз жана аласыз. Эми сиз Thingspeak Private Viewга кире аласыз. Ал жерде пакет номери, температура, нымдуулук жана шлюз боюнча маалыматтар 15 секунддан кийин жүктөлгөнүн көрө аласыз.
9 -кадам: Шилтемелер
1.
2.
Сунушталууда:
RaspberryPi WSPR түйүнү: 7 кадам
RaspberryPi WSPR түйүнү: Мен WSPRnet оюнунда буттарымды нымдап, маякты канчалык алыска жеткире алаарымды көрө башташ үчүн WSPRnet (Алсыз Сигналды Таркатуу Кабарчысы) өткөргүчүн жасагым келди. Менде бул жабдуулардын айрымдары бар болчу, мен тез арада профессионалдуу ыргытууну чечтим
Raspberry Pi -> Wifi түйүнү: 10 кадам
Raspberry Pi -> Wifi Hotspot: Сиз качандыр бир убакта wifi жок жерге бардыңыз беле, досторуңуз hotspotту бербей коюшту беле? Менде бар жана бул көрсөтмөлөрдө мен сизге Raspberry Pi'ди wifi түйүнүнө кантип айландырууну этап -этабы менен көрсөтөм. Дагы жакшы, бул долбоор сизге арзаныраак болот
Жаңсоолор менен башкарылган универсалдуу алыстан башкаруу түйүнү-MCU менен: 12 кадам
Жаңсоо менен башкарылган универсалдуу алыстан башкаруу түйүнү-MCU менен: Баарына салам жана бул долбоорго кош келиңиз! Мен абдан жалкоомун жана жалкоо адамдын түшү - пульттун өтө алыс экенин түшүнгөндө телевизор көрүү! Мен колумда болгондо пультим эч качан алыс болбойт экенин түшүндүм
Түйүнү бар топурак: 7 кадам
Түйүнү бар топурак: Бул колдонмодо мен сизге бакча ден соолугу системасы үчүн үй топурак сенсорун кантип жасоону көрсөтөм. Мен сизге эмне керек экенин көрсөтөм, кээ бир коддордун мисалдарын бериңиз жана кодду кантип ишке ашыруу керек экенин көрсөтмөлөрдүн аягында сиз лед тилкесин кантип өзгөртүү керектигин билесиз
Windowsто бекер WiFi түйүнү түзүңүз: 7 кадам
Windowsто Free WiFi Hotspot кылыңыз: Сиз бекер жана жарнамасыз зымсыз түйүнгө ээ болгуңуз келеби? Кантип билүү үчүн бул көрсөтмөнү окуңуз