Sensör Düğümlü ESP32 Lora Thingspeak Gateway: 9 Adım
Sensör Düğümlü ESP32 Lora Thingspeak Gateway: 9 Adım

Video: Sensör Düğümlü ESP32 Lora Thingspeak Gateway: 9 Adım

Video: Sensör Düğümlü ESP32 Lora Thingspeak Gateway: 9 Adım
Video: ESP32 LoRaWAN Gateway tutorial with Sensor Node 2025, Ocak
Anonim
Sensör Düğümlü ESP32 Lora Thingspeak Ağ Geçidi
Sensör Düğümlü ESP32 Lora Thingspeak Ağ Geçidi

Bu IoT Projesinde, sensör okumasını birkaç kilometre mesafeden kablosuz olarak izlemek için ESP32 LoRa Gateway ve ayrıca ESP32 LoRa Sensor Node'u tasarladım. Gönderici, DHT11 Sensörünü kullanarak nem ve sıcaklık verilerini okuyacaktır. Ardından verileri LoRa Radyo aracılığıyla iletir. Veriler alıcı modül tarafından alınır. Alıcı daha sonra belirli bir aralıktan sonra verileri Thingspeak Sunucusuna gönderir.

Adım 1: Gerekli Bileşenler

1. ESP32 Kartı - 2

2. Lora Modülü SX1278/SX1276

3. DHT11 Nem Sıcaklık Sensörü

4. Breadboard

5. Jumper Kablolarının Bağlanması

Adım 2: Gerekli Kitaplıkları Yükleme

Önce farklı kütüphaneler kurmamız gerekiyor:

1. DHT11 Kitaplığı

2. LoRa Kitaplığı

3. Adım: ESP32 LoRa Thingspeak Ağ Geçidi

ESP32 LoRa Thingspeak Ağ Geçidi
ESP32 LoRa Thingspeak Ağ Geçidi
ESP32 LoRa Thingspeak Ağ Geçidi
ESP32 LoRa Thingspeak Ağ Geçidi

Şimdi ESP32 LoRa Ağ Geçidi ve Sensör Düğümü oluşturmak için gönderici ve alıcı devresini görelim. Her iki devreyi de bir breadboard üzerinde topladım. İsterseniz PCB'de yapabilirsiniz.

İşte bir ESP32 LoRa Modülü SX1278 Ağ Geçidi Devresi. Bu kısım Alıcı olarak çalışır. Nem ve sıcaklık verileri LoRa Radyo kullanılarak alınır ve Thingspeak Sunucusuna yüklenir.

Adım 4: ESP32 LoRa Sensör Düğümü

ESP32 LoRa Sensör Düğümü
ESP32 LoRa Sensör Düğümü
ESP32 LoRa Sensör Düğümü
ESP32 LoRa Sensör Düğümü

İşte DHT11 Sensörlü bir ESP32 LoRa Sensör Düğüm Devresi. Bu kısım verici görevi görür. Nem ve sıcaklık verileri DHT11 Nem Sıcaklık Sensörü tarafından okunur ve LoRa Radyo kullanılarak iletilir.

Adım 5: Thingspeak'i Ayarlama

Thingspeak'i Ayarlama
Thingspeak'i Ayarlama

Thingspeak Sunucusundaki Sensör Verilerini İzlemek için öncelikle Thingspeak'i Kurmanız gerekir. Thingspeak Sunucusunu kurmak için https://thingspeak.com/ adresini ziyaret edin. Bir hesap oluşturun veya hesabı daha önce oluşturduysanız oturum açın. Ardından, aşağıdaki ayrıntılarla yeni bir kanal oluşturun.

Adım 6: Ağ Geçidi Kodu

#Dahil etmek

//LoRa için kütüphaneler #include #include //LoRa alıcı-verici modülü tarafından kullanılan pinleri tanımlayın #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 //433E6 Asya için, 866E6 için Avrupa, 915E6 Kuzey Amerika için // Ağ kimlik bilgilerinizle değiştirin String apiKey = "14K8UL2QEK8BTHN6"; // ThingSpeak'ten Write API anahtarınızı girin const char *ssid = "Wifi SSID"; // wifi ssid ve wpa2 anahtarınızla değiştirin const char *password = "Parola"; const char* sunucu = "api.thingspeak.com"; WiFiClient istemcisi; // LoRa verilerini almak ve kaydetmek için değişkenleri başlat int rssi; dize loRaMessage; Tel sıcaklığı; dize nemi; Dize okuma kimliği; // Yer tutucuyu DHT değerleriyle değiştirir String işlemci(const String& var){ //Serial.println(var); if(var == "SICAKLIK") { dönüş sıcaklığı; } else if(var == "NEM") { dönüş nemi; } else if (var == "RRSI") { return String(rssi); } String() döndür; } geçersiz kurulum() { Serial.begin(115200); int sayacı; //LoRa alıcı-verici modülü kurulumu LoRa.setPins(ss, rst, dio0); //LoRa alıcı-verici modülünü kurun while (!LoRa.begin(BAND) && sayacı < 10) { Serial.print("."); sayaç++; gecikme(2000); } if (counter == 10) { // Her yeni okumada okuma kimliğini artır Serial.println("LoRa başlatılamadı!"); } Serial.println("LoRa Başlatma Tamam!"); gecikme(2000); // SSID ve şifre ile Wi-Fi ağına bağlanın Serial.print("Bağlanıyor "); Serial.println(ssid); WiFi.begin(ssid, şifre); while (WiFi.status() != WL_CONNECTED) { gecikme(2000); Seri.print("."); } // Yerel IP adresini yazdırın ve web sunucusunu başlatın Serial.println(""); Serial.println("WiFi bağlandı."); Serial.println("IP adresi: "); Serial.println(WiFi.localIP()); } // LoRa paketini okuyun ve sensör okumalarını alın void loop() { int packageSize = LoRa.parsePacket(); if (packetSize) { Serial.print("Lora paketi alındı: "); while (LoRa.available()) // Paketi oku { String LoRaData = LoRa.readString(); Serial.print(LoRaData); int pos1 = LoRaData.indexOf('/'); int pos2 = LoRaData.indexOf('&'); readID = LoRaData.substring(0, pos1); // Okuma kimliğini al sıcaklık = LoRaData.substring(konum1 +1, konum2); // Sıcaklık nemini al = LoRaData.substring(pos2+1, LoRaData.length()); // Nem alın } rssi = LoRa.packetRssi(); // RSSI Serial.print(" RSSI ile "); Serial.println(rssi); } if (client.connect(sunucu, 80)) // "184.106.153.149" veya api.thingspeak.com { String postStr = apiKey; postStr += "&field1="; postStr += String(readingID); postStr += "&field2="; postStr += Dize(sıcaklık); postStr += "&field3="; postStr += String(nem); postStr += "&field4="; postStr += String(rssi); postStr += "\r\n\r\n\r\n\r\n"; client.print("POST /HTTP/1.1 güncelleme\n"); client.print("Ana Bilgisayar: api.thingspeak.com\n"); client.print("Bağlantı: kapat\n"); client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n"); client.print("Content-Type: application/x-www-form-urlencoded\n"); client.print("İçerik-Uzunluk: "); client.print(postStr.length()); client.print("\n\n"); client.print(postStr); } //gecikme(30000); }

7. Adım: Sensör Düğümü Kodu

#Dahil etmek

#include //LoRa için kütüphaneler #include "DHT.h" #define DHTPIN 4 //dht11'in bağlı olduğu pin DHT dht(DHTPIN, DHT11); //LoRa alıcı-verici modülü tarafından kullanılan pinleri tanımlayın #define ss 5 #define rst 14 #define dio0 2 #define BAND 433E6 //433E6 Asya için, 866E6 Avrupa için, 915E6 Kuzey Amerika için //paket sayacı int okumaID = 0; int sayaç = 0; String LoRaMessage = ""; şamandıra sıcaklığı = 0; yüzer nem = 0; //LoRa modülünü başlat void startLoRA() { LoRa.setPins(ss, rst, dio0); //LoRa alıcı-verici modülünü kurun while (!LoRa.begin(BAND) && sayacı < 10) { Serial.print("."); sayaç++; gecikme(500); } if (counter == 10) { // Her yeni okumada readID'yi artır++; Serial.println("LoRa başlatılamadı!"); } Serial.println("LoRa Başlatma Tamam!"); gecikme(2000); } void startDHT() { if (isnan(nem) || isnan(sıcaklık)) { Serial.println("DHT sensöründen okunamadı!"); dönüş; } } void getReadings(){ nem = dht.readHumidity(); sıcaklık = dht.readTemperature(); Serial.print(F("Nem: ")); Seri.print(nem); Serial.print(F("% Sıcaklık: ")); Serial.print(sıcaklık); Serial.println(F("°C ")); } void sendReadings() { LoRaMessage = String(readingID) + "/" + String(sıcaklık) + "&" + String(nem); //LoRa paketini alıcıya gönder LoRa.beginPacket(); LoRa.print(LoRaMessage); LoRa.endPacket(); Serial.print("Paket Gönderiliyor: "); Serial.println(okuma kimliği); okumaID++; Serial.println(LoRaMessage); } void setup() { //Serial Monitor Serial.begin'i başlat(115200); dht.begin(); startDHT(); startLoRA(); } geçersiz döngü() { getReadings(); sendReadings(); gecikme(500); }

8. Adım: Thingspeak Sunucusundaki Verileri İzleyin

Thingspeak Sunucusundaki Verileri İzleyin
Thingspeak Sunucusundaki Verileri İzleyin
Thingspeak Sunucusundaki Verileri İzleyin
Thingspeak Sunucusundaki Verileri İzleyin

Kod yüklendikten sonra, hem Ağ Geçidi hem de Sensör Düğümü Devresinde Seri Monitörü açabilirsiniz. Kod doğruysa veri gönderip alacaksınız. Artık Thingspeak Private View'i ziyaret edebilirsiniz. 15 saniye sonra Paket Numarası, Sıcaklık, Nem ve Ağ Geçidi verilerinin yüklendiğini görebilirsiniz.

9. Adım: Referanslar

1.

2.