Isi kandungan:

ESP32 Lora Thingspeak Gateway Dengan Sensor Node: 9 Langkah
ESP32 Lora Thingspeak Gateway Dengan Sensor Node: 9 Langkah

Video: ESP32 Lora Thingspeak Gateway Dengan Sensor Node: 9 Langkah

Video: ESP32 Lora Thingspeak Gateway Dengan Sensor Node: 9 Langkah
Video: ESP32 LoRaWAN Gateway tutorial with Sensor Node 2024, November
Anonim
ESP32 Lora Thingspeak Gateway Dengan Sensor Node
ESP32 Lora Thingspeak Gateway Dengan Sensor Node

dalam Projek IoT ini, saya merancang ESP32 LoRa Gateway & juga ESP32 LoRa Sensor Node untuk memantau bacaan sensor tanpa wayar dari jarak beberapa kilometer. Pengirim akan membaca data kelembapan dan suhu menggunakan Sensor DHT11. Kemudian ia menghantar data melalui LoRa Radio. Data diterima oleh modul penerima. Penerima kemudian akan menghantar data ke Thingspeak Server setelah selang waktu tertentu.

Langkah 1: Komponen Diperlukan

1. Papan ESP32 - 2

2. Modul Lora SX1278 / SX1276

3. Sensor Suhu Kelembapan DHT11

4. Papan roti

5. Menyambung Wayar Jumper

Langkah 2: Memasang Perpustakaan yang Diperlukan

Kita perlu memasang perpustakaan yang berbeza terlebih dahulu:

1. Perpustakaan DHT11

2. Perpustakaan LoRa

Langkah 3: ESP32 LoRa Thingspeak Gateway

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

Sekarang mari kita lihat litar pengirim dan penerima untuk membina ESP32 LoRa Gateway & Sensor Node. Saya memasang kedua-dua litar di papan roti. Anda boleh membuatnya di PCB jika anda mahu.

Berikut adalah Litar Gateway Modul ESP32 LoRa SX1278. Bahagian ini berfungsi sebagai Penerima. Data kelembapan dan suhu diterima menggunakan LoRa Radio & dimuat naik ke Thingspeak Server.

Langkah 4: Nod Sensor ESP32 LoRa

Nod Sensor LoRa ESP32
Nod Sensor LoRa ESP32
Nod Sensor ESP32 LoRa
Nod Sensor ESP32 LoRa

Berikut adalah Litar Node Sensor LoRa ESP32 dengan Sensor DHT11. Bahagian ini berfungsi sebagai pemancar. Data kelembapan dan suhu dibaca oleh DHT11 Sensor Suhu Kelembapan dan dihantar menggunakan Radio LoRa.

Langkah 5: Menyiapkan Thingspeak

Menyiapkan Thingspeak
Menyiapkan Thingspeak

Untuk Memantau Data Sensor pada Thingspeak Server, pertama anda perlu Menyiapkan Thingspeak. Untuk menyediakan Pelayan Thingspeak, lawati https://thingspeak.com/. Buat akaun atau masuk sekiranya anda membuat akaun lebih awal. Kemudian buat saluran baru dengan perincian berikut.

Langkah 6: Kod Gateway

#sertakan

