- Gerekli Bileşenler
- Devre şeması
- DHT11 Sıcaklık ve Nem Sensörü
- Programlama NodeMCU ESP8266 Canlı Sıcaklık ve Nem İzleme
Mikrodenetleyiciler, sensörlerin oluşturduğu verileri uzun süre kaydetmek için yeterli olmayan küçük dahili belleğe sahiptir, ya bir miktar harici bellek cihazı kullanmanız gerekir ya da verileri internet kullanarak bir buluta kaydedebilirsiniz. Ayrıca, bazen, sensör, insanların ulaşamayacağı bazı aşırı koşullarda yerleştirildiğinde veya orayı sık sık ziyaret etmenin zor olduğu durumlarda yönetilmesi zorlaşır. Bu tür sorunları gidermek için her zaman sensör verilerini gerçek zamanlı olarak herhangi bir yerde fiziksel bir varlık olmaksızın herhangi bir yerden izlemek istediğimiz yolları araştırıyoruz.
Gerçek zamanlı veri tabanları biz sadece internete bağlanabilir bazı denetleyicisi arabirimi kullanmak zorunda ve bulut sunucu ile veri alışverişi mümkün nerede bu senaryoda kullanılabilir. Sunucu verileri, gerçek zamanlı sistem davranışının izlenmesinde, veritabanı analitiğinde, istatistiksel analiz ve işlemede ve gelecekteki kullanım durumu için yorumlamada yararlı olabilir. Bu amaca hizmet edecek çok sayıda IoT Donanım Platformu ve Bulut platformu vardır. IoT uygulamanız için doğru Platformu bulmada zorluk yaşarsanız, bağlantıyı takip edin.
Daha önce ThingSpeak, Adafruit IO ve diğer birçok IoT yazılımını ele almıştık. Bugün, Google'ın Firebase veritabanı sunucusunda gerçek zamanlı olarak sıcaklık ve nemi kaydetmek için bir sıcaklık ve nem sensörü DHT11 ve bir NodeMCU ESP8266 Modülü kullanacağımız benzer bir proje oluşturacağız.
Projeyi iki bölüme ayıracağız. İlk olarak, donanım bileşenlerini bir araya getirip ürün yazılımını ona yükleyerek başlayacağız. İkinci olarak, gerçek zamanlı veri alışverişi yapmak için NodeMCU ile kurulum yapmak için Firebase'i kullanacağız. ESP8266 veya Firebase'de yeniyseniz, Firebase kullanarak LED'i kontrol etme hakkındaki önceki eğiticimizi izleyin.
Gerekli Bileşenler
- NodeMCU ESP8266 Modülü
- DHT11 Sıcaklık ve Nem sensörü
Devre şeması
DHT11 Sıcaklık ve Nem Sensörü
DHT11 modülü, kalibre edilmiş dijital sinyal çıkışlı bir nem ve sıcaklık kompleksine sahiptir, DHT11 sensör modülü, kalibre edilmiş bir dijital çıkış sinyali veren nem ve sıcaklığı algılamak için birleşik bir modüldür. DHT11 bize çok hassas nem ve sıcaklık değeri verir ve yüksek güvenilirlik ve uzun vadeli istikrar sağlar. Bu sensör, dirençli tipte bir nem ölçüm bileşenine ve dahili 8-bit mikro denetleyiciye sahip NTC tipi sıcaklık ölçüm bileşenine sahiptir.
Daha önce web sunucusundaki DHT11 okumalarını güncellemek için ESP12E'yi kullandık, bunun dışında, DHT11'i Arduino, PIC, Raspberry gibi diğer birçok mikrodenetleyici ile arayüz için kullandığımız DHT11 tabanlı projeleri kontrol edebilirsiniz ve bunları kullanarak hava durumu istasyonu inşa edebilirsiniz.
Programlama NodeMCU ESP8266 Canlı Sıcaklık ve Nem İzleme
Sonunda video ile birlikte eksiksiz bir program verilmektedir. Burada kodun birkaç önemli bölümünü açıklıyoruz.
İlk olarak ESP8266 ve firebase kullanmak için kitaplıkları ekleyin.
#Dahil etmek
Aşağıdaki bağlantıları izleyerek kitaplıkları indirin ve kurun:
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
Derleme sırasında ArduinoJson.h kütüphanesinin kurulu olmadığına dair bir hata alırsanız, lütfen yukarıda verilen bağlantıyı kullanarak kurun.
NodeMCU'yu DHT11 sensöründen okuma alacak ve her 5 saniyede bir Firebase'e itecek şekilde programlayacağız. Veri aktarımı için bir yol belirleyeceğiz. Şu anda iki parametre yani. nem ve sıcaklık aynı ana yol ve farklı çocuk yolu üzerinden gönderilir.
Bu iki parametre, firebase ile iletişim kurmak için çok önemlidir. Bu parametreleri ayarlamak, ile ESP8266 ve firebase arasında veri alışverişini etkinleştirir. Projeniz için bu parametreleri bulmak üzere Firebase Kurulumu ile ilgili önceki eğiticimizi izleyin.
#define FIREBASE_HOST "projeniz.firebaseio.com" // firebase kimliğinden proje adı adresi #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // firebase'den oluşturulan gizli anahtar
Kimlik bilgilerini başarıyla bulduktan sonra, sadece yukarıdaki kodu değiştirin.
Ağınıza bağlanmak için Wi-Fi SSID'nizi ve Şifrenizi girin.
#define WIFI_SSID "network_name" // evinizin veya herkese açık kablosuz ağınızın adını girin #define WIFI_PASSWORD "password" // wifi ssid şifresi
NodeMCU'da DHT veri pinini tanımlayın. NodeMCU'da herhangi bir Dijital GPIO pinini kullanabilirsiniz.
#define DHTPIN D4
DHT kitaplığı, tüm DHT varyantları için yapılır ve örneğin DHT11 veya DHT22 için kullanmak istediğiniz DHT sensörüyle birlikte gelir. Doğru DHT sensörünü seçin ve devam edin.
#define DHTTYPE DHT11 // dht türünü DHT 11 veya DHT22 DHT dht (DHTPIN, DHTTYPE) olarak seçin;
Seçilen Wi-Fi ağına ve ayrıca firebase veritabanı sunucusuna bağlanın.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
NodeMCU’nun D4 pininden okumaya başlayın.
dht.begin ();
DHT sensöründen nem ve sıcaklık okumalarını alın ve şamandıra değeri olarak kaydedin.
float h = dht.readHumidity (); // Sıcaklık veya nem okumak yaklaşık 250 milisaniye sürer! float t = dht.readTemperature (); // Sıcaklığı Santigrat olarak okuyun (varsayılan)
Sadece DHT sensörünün düzgün bağlandığını veya hasarlı olup olmadığını kontrol edin ve kontrolör buradan okumaları okuyabilir. Okumalar görünmüyorsa muhtemelen sensör hasar görmüştür, sadece bir hata mesajı gösterin ve devam etmeden tekrar kontrol etmek için geri dönün.
if (isnan (h) - isnan (t)) {// Herhangi bir okumanın başarısız olup olmadığını kontrol edin ve erken çıkın (tekrar denemek için). Serial.println (F ("DHT sensöründen okunamadı!")); dönüş; }
Hata ayıklama için sensör verilerini seri monitörde yazdırın ve bunu firebase'e göndermek için sıcaklık ve nem değerlerini dizi biçiminde kaydedin. Ayrıca DHT11 sensöründen gelen iki okuma arasında gereken minimum gecikmenin 2 saniye olduğunu unutmayın, bu nedenle her zaman 2 saniyeden fazla gecikme kullanın. DHT11 hakkında daha fazla bilgi edinmek için resmi veri sayfasına bakabilirsiniz.
Serial.print ("Nem:"); Seri. Baskı (h); String fireHumid = String (h) + String ("%"); // tamsayı nemini dizi nemine dönüştür Serial.print ("% Sıcaklık:"); Seri baskı (t); Serial.println ("° C"); String fireTemp = String (t) + String ("° C"); gecikme (4000);
Son olarak, sıcaklık ve nem verilerini "projeniz.firebaseio.com/DHT11/Humidity/" yolunda firebase'e gönderin.
Firebase.pushString ("/ DHT11 / Nem", fireHumid); // yolu ayarlayın ve okumaları gönderin Firebase.pushString ("/ DHT11 / Temperature", fireTemp); // yolu ayarla ve okumaları gönder
Firebase hesabınızda tüm verileri görebilirsiniz. Sadece “gidin Veritabanı ” in “bölümünde Projenizle ” at “ My konsolda Firebase In”.
Verileri göndermek ve izlemek üzere Firebase'i kurmak için önceki eğiticimize bakabilirsiniz.
Bu IoT tabanlı sıcaklık ve Nem izleme için eksiksiz kod ve video aşağıda verilmiştir.