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: [Part I] ESP32 LoRa Sensor monitoring with Embedded Web Server 2025, Januari
Anonim
ESP32 Lora Thingspeak Gateway Dengan Sensor Node
ESP32 Lora Thingspeak Gateway Dengan Sensor Node

dalam Proyek IoT ini, saya merancang ESP32 LoRa Gateway & juga ESP32 LoRa Sensor Node untuk memantau pembacaan sensor secara nirkabel dari jarak beberapa kilometer. Pengirim akan membaca data kelembaban dan suhu menggunakan Sensor DHT11. Kemudian mengirimkan data melalui LoRa Radio. Data diterima oleh modul penerima. Penerima kemudian akan mengirimkan data ke Thingspeak Server setelah selang waktu tertentu.

Langkah 1: Komponen Diperlukan

1. Papan ESP32 - 2

2. Modul Lora SX1278/SX1276

3. Sensor Suhu Kelembaban DHT11

4. Papan tempat memotong roti

5. Menghubungkan Kabel Jumper

Langkah 2: Memasang Pustaka yang Diperlukan

Kita perlu menginstal perpustakaan yang berbeda 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 rangkaian pengirim dan penerima untuk membangun ESP32 LoRa Gateway & Sensor Node. Saya merakit kedua sirkuit di papan tempat memotong roti. Anda dapat membuatnya di PCB jika Anda mau.

Berikut adalah Rangkaian Gateway ESP32 LoRa Module SX1278. Bagian ini berfungsi sebagai Penerima. Data kelembaban dan suhu diterima menggunakan Radio LoRa & diunggah ke Server Thingspeak.

Langkah 4: Node Sensor LoRa ESP32

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

Berikut adalah Rangkaian Node Sensor LoRa ESP32 dengan Sensor DHT11. Bagian ini berfungsi sebagai pemancar. Data kelembaban dan suhu dibaca oleh DHT11 Humidity Temperature Sensor dan ditransmisikan menggunakan Radio LoRa.

Langkah 5: Menyiapkan Thingspeak

Menyiapkan Thingspeak
Menyiapkan Thingspeak

Untuk Memantau Data Sensor di Server Thingspeak, Anda harus terlebih dahulu mengatur Thingspeak. Untuk mengatur Server Thingspeak, kunjungi https://thingspeak.com/. Buat akun atau cukup masuk jika Anda membuat akun sebelumnya. Kemudian buat saluran baru dengan detail berikut.

Langkah 6: Kode Gerbang

#termasuk

//Libraries untuk LoRa #include #include //menentukan pin yang digunakan oleh modul transceiver LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 //433E6 untuk Asia, 866E6 untuk Eropa, 915E6 untuk Amerika Utara // Ganti dengan kredensial jaringan Anda String apiKey = "14K8UL2QEK8BTHN6"; // Masukkan kunci API Tulis Anda dari ThingSpeak const char *ssid = "Wifi SSID"; // ganti dengan ssid wifi Anda dan kunci wpa2 const char *password = "Password"; const char* server = "api.thingspeak.com"; Klien WiFiClient; // Inisialisasi variabel untuk mendapatkan dan menyimpan data LoRa int rssi; String loRaMessage; Suhu tali; Kelembaban tali; ID pembacaan string; // Mengganti placeholder dengan nilai DHT Prosesor string(const String& var){ //Serial.println(var); if(var == "TEMPERATURE") { mengembalikan suhu; } else if(var == "HUMIDITY") { mengembalikan kelembapan; } else if (var == "RRSI") { return String(rssi); } mengembalikan String(); } batalkan pengaturan() { Serial.begin(115200); penghitung int; //setup modul transceiver LoRa LoRa.setPins(ss, rst, dio0); //setup modul transceiver LoRa while (!LoRa.begin(BAND) && counter < 10) { Serial.print("."); penghitung++; penundaan(2000); } if (counter == 10) { // Menambah readID pada setiap pembacaan baru Serial.println("Memulai LoRa gagal!"); } Serial.println("Inisialisasi LoRa Oke!"); penundaan(2000); // Hubungkan ke jaringan Wi-Fi dengan SSID dan kata sandi Serial.print("Menghubungkan ke "); Serial.println(ssid); WiFi.begin(ssid, kata sandi); while (WiFi.status() != WL_CONNECTED) { delay(2000); Serial.print("."); } // Cetak alamat IP lokal dan jalankan server web Serial.println(""); Serial.println("WiFi terhubung."); Serial.println("Alamat IP: "); Serial.println(WiFi.localIP()); } // Baca paket LoRa dan dapatkan pembacaan sensor void loop() { 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 suhu kelembaban = 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 += "&field1="; postStr += String(readingID); postStr += "&field2="; postStr += String(suhu); postStr += "&field3="; postStr += String(kelembaban); 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("Koneksi: tutup\n"); client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n"); client.print("Jenis Konten: application/x-www-form-urlencoded\n"); client.print("Panjang Konten: "); client.print(postStr.length()); klien.print("\n\n"); klien.print(postStr); } //tunda(30000); }

Langkah 7: Kode Node Sensor

#termasuk

#include //Libraries untuk LoRa #include "DHT.h" #define DHTPIN 4 //pin dimana dht11 terhubung DHT dht(DHTPIN, DHT11); //menentukan pin yang digunakan oleh modul transceiver LoRa #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 //433E6 untuk Asia, 866E6 untuk Eropa, 915E6 untuk Amerika Utara //penghitung paket int readingID = 0; int penghitung = 0; String LoRaMessage = ""; suhu mengambang = 0; kelembaban mengambang = 0; //Inisialisasi modul LoRa void startLoRA() { LoRa.setPins(ss, rst, dio0); //setup modul transceiver LoRa while (!LoRa.begin(BAND) && counter < 10) { Serial.print("."); penghitung++; penundaan (500); } if (counter == 10) { // Menambah readID pada setiap readingID++ yang baru; Serial.println("Memulai LoRa gagal!"); } Serial.println("Inisialisasi LoRa Oke!"); penundaan(2000); } void startDHT() { if (isnan(kelembaban) || isnan(suhu)) { Serial.println("Gagal membaca dari sensor DHT!"); kembali; } } void getReadings(){ kelembaban = dht.readHumidity(); suhu = dht.readTemperature(); Serial.print(F("Kelembaban: ")); Serial.print(kelembaban); Serial.print(F("% Suhu: ")); Serial.print(suhu); Serial.println(F("°C")); } void sendReadings() { LoRaMessage = String(readingID) + "/" + String(suhu) + "&" + String(kelembaban); //Kirim paket LoRa ke penerima LoRa.beginPacket(); LoRa.print(LoRaMessage); LoRa.endPacket(); Serial.print("Mengirim paket: "); Serial.println(readingID); membacaID++; Serial.println(LoRaMessage); } void setup() { //inisialisasi Serial Monitor Serial.begin(115200); dht.mulai(); mulaiDHT(); startLoRA(); } void loop() { getReadings(); kirimBaca(); penundaan (500); }

Langkah 8: Pantau Data di Server Thingspeak

Memantau Data di Server Thingspeak
Memantau Data di Server Thingspeak
Memantau Data di Server Thingspeak
Memantau Data di Server Thingspeak

Setelah kode diunggah, Anda dapat membuka Serial Monitor di Sirkuit Gateway & Sensor Node. Anda akan mengirim dan menerima data jika kodenya benar. Sekarang Anda dapat mengunjungi Thingspeak Private View. Di sana Anda dapat melihat data Nomor Paket, Suhu, Kelembaban & Gerbang yang diunggah setelah interval 15 detik.

Langkah 9: Referensi

1.

2.