// Perpustakaan untuk LoRa #include #include // tentukan pin yang digunakan oleh modul transceiver LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 untuk Asia, 866E6 untuk Eropah, 915E6 untuk Amerika Utara // Ganti dengan kelayakan rangkaian anda String apiKey = "14K8UL2QEK8BTHN6"; // Masukkan kekunci Tulis API anda dari ThingSpeak const char * ssid = "Wifi SSID"; // ganti dengan wifi ssid dan kunci wpa2 const char * password = "Kata Laluan"; const char * server = "api.thingspeak.com"; Pelanggan WiFiClient; // Memulakan pemboleh ubah untuk mendapatkan dan menyimpan data LoRa int rssi; String loRaMessage; Suhu rentetan; Kelembapan tali; Bacaan rentetanID; // Menggantikan placeholder dengan nilai DHT pemproses String (const String & var) {//Serial.println(var); if (var == "SUHU") {suhu kembali; } lain jika (var == "HUMIDITY") {mengembalikan kelembapan; } lain jika (var == "RRSI") {Return String (rssi); } kembali String (); } batal persediaan () {Serial.begin (115200); kaunter int; // persediaan modul transceiver LoRa LoRa.setPins (ss, rst, dio0); // siapkan modul transceiver LoRa sementara (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); kaunter ++; kelewatan (2000); } if (counter == 10) {// Kenaikan bacaanID pada setiap bacaan baru Serial.println ("Memulakan LoRa gagal!"); } Serial.println ("Permulaan LoRa OK!"); kelewatan (2000); // Sambungkan ke rangkaian Wi-Fi dengan SSID dan kata laluan Serial.print ("Menyambung ke"); Serial.println (ssid); WiFi.begin (ssid, kata laluan); sementara (WiFi.status ()! = WL_CONNECTED) {kelewatan (2000); Cetakan bersiri ("."); } // Cetak alamat IP tempatan dan mulakan pelayan web Serial.println (""); Serial.println ("WiFi disambungkan."); Serial.println ("Alamat IP:"); Serial.println (WiFi.localIP ()); } // Baca paket LoRa dan dapatkan pembacaan sensor gelung kosong () {int packetSize = LoRa.parsePacket (); if (packetSize) {Serial.print ("Paket Lora diterima:"); while (LoRa.available ()) // Baca paket {String LoRaData = LoRa.readString (); Serial.print (LoRaData); int pos1 = LoRaData.indexOf ('/'); int pos2 = LoRaData.indexOf ('&'); readID = LoRaData.substring (0, pos1); // Dapatkan suhu readID = LoRaData.substring (pos1 +1, pos2); // Dapatkan kelembapan suhu = LoRaData.substring (pos2 + 1, LoRaData.length ()); // Dapatkan kelembapan} rssi = LoRa.packetRssi (); // Dapatkan RSSI Serial.print ("dengan RSSI"); Serial.println (rssi); } if (client.connect (server, 80)) // "184.106.153.149" atau api.thingspeak.com {String postStr = apiKey; postStr + = "& bidang1 ="; postStr + = Rentetan (ReadingID); postStr + = "& bidang2 ="; postStr + = Rentetan (suhu); postStr + = "& bidang3 ="; postStr + = Rentetan (kelembapan); postStr + = "& bidang4 ="; postStr + = Rentetan (rssi); postStr + = "\ r / n / r / n / r / n / r / n"; client.print ("POST / kemas kini HTTP / 1.1 / n"); client.print ("Host: api.thingspeak.com / n"); client.print ("Sambungan: tutup / n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Content-Type: application / x-www-form-urlencoded / n"); client.print ("Panjang Kandungan:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); } // kelewatan (30000); }

Langkah 7: Kod Nod Sensor

#sertakan

#include // Perpustakaan untuk LoRa #include "DHT.h" # tentukan DHTPIN 4 // pin di mana dht11 disambungkan DHT dht (DHTPIN, DHT11); // tentukan pin yang digunakan oleh modul transceiver LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 // 433E6 untuk Asia, 866E6 untuk Eropah, 915E6 untuk Amerika Utara // packet counter int readingID = 0; kaunter int = 0; Rentetan LoRaMessage = ""; suhu apungan = 0; kelembapan apungan = 0; // Memulakan modul LoRa batal startLoRA () {LoRa.setPins (ss, rst, dio0); // siapkan modul transceiver LoRa sementara (! LoRa.begin (BAND) && counter <10) {Serial.print ("."); kaunter ++; kelewatan (500); } if (kaunter == 10) {// Kenaikan bacaanID pada setiap bacaan bacaan baruID ++; Serial.println ("Memulakan LoRa gagal!"); } Serial.println ("Permulaan LoRa OK!"); kelewatan (2000); } batal startDHT () {if (isnan (kelembapan) || isnan (suhu)) {Serial.println ("Gagal membaca dari sensor DHT!"); kembali; }} batal getReadings () {kelembapan = dht.readHumidity (); suhu = dht.readTemperature (); Serial.print (F ("Kelembapan:")); Cetakan bersiri (kelembapan); Serial.print (F ("% Temperature:")); Cetakan bersiri (suhu); Serial.println (F ("° C")); } batal sendReadings () {LoRaMessage = String (readID) + "/" + String (suhu) + "&" + String (kelembapan); // Hantarkan paket LoRa ke penerima LoRa.beginPacket (); LoRa.print (LoRaMessage); LoRa.endPacket (); Serial.print ("Menghantar paket:"); Serial.println (ReadingID); membacaID ++; Serial.println (LoRaMessage); } batal persediaan () {// memulakan Serial Monitor Serial.begin (115200); dht.begin (); mulaDHT (); mulaLoRA (); } gelung kosong () {getReadings (); hantarBaca (); kelewatan (500); }

Langkah 8: Pantau Data pada Thingspeak Server

Memantau Data pada Pelayan Thingspeak
Memantau Data pada Pelayan Thingspeak
Memantau Data pada Pelayan Thingspeak
Memantau Data pada Pelayan Thingspeak

Setelah kod dimuat naik, anda boleh membuka Serial Monitor di Litar Node Gateway & Sensor. Anda akan menghantar dan menerima data sekiranya kodnya betul. Kini anda boleh mengunjungi Viewpeak Private View. Di sana anda dapat melihat data untuk Nombor Paket, Suhu, Kelembapan & Gerbang dimuat setelah selang 15 saat.

Langkah 9: Rujukan

1.

2.

Disyorkan: