Nem ve Sıcaklık, çiftlik, sera, tıp, endüstri, ev ve ofis gibi birçok yerde ölçüm yapmak için çok yaygın parametrelerdir. Arduino kullanarak Nem ve Sıcaklık Ölçümünü daha önce ele aldık ve verileri LCD'de görüntüledik.
Bu IoT projesinde, ThingSpeak sunucusunu kullanarak mevcut Nem ve Sıcaklık verilerini İnternet üzerinden göstereceğimiz ThingSpeak'i kullanarak internet üzerinden Nem ve Sıcaklığı izleyeceğiz. Arduino, DHT11 Sensör Modülü, ESP8266 WIFI modülü ve LCD arasındaki veri iletişimi ile gerçekleştirilir. Santigrat ölçekli termometre ve yüzde ölçeği nem ölçer, bir LCD ekran aracılığıyla ortam sıcaklığını ve nemi görüntüler ve ayrıca dünyanın herhangi bir yerinden canlı izleme için ThingSpeak sunucusuna gönderir.
Çalışma ve ThingSpeak Kurulumu:
Öncelikle Nem ve Sıcaklık Sensörü DHT11 olmak üzere dört bölümden oluşan bu IoT tabanlı proje Nem ve Sıcaklık Verilerini algılar . İkinci olarak Arduino Uno, DHT11 sensörünün verilerini yüzde ve Santigrat ölçeğinde uygun sayı olarak çıkarır ve Wi-Fi Modülüne gönderir. Üçüncü olarak Wi-Fi Modülü ESP8266, verileri ThingSpeak Sunucusuna gönderir. Ve son olarak ThingSpeak verileri analiz eder ve bir Grafik biçiminde gösterir. Sıcaklık ve Nemi görüntülemek için isteğe bağlı LCD de kullanılır.
ThingSpeak, Arduino için IoT tabanlı projeler için çok iyi bir araç sağlar. ThingSpeak sitesini kullanarak verilerimizi İnternet üzerinden her yerden izleyebilir ve ayrıca ThingSpeak tarafından sağlanan Kanalları ve web sayfalarını kullanarak sistemimizi İnternet üzerinden kontrol edebiliriz. ThingSpeak, sensörlerden gelen verileri 'Toplar', verileri 'Analiz Et ve Görselleştir' ve bir reaksiyonu tetikleyerek 'Eylemler'. Burada ESP8266 WIFI Modülü kullanılarak ThingSpeak sunucusuna nasıl Veri gönderileceğini açıklıyoruz:
1. Her şeyden önce, kullanıcının ThingSpeak.com'da bir Hesap Oluşturması, ardından Oturum Açması ve Başlayın'a tıklaması gerekir.
2. Şimdi 'Kanallar' menüsüne gidin ve daha sonraki işlemler için aynı sayfadaki Yeni Kanal seçeneğini tıklayın.
3. Şimdi kanal oluşturmak için bir form göreceksiniz, seçiminize göre Adı ve Açıklamayı doldurun. Ardından Alan 1 ve Alan 2 etiketlerinde 'Nem' ve 'Sıcaklık' doldurun, her iki Alan için de onay kutularını işaretleyin. Ayrıca aşağıdaki formdaki 'Herkese Açık Yap' seçeneğinin onay kutusunu işaretleyin ve son olarak Kanalı Kaydedin. Şimdi yeni kanalınız oluşturuldu.
4. Şimdi 'API anahtarları' sekmesine tıklayın ve Yazma ve Okuma API anahtarlarını kaydedin, burada sadece Yazma anahtarını kullanıyoruz. Bu anahtarı Kodda char * api_key olarak kopyalamanız gerekir.
5. Bundan sonra, 'Veri İçe Aktarma / Dışa Aktarma'yı tıklayın ve Kanal Besleme GET İsteği Güncelleme URL'sini kopyalayın, bu:
api.thingspeak.com/update?api_key=SIWOYBX26OXQ1WMS&field1=0
Kullanarak “api.thingspeak.com” açık 6. Şimdi kullanıcı ihtiyacı HTTPGet ile işlevini PostUrl olarak “güncelleme? Api_key = SIWOYBX26OXQ1WMS & field1 = 0” ve sonra veri akışının veya güncelleştirme isteği adresini kullanarak veri göndermek.
Verileri göndermeden önce, kullanıcının bu sorgu dizesini veya postUrl'yi aşağıda gösterildiği gibi sıcaklık ve nem veri alanlarıyla düzenlemesi gerekir. Burada, verileri sunucuya göndermek için httpGet'i kullandıktan sonra, sunucuya GET isteği kullanarak göndermemiz gereken dizeye her iki parametreyi de ekledik. Aşağıdaki tam Kodu kontrol edin.
Sprintf (postUrl, "update? Api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80);
Tüm süreç, bu makalenin sonunda Video bölümünde gösterilmektedir.
Bu projenin çalışması, DHT11'den veri almak için tek kablolu seri iletişime dayanmaktadır. Önce Arduino, DHT modülüne bir başlangıç sinyali gönderir ve ardından DHT, verileri içeren bir yanıt sinyali verir. Arduino, verileri önce nem, ikincisi sıcaklık olmak üzere iki kısımda toplayıp çıkarır ve ardından 16x2 LCD ve ThingSpeak sunucusuna gönderir. ThingSpeak, Verileri aşağıdaki gibi Grafik biçiminde görüntüler:
DHT11 Sensörü ve Arduino ile Arayüzü hakkında daha fazla bilgiyi buradan edinebilirsiniz.
Devre Tanımı:
Bu ThingSpeak Sıcaklık ve Nem İzleme Projesi için bağlantılar çok basit. Burada, 4-bit modunda doğrudan Arduino'ya bağlanan Sıcaklık ve Nemi görüntülemek için bir Sıvı Kristal Ekran kullanılır. RS, EN, D4, D5, D6 ve D7 LCD pinleri 14, 15, 16, 17, 18 ve 19 numaralı Arduino dijital pinlerine bağlanır. Bu LCD isteğe bağlıdır.
DHT11 Sensör Modülü, Arduino'nun dijital pin 12'sine bağlanır. Wi-Fi modülü ESP8266 ‘ın Vcc ve GND pinleri doğrudan bağlı olan 3.3 V ve Arduino GND'sine ve CH_PD da 3.3V ile bağlantılıdır. ESP8266'nın Tx ve Rx pinleri doğrudan Arduino'nun 2. ve 3. pinlerine bağlıdır. Yazılım Seri Kitaplığı ayrıca burada Arduino'nun 2. ve 3. pinlerinde seri iletişime izin vermek için kullanılır. ESP8266 Wi-Fi modülünün Arduino ile Arayüzünü ayrıntılı olarak ele aldık.
Programlama Bölümü:
Bu projenin programlama kısmı tüm işlemlerin gerçekleştirilmesinde çok önemli bir rol oynamaktadır. Öncelikle gerekli kitaplıkları ekliyoruz ve değişkenleri başlatıyoruz.
#include "dht.h" // dht için kitaplık dahil #include
Yazma API anahtarınızı girdikten sonra bazı dizeler alın.
char * api_key = "SIWOYBX26OXQ1WMS"; // ThingSpeak statik karakter postUrl'den Write API anahtarınızı girin; int humi, tem; void httpGet (Dize ip, Dize yolu, int bağlantı noktası = 80);
In boşluk döngü () fonksiyonu biz sıcaklık ve nem okur ve daha sonra LCD üzerinde bu okumaları göstermektedir.
Verileri sunucuya göndermek için void send2server () işlevi kullanılır. Send2server işlevi, her 20 saniyede bir arama yapan bir zamanlayıcı kesme servis rutinidir. Güncelleme fonksiyonunu çağırdığımızda, zamanlayıcı kesme servis rutini çağrılır.
void send2server () {char tempStr; char humidStr; dtostrf (tem, 5, 3, tempStr); dtostrf (humi, 5, 3, humidStr); sprintf (postUrl, "update? api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80); }