สารบัญ:
- ขั้นตอนที่ 1: ส่วนประกอบที่จำเป็น
- ขั้นตอนที่ 2: การติดตั้งไลบรารีที่จำเป็น
- ขั้นตอนที่ 3: ESP32 LoRa Thingspeak Gateway
- ขั้นตอนที่ 4: ESP32 LoRa Sensor Node
- ขั้นตอนที่ 5: การตั้งค่า Thingspeak
- ขั้นตอนที่ 6: รหัสเกตเวย์
- ขั้นตอนที่ 7: รหัสโหนดเซ็นเซอร์
- ขั้นตอนที่ 8: ตรวจสอบข้อมูลบนเซิร์ฟเวอร์ Thingspeak
- ขั้นตอนที่ 9: การอ้างอิง
วีดีโอ: ESP32 Lora Thingspeak Gateway พร้อมโหนดเซ็นเซอร์: 9 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
ในโครงการ IoT นี้ ฉันออกแบบ ESP32 LoRa Gateway และ ESP32 LoRa Sensor Node เพื่อตรวจสอบการอ่านเซ็นเซอร์แบบไร้สายจากระยะทางไม่กี่กิโลเมตร ผู้ส่งจะอ่านข้อมูลความชื้นและอุณหภูมิโดยใช้เซ็นเซอร์ DHT11 จากนั้นจะส่งข้อมูลผ่าน LoRa Radio ข้อมูลจะได้รับโดยโมดูลตัวรับ ผู้รับจะส่งข้อมูลไปยังเซิร์ฟเวอร์ Thingspeak หลังจากช่วงเวลาหนึ่ง
ขั้นตอนที่ 1: ส่วนประกอบที่จำเป็น
1. บอร์ด ESP32 - 2
2. โมดูล Lora SX1278/SX1276
3. DHT11 เซ็นเซอร์อุณหภูมิความชื้น
4. เขียงหั่นขนม
5. การต่อสายจัมเปอร์
ขั้นตอนที่ 2: การติดตั้งไลบรารีที่จำเป็น
เราต้องติดตั้งไลบรารี่ต่าง ๆ ก่อน:
1. ห้องสมุด DHT11
2. ห้องสมุด LoRa
ขั้นตอนที่ 3: ESP32 LoRa Thingspeak Gateway
ทีนี้มาดูวงจรผู้ส่งและตัวรับสำหรับการสร้าง ESP32 LoRa Gateway & Sensor Node ฉันประกอบวงจรทั้งสองบนเขียงหั่นขนม คุณสามารถทำบน PCB ได้หากต้องการ
นี่คือวงจรเกตเวย์ ESP32 LoRa Module SX1278 ส่วนนี้ทำงานเป็นผู้รับ รับข้อมูลความชื้นและอุณหภูมิโดยใช้ LoRa Radio และอัปโหลดไปยัง Thingspeak Server
ขั้นตอนที่ 4: ESP32 LoRa Sensor Node
นี่คือวงจรโหนด ESP32 LoRa Sensor พร้อมเซ็นเซอร์ DHT11 ส่วนนี้ทำงานเป็นเครื่องส่ง ข้อมูลความชื้นและอุณหภูมิอ่านโดย DHT11 Humidity Temperature Sensor และส่งโดยใช้วิทยุ LoRa
ขั้นตอนที่ 5: การตั้งค่า 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 key const char *password = "Password"; เซิร์ฟเวอร์ const char* = "api.thingspeak.com"; ไคลเอนต์ WiFiClient; // เริ่มต้นตัวแปรเพื่อรับและบันทึกข้อมูล LoRa int rssi; สตริง loRaMessage; อุณหภูมิสตริง; ความชื้นสัมพัทธ์; รหัสการอ่านสตริง; // แทนที่ตัวยึดตำแหน่งด้วยค่า DHT ตัวประมวลผลสตริง (const String & var) { //Serial.println (var); if(var == "TEMPERATURE") { อุณหภูมิกลับ; } else if(var == "HUMIDITY") { คืนความชื้น; } else if (var == "RRSI") { return String (rssi); } return String(); } การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); เคาน์เตอร์ int; //ตั้งค่าโมดูลตัวรับส่งสัญญาณ LoRa LoRa.setPins (ss, rst, dio0); // ตั้งค่าโมดูลตัวรับส่งสัญญาณ LoRa ในขณะที่ (!LoRa.begin (BAND) && ตัวนับ < 10) { Serial.print ("."); เคาน์เตอร์++; ล่าช้า (2000); } if (ตัวนับ == 10) {// เพิ่มการอ่านID ทุกครั้งที่อ่าน Serial.println ("การเริ่มต้น LoRa ล้มเหลว!"); } Serial.println ("การเริ่มต้น LoRa ตกลง!"); ล่าช้า (2000); // เชื่อมต่อกับเครือข่าย Wi-Fi ด้วย SSID และรหัสผ่าน Serial.print("กำลังเชื่อมต่อกับ "); Serial.println(ssid); WiFi.begin(ssid, รหัสผ่าน); ในขณะที่ (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: "); ในขณะที่ (LoRa.available ()) // อ่านแพ็กเก็ต { สตริง 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 += สตริง (รหัสการอ่าน); postStr += "&field2="; postStr += สตริง (อุณหภูมิ); postStr += "&field3="; postStr += สตริง (ความชื้น); postStr += "&field4="; postStr += สตริง (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("เนื้อหา-ความยาว: "); client.print(postStr.length()); client.print("\n\n"); client.print(postStr); } // ล่าช้า (30000); }
ขั้นตอนที่ 7: รหัสโหนดเซ็นเซอร์
#รวม
#include //ไลบรารีสำหรับ LoRa #include "DHT.h" #define DHTPIN 4 // ปักหมุดที่ 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 = 0; สตริง LoRaMessage = ""; อุณหภูมิลอยตัว = 0; ความชื้นลอย = 0; // เริ่มต้นโมดูล LoRa เป็นโมฆะ startLoRA () { LoRa.setPins (ss, rst, dio0); // ตั้งค่าโมดูลตัวรับส่งสัญญาณ LoRa ในขณะที่ (!LoRa.begin (BAND) && ตัวนับ < 10) { Serial.print ("."); เคาน์เตอร์++; ล่าช้า (500); } if (ตัวนับ == 10) {// เพิ่ม readID ทุกครั้งที่อ่าน readID ++; Serial.println("การเริ่มต้น LoRa ล้มเหลว!"); } Serial.println ("การเริ่มต้น LoRa ตกลง!"); ล่าช้า (2000); } เป็นโมฆะ 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 ")); } เป็นโมฆะ sendReadings () { LoRaMessage = String (readingID) + "/" + String (อุณหภูมิ) + "&" + String (ความชื้น); //ส่งแพ็กเก็ต LoRa ไปยังเครื่องรับ LoRa.beginPacket(); LoRa.print (LoRaMessage); LoRa.endPacket(); Serial.print("กำลังส่งแพ็กเก็ต: "); Serial.println (รหัสการอ่าน); อ่านID++; Serial.println (LoRaMessage); } การตั้งค่าเป็นโมฆะ () { // เริ่มต้น Serial Monitor Serial.begin (115200); dht.begin(); startDHT(); startLoRA(); } วงเป็นโมฆะ () { getReadings (); sendReadings(); ล่าช้า (500); }
ขั้นตอนที่ 8: ตรวจสอบข้อมูลบนเซิร์ฟเวอร์ Thingspeak
เมื่ออัปโหลดโค้ดแล้ว คุณสามารถเปิด Serial Monitor ได้ทั้งบน Gateway & Sensor Node Circuit คุณจะส่งข้อมูลและรับหากรหัสถูกต้อง ตอนนี้คุณสามารถเยี่ยมชม Thingspeak Private View ได้แล้ว คุณจะเห็นข้อมูลสำหรับ Packet Number, Temperature, Humidity & Gateway อัพโหลดหลังจากช่วงเวลา 15 วินาที
ขั้นตอนที่ 9: การอ้างอิง
1.
2.
แนะนำ:
MuMo - LoRa Gateway: 25 ขั้นตอน (พร้อมรูปภาพ)
MuMo - LoRa Gateway: ### UPDATE 10-03-2021 // ข้อมูลล่าสุด / อัปเดตจะมีอยู่ในหน้า github:https://github.com/MoMu-Antwerp/MuMoWhat is MuMo?MuMo เป็นความร่วมมือระหว่าง การพัฒนาผลิตภัณฑ์ (ภาควิชาของ University of Antwerp) ภายใต้การ
Lora Gateway (Dragino LG01-P): 6 ขั้นตอน
Lora Gateway (Dragino LG01-P): LoRa es una red LPWAN, por sus siglas en inglés (LOW POWER WIDE AREA NETWORK) สิ่งสำคัญที่สุดสำหรับ IoT ก็คือการประหยัดพลังงาน Entre las aplicaciones más comunes se encuentran; เข้าสู่ระบบ Ciudades inteligentes, เกษตร
LoRa Gateway ESP8266 Arduino DIY: 5 ขั้นตอน
LoRa Gateway ESP8266 Arduino DIY: คำแนะนำนี้จะช่วยให้คุณสร้าง LoRa Gateway ที่เข้ากันได้กับ The Things Network สำหรับทุกภูมิภาคทั่วโลกโดยใช้ ESP8266 พร้อมกับโมดูลวิทยุ RFM95/96 มีการจัดเตรียมซอร์สโค้ดเพื่อให้ใช้งานได้และมาพร้อมกับ w
Lora Gateway ที่ใช้ MicroPython ESP32: 10 ขั้นตอน (พร้อมรูปภาพ)
Lora Gateway จาก MicroPython ESP32: Lora ได้รับความนิยมอย่างมากในช่วงไม่กี่ปีที่ผ่านมา โมดูลการสื่อสารไร้สายที่ใช้เทคโนโลยีนี้มักจะราคาถูก (โดยใช้คลื่นความถี่อิสระ) ขนาดเล็ก ประหยัดพลังงาน และมีระยะการสื่อสารที่ยาวนาน และส่วนใหญ่ใช้สำหรับการสื่อสารระหว่างกัน
ควบคุมเครื่องใช้ในบ้านผ่าน LoRa - LoRa ในระบบอัตโนมัติภายในบ้าน - รีโมทคอนโทรล LoRa: 8 ขั้นตอน
ควบคุมเครื่องใช้ในบ้านผ่าน LoRa | LoRa ในระบบอัตโนมัติภายในบ้าน | LoRa Remote Control: ควบคุมและทำให้เครื่องใช้ไฟฟ้าของคุณจากระยะไกล (กิโลเมตร) โดยอัตโนมัติโดยไม่ต้องมีอินเทอร์เน็ต เป็นไปได้ผ่าน LoRa! เฮ้ ว่าไงพวก? Akarsh ที่นี่จาก CETech PCB นี้ยังมีจอแสดงผล OLED และรีเลย์ 3 ตัวซึ่ง