
İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-23 15:13

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


Ş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ü


İş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 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


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.
Önerilen:
Düğümlü Toprak Nemlendiricisi: 7 Adım

Düğümlü Toprak Nemlendiricisi: Bu kılavuzda size gardenhealth sistemi için ev yapımı bir toprak sensörünün nasıl yapıldığını göstereceğim. Size neye ihtiyacınız olduğunu göstereceğim, bazı kod örnekleri vereceğim ve kodun nasıl uygulanacağını anlatacağım. Talimatların sonunda bir led şeridin nasıl değiştirileceğini bileceksiniz
UCL-IIoT-Strongbox, RFID ve LCD Ekranlı (Düğümlü, MySQL): 5 Adım

UCL-IIoT-Strongbox with RFID and LCD Screen (Nodered,MySQL): RFID tarayıcılı ve LCD'li Arduino projesi.Giriş Dersimizi mikro denetleyiciler, daha spesifik olarak kullanmakta olduğumuz Arduino Mega ile bitirmek. Arduino Mega'mızı içeren bir proje yapmakla görevlendirildik, bunun dışında
Kırmızı Düğümlü IOT Uzun Menzilli Kablosuz Sıcaklık ve Nem Sensörü: 27 Adım

Node-Red ile IOT Uzun Menzilli Kablosuz Sıcaklık ve Nem Sensörü: Kablosuz ağ mimarisi kullanarak 28 Mil aralığına kadar övünen NCD'nin uzun menzilli kablosuz sıcaklık-nem sensörü ile tanışın. Honeywell HIH9130 sıcaklık-nem sensörünü birleştirmek, son derece hassas sıcaklık ve
Ev Aletlerini LoRa Üzerinden Kontrol Edin - Ev Otomasyonunda LoRa - LoRa Uzaktan Kumanda: 8 Adım

Ev Aletlerini LoRa Üzerinden Kontrol Edin | Ev Otomasyonunda LoRa | LoRa Uzaktan Kumanda: Elektrikli cihazlarınızı internet olmadan uzun mesafelerden (Kilometre) kontrol edin ve otomatikleştirin. Bu LoRa ile mümkün! Naber beyler? Akarsh burada CETech'ten.Bu PCB ayrıca bir OLED ekrana ve 3 röleye sahiptir
Çok Düğümlü LED PWM Lamba Tasarımı: 6 Adım (Resimlerle)

Çok Düğümlü LED PWM Lambası Tasarlama: Bu talimat, bir LED PWM Lamba denetleyicisini nasıl tasarladığımı gösterecektir. Büyük ışık dizileri oluşturmak için birden fazla lamba birbirine asılabilir. Noel için yanıp sönen LED ışıklar oluşturmak her zaman istek listemde olmuştur. Geçen Noel sezonu gerçekten