Talaan ng mga Nilalaman:

ESP32 Lora Thingspeak Gateway Sa Sensor Node: 9 Mga Hakbang
ESP32 Lora Thingspeak Gateway Sa Sensor Node: 9 Mga Hakbang

Video: ESP32 Lora Thingspeak Gateway Sa Sensor Node: 9 Mga Hakbang

Video: ESP32 Lora Thingspeak Gateway Sa Sensor Node: 9 Mga Hakbang
Video: Знакомство с платой разработки Heltec LoRa CubeCell HTCC-AB01 2024, Nobyembre
Anonim
ESP32 Lora Thingspeak Gateway Sa Sensor Node
ESP32 Lora Thingspeak Gateway Sa Sensor Node

sa IoT Project na ito, dinisenyo ko ang ESP32 LoRa Gateway at din ang ESP32 LoRa Sensor Node upang subaybayan ang sensor na nagbabasa nang wireless mula sa ilang kilometrong distansya. Basahin ng nagpadala ang data ng kahalumigmigan at temperatura gamit ang DHT11 Sensor. Pagkatapos ay inililipat nito ang data sa pamamagitan ng LoRa Radio. Ang data ay natanggap ng module ng tatanggap. Ang tatanggap ay magpapadala ng data sa Thingspeak Server pagkatapos ng isang tiyak na agwat.

Hakbang 1: Kinakailangan ang Mga Bahagi

1. Lupon ng ESP32 - 2

2. Lora Module SX1278 / SX1276

3. DHT11 Sensor ng Temperatura ng Humidity

4. Breadboard

5. Pagkonekta sa Jumper Wires

Hakbang 2: Pag-install ng Kinakailangan na Mga Aklatan

Kailangan naming i-install muna ang iba't ibang mga silid-aklatan:

1. DHT11 Library

2. LoRa Library

Hakbang 3: ESP32 LoRa Thingspeak Gateway

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

Tingnan natin ngayon ang nagpapadala at circuit ng tatanggap para sa pagbuo ng ESP32 LoRa Gateway & Sensor Node. Pinagsama ko ang parehong circuit sa isang breadboard. Maaari mo itong gawin sa PCB kung nais mo.

Narito ang isang ESP32 LoRa Module SX1278 Gateway Circuit. Ang bahaging ito ay gumagana bilang isang Tagatanggap. Ang data ng halumigmig at temperatura ay natanggap gamit ang LoRa Radio at na-upload sa Thingspeak Server.

Hakbang 4: ESP32 LoRa Sensor Node

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

Narito ang isang ESP32 LoRa Sensor Node Circuit na may DHT11 Sensor. Ang bahaging ito ay gumagana bilang isang transmiter. Ang data ng kahalumigmigan at temperatura ay binabasa ng DHT11 Humidity Temperature Sensor at naipadala gamit ang LoRa Radio.

Hakbang 5: Pag-set up ng Thingspeak

Pagse-set up ng Thingspeak
Pagse-set up ng Thingspeak

Upang masubaybayan ang Data ng Sensor sa Thingspeak Server, kailangan mo munang i-Setup ang Thingspeak. Upang i-set up ang Thingspeak Server, bisitahin ang https://thingspeak.com/. Lumikha ng isang account o simpleng mag-sign in kung nilikha mo ang account nang mas maaga. Pagkatapos ay lumikha ng isang bagong channel na may mga sumusunod na detalye.

Hakbang 6: Code ng Gateway

# isama

// Mga aklatan para sa LoRa # isama ang # isama // tukuyin ang mga pin na ginamit ng module ng LoRa transceiver #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 for Asia, 866E6 for Europe, 915E6 for North America // Palitan ng iyong mga kredensyal sa network String apiKey = "14K8UL2QEK8BTHN6"; // Enter your wrote API key from ThingSpeak const char * ssid = "Wifi SSID"; // palitan ng iyong wifi ssid at wpa2 key const char * password = "Password"; const char * server = "api.thingspeak.com"; Client ng WiFiClient; // Initialize variable upang makuha at mai-save ang LoRa data int rssi; String loRaMessage; Temperatura ng string; String halumigmig; String na pagbasaID; // Pinapalitan ang placeholder ng mga halaga ng DHT String processor (const String & var) {//Serial.println(var); kung (var == "TEMPERATURE") {pagbalik ng temperatura; } iba pa kung (var == "HUMIDITY") {bumalik halumigmig; } iba pa kung (var == "RRSI") {return String (rssi); } ibalik ang String (); } void setup () {Serial.begin (115200); int counter; // setup LoRa transceiver module LoRa.setPins (ss, rst, dio0); // setup LoRa transceiver module habang (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); counter ++; pagkaantala (2000); } kung (counter == 10) {// Ang pagdaragdag ng pagbabasaID sa bawat bagong pagbabasa ng Serial.println ("Nabigo ang Simula ng LoRa!"); } Serial.println ("LoRa Initialization OK!"); pagkaantala (2000); // Kumonekta sa Wi-Fi network na may SSID at password na Serial.print ("Kumokonekta sa"); Serial.println (ssid); WiFi.begin (ssid, password); habang (WiFi.status ()! = WL_CONNected) {pagkaantala (2000); Serial.print ("."); } // I-print ang lokal na IP address at simulan ang web server Serial.println (""); Serial.println ("Konektado ang WiFi."); Serial.println ("IP address:"); Serial.println (WiFi.localIP ()); } // Basahin ang LoRa packet at kunin ang mga pagbasa ng sensor na walang bisa loop () {int packetSize = LoRa.parsePacket (); kung (packetSize) {Serial.print ("Natanggap ang packet ng Lora:"); habang (LoRa.available ()) // Basahin ang packet {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); pagbabasaID = LoRaData.substring (0, pos1); // Kumuha ng temperatura ng pagbabasaID = LoRaData.substring (pos1 +1, pos2); // Kumuha ng halumigmig ng temperatura = LoRaData.substring (pos2 + 1, LoRaData.length ()); // Kumuha ng kahalumigmigan} rssi = LoRa.packetRssi (); // Kumuha ng RSSI Serial.print ("may RSSI"); Serial.println (rssi); } kung (client.connect (server, 80)) // "184.106.153.149" o api.thingspeak.com {String postStr = apiKey; postStr + = "& field1 ="; postStr + = String (readID); postStr + = "& field2 ="; postStr + = String (temperatura); postStr + = "& field3 ="; postStr + = String (halumigmig); postStr + = "& field4 ="; postStr + = String (rssi); postStr + = "\ r / n / r / n / r / n / r / n"; client.print ("POST / update HTTP / 1.1 / n"); client.print ("Host: api.thingspeak.com / n"); client.print ("Koneksyon: isara / n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Uri ng Nilalaman: application / x-www-form-urlencoded / n"); client.print ("Haba ng Nilalaman:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // pagkaantala (30000); }

Hakbang 7: Sensor Node Code

# isama

#include // Library for LoRa #include "DHT.h" #define DHTPIN 4 // pin kung saan ang dht11 ay konektado sa DHT dht (DHTPIN, DHT11); // tukuyin ang mga pin na ginamit ng module ng LoRa transceiver # tukuyin ang ss 5 # tukuyin ang rst 14 #define dio0 2 #define BAND 433E6 // 433E6 for Asia, 866E6 for Europe, 915E6 for North America // packet counter int readingID = 0; int counter = 0; String LoRaMessage = ""; temperatura ng float = 0; float halumigmig = 0; // Initialize LoRa module void startLoRA () {LoRa.setPins (ss, rst, dio0); // setup LoRa transceiver module habang (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); counter ++; pagkaantala (500); } kung (counter == 10) {// Pagdagdag ng pagbabasaID sa bawat bagong pagbabasa ng pagbabasaID ++; Serial.println ("Nabigo ang Simula ng LoRa!"); } Serial.println ("LoRa Initialization OK!"); pagkaantala (2000); } void startDHT () {if (isnan (halumigmig) || isnan (temperatura)) {Serial.println ("Nabigong basahin mula sa sensor ng DHT!"); bumalik; }} void getReadings () {halumigmig = dht.readHumidity (); temperatura = dht.readTemperature (); Serial.print (F ("Humidity:")); Serial.print (halumigmig); Serial.print (F ("% Temperatura:")); Serial.print (temperatura); Serial.println (F ("° C")); } walang bisa ang sendReadings () {LoRaMessage = String (readID) + "/" + String (temperatura) + "&" + String (halumigmig); // Send LoRa packet to receiver LoRa.beginPacket (); LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("Nagpapadala ng packet:"); Serial.println (readingID); pagbabasaID ++; Serial.println (LoRaMessage); } void setup () {// ipasimula ang Serial Monitor Serial.begin (115200); dht.begin (); startDHT (); startLoRA (); } void loop () {getReadings (); sendReadings (); pagkaantala (500); }

Hakbang 8: Subaybayan ang Data sa Thingspeak Server

Subaybayan ang Data sa Thingspeak Server
Subaybayan ang Data sa Thingspeak Server
Subaybayan ang Data sa Thingspeak Server
Subaybayan ang Data sa Thingspeak Server

Kapag na-upload na ang code, maaari mong buksan ang Serial Monitor sa parehong Gateway at Sensor Node Circuit. Magpapadala ka at tatanggap ng data kung tama ang code. Ngayon ay maaari mo nang bisitahin ang Thingspeak Private View. Makikita mo doon ang data para sa Packet Number, Temperatura, Humidity at Gateway na nai-upload pagkatapos ng agwat ng 15 segundo.

Hakbang 9: Mga Sanggunian

1.

2.

Inirerekumendang: