İçindekiler:
- Gereçler
- Adım 1: Sıcaklığı ve Nemi Ölçün
- Adım 2: Proje Oluşturun ve Yapılandırın
- 3. Adım: Kitaplıkları Yükleyin
- Adım 4: Bir DHT11 Sensörü Bağlayın
- Adım 5: Verileri Buluta Gönderme
- 6. Adım: Teşhis
- 7. Adım: Projeyi Başlatın ve Hata Ayıklayın
- Adım 8: Pano Yapılandırması
- 9. Adım: Sonuç
Video: DHT11/DHT22 Sensörünü Buluta ESP8266 Tabanlı Bir Kartla Bağlama: 9 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Bir önceki yazıda ESP8266 tabanlı NodeMCU kartımı bir Cloud4RPi hizmetine bağlamıştım. Şimdi gerçek bir proje zamanı!
Gereçler
Donanım Gereksinimleri:
- ESP8266 yongasına dayalı herhangi bir kart (örneğin, NodeMCU)
- Bir DHT11 veya DHT22 sensörü
Yazılım ve hizmetler:
- Adafruit'ten DHT sensör kütüphanesi - v1.3.7
- Adafruit Birleşik Sensör - v1.0.3
- cloud4rpi-esp-arduino - v0.1.0
- Cloud4RPI - IoT cihazları için bulut kontrol paneli
- VSCode için PlatformIO IDE
Adım 1: Sıcaklığı ve Nemi Ölçün
Zaten bir DHT11 sensörüm vardı, bu yüzden sıcaklık ve nem ölçümleri için kullanmaya karar verdim. Sensör verilerini okumak için bir Arduino kütüphanesi seçelim.
Arduino kayıt defteri, en popüler olanı seçtiğim birkaç kitaplık içeriyor.
GitHub deposuna göre ayrıca bir Adafruit Birleşik Sensör paketi eklememiz gerekiyor.
Adım 2: Proje Oluşturun ve Yapılandırın
İlk bölümde PlatformIO projesinin nasıl oluşturulacağını ve kitaplıkların nasıl kurulacağını zaten anlatmıştım. Projemin adı “MyNodeMCU”. Yapı yukarıda gösterilmiştir.
Bu proje biraz değiştirilmiş bir Cloud4RPi örneğidir. Cihaz belirtecini ve Wi-Fi kimlik bilgilerini kod yerine yapılandırma dosyasında saklamaya karar verdim.
platform.io dosyası aşağıdaki gibi görünür:
[platformio]default_envs = nodemcuv2[env:nodemcuv2] platform = espressif8266 çerçeve = arduino panosu = nodemcuv2
3. Adım: Kitaplıkları Yükleyin
Kütüphanelerin kurulumu oldukça basittir. Bunu IDE'nin grafik arayüzünden veya platform.io dosyasının lib_deps bölümüne gerekli kitaplık adlarını ekleyerek yapabilirsiniz:
; …lib_deps = cloud4rpi-esp-arduino Adafruit Birleşik Sensör DHT sensör kitaplığı build_flags = -D MQTT_MAX_PACKET_SIZE=1024 -D MQTT_MAX_TRANSFER_SIZE=128 -D CLOUD4RPI_DEBUG=0 -D SSID_NAME=\"_YOUR_WIFI_\" -DASS_WIFI_\" -DASS_WIFI_\" -D MQTT_MAX_TRANSFER_SIZE=128 D CLOUD4RPI_TOKEN=\"_YOUR_DEVICE_TOKEN_\"
Eklenen kitaplıklar, bir projenin alt klasörüne otomatik olarak yüklenecektir.
main.cpp başlığı aşağıdaki gibi görünür:
#include #include #include #include "DHT.h"
Adım 4: Bir DHT11 Sensörü Bağlayın
Adafruit, bir sensör bağlantısının DHTtester.ino örneğini sağlar.
Bu kod, bir sensörü başlatır ve ölçüm sonucunu saklamak için bir yapı tanımlar (başarılı olması durumunda):
#define DHTPIN 2 // DHT sensörüne bağlı dijital pin#define DHTTYPE DHT11 // DHT 11 // … DHT dht(DHTPIN, DHTTYPE); dht.begin(); // … struct DHT_Result { float h; yüzer t; }; DHT_Result dhtResult;
Sonraki fonksiyon, sensör verilerinin nasıl okunacağını ve yukarıda açıklanan veri yapısında nasıl saklanacağını gösterir.
void readSensors() { float h = dht.readHumidity(); // Sıcaklığı Celsius (varsayılan) olarak oku float t = dht.readTemperature();
// Herhangi bir okumanın başarısız olup olmadığını kontrol edin ve çıkın
if (isnan(h) || isnan(t)) { Serial.println(F("DHT sensöründen okunamadı!")); dönüş; } dhtResult.h = h; dhtResult.t = t; }
Adım 5: Verileri Buluta Gönderme
Bu verilere sahip olduktan sonraki adım, onu Cloud4RPi hizmetine göndermektir.
Arduino için Cloud4RPi sayfası, aşağıdakiler için kullanılan bir dizi yöntem olan kütüphane API'sini açıklar:
- değişkenleri oluşturmak, okumak ve güncellemek,
- MQTT protokolünü kullanarak buluta değişken değerler gönderin.
Kitaplık üç değişken türünü destekler: Bool, Numeric ve String.
Kitaplık iş akışı, cloud4rpi.io web sitesindeki Aygıt Simgesini kullanarak bir API örneği oluşturmakla başlar (ayrıntılar için makalenin 1. bölümüne bakın).
#if tanımlı(CLOUD4RPI_TOKEN) Cloud4RPi c4r(CLOUD4RPI_TOKEN); #else Cloud4RPi c4r("!!!_NO_DEVICE_TOKEN_!!!"); #endif
Ardından, DHT11 okumaları için değişkenleri tanımlayın:
c4r.declareNumericVariable("DHT11_Temp");c4r.declareNumericVariable("DHT11_Hum");
Ardından sensörden veri alın, bunları değişkenlere kaydedin ve verileri Cloud4RPi'de yayınlayın:
c4r.setVariable("DHT11_Temp", dhtResult.t);c4r.setVariable("DHT11_Hum", dhtResult.h); c4r.publishData();
Sıcaklık ve nem hızla değişmez, bu nedenle 5 dakikada birden fazla değer gönderilmesine gerek yoktur.
6. Adım: Teşhis
Cloud4RPi, değişken değerlerle birlikte tanılama verilerini destekler. Tanılama verileri olarak çalışma süresini, Wi-Fi sinyal gücünü ve IP adresini kullandım:
c4r.declareDiagVariable("IP_Address");c4r.declareDiagVariable("RSSI"); // WiFi sinyal gücü c4r.declareDiagVariable("Çalışma Süresi");
Not: Çalışma süresi sıfırlamalarını her ~50 günde bir sıfırlamak için kullandığım millis işlevi. Bu benim projem için fazlasıyla yeterli.
Aşağıdaki kod, tanılama değişkeni değerlerini ayarlar:
c4r.setDiagVariable("RSSI", (String)WiFi. RSSI() + " dBm");c4r.setDiagVariable("IP_Adresi", WiFi.localIP().toString()); c4r.setDiagVariable("Çalışma Süresi", uptimeHumanReadable(currentMillis)); c4r.publishDiag();
uptimeHumanReadable işlevi, milisaniyeleri uygun bir forma dönüştürür:
String uptimeHumanReadable(işaretsiz uzun milisaniye) { static char uptimeStr[32]; imzasız uzun saniye = milisaniye / 1000; imzasız uzun dakika = sn / 60; imzasız int saat = dakika / 60; imzasız int gün = saat / 24; saniye -= dakika * 60; dakika -= saat * 60; saat -= gün * 24; sprintf(uptimeStr, "%d gün %2.2d:%2.2d:%2.2d", (bayt)gün, (bayt)saat, (bayt)dakika, (bayt)sn); dönüş String(uptimeStr); }
İşlev, garip bir büyük sayı yerine 5 gün 10:23:14 gibi bir dize çıkarır.
7. Adım: Projeyi Başlatın ve Hata Ayıklayın
Oluşturulan kodu derleyip NodeMCU'ya flashladıktan sonra cihaz bir bulut servisine bağlanır ve veri göndermeye başlar.
CLOUD4RPI_DEBUG önişlemci değişkenini 1 olarak ayarlayarak günlük ayrıntı düzeyini artırabilirsiniz (platform.io dosyasındaki build_flags bölümüne -D CLOUD4RPI_DEBUG=1 ekleyin).
Ardından cloud4rpi.io sitesini açın ve yeni cihazı çevrimiçi olarak görün. Cihazdan alınan tüm değişken değerleri görmek için açın: sensör ve teşhis.
Adım 8: Pano Yapılandırması
Bu adımda, buluta veri bağlantısı çalışır durumdadır. Şimdi, verilerin görsel temsilini yapılandıralım.
Aşağıdaki panoyu oluşturmak için Pano yapılandırma kullanıcı arayüzünü kullandım.
Pano paylaşılabilir, bu yüzden anında arkadaşımla paylaşıyorum.
9. Adım: Sonuç
Tam projenin kodu, özde mevcuttur.
Şimdilik bu kadar!
Sorular ve öneriler yorumlara açıktır.
Önerilen:
Node.js Kullanarak Raspberry Pi'yi Buluta Bağlama: 7 Adım
Node.js Kullanarak Raspberry Pi'yi Buluta Bağlama: Bu eğitim, bir Raspberry Pi'yi buluta, özellikle de Node.js kullanarak AskSensors IoT platformuna bağlamak isteyen herkes için yararlıdır. Raspberry Pi'niz yok mu? Şu anda bir Raspberry Pi'niz yoksa Raspberry Pi almanızı tavsiye ederim
Arduino WiFi'yi ESP8266 Kullanarak Buluta Bağlama: 7 Adım
Arduino WiFi'yi ESP8266 Kullanarak Buluta Bağlama: Bu dersimizde Arduino'nuzu WiFi üzerinden IoT bulutuna nasıl bağlayacağınızı anlatacağız.Arduino ve ESP8266 WiFi modülünden oluşan bir kurulumu IoT Thing olarak yapılandırıp hazır hale getireceğiz. AskSensors cloud.L ile iletişim kurmak için
Raspberry Pi3 ve DHT11 Sensörünü Kullanan Hava Durumu İzleme Sistemi: 4 Adım
Raspberry Pi3 ve DHT11 Sensörünü Kullanan Hava Durumu İzleme Sistemi: Bu derste, DHT11'i Raspberry Pi'ye nasıl bağlayacağınızı ve nem ve sıcaklık okumalarını bir LCD'ye nasıl çıkaracağınızı göstereceğim. DHT11 sıcaklık ve nem sensörü hoş bir küçük modüldür. Dijital sıcaklık ve nem sağlayan
IoT Temelleri: Mongoose OS Kullanarak IoT'nizi Buluta Bağlama: 5 Adım
IoT Temelleri: Mongoose OS Kullanarak IoT'nizi Buluta Bağlama: Tamircilik ve elektronikle ilgilenen biriyseniz, genellikle IoT olarak kısaltılan Nesnelerin İnterneti terimiyle karşılaşırsınız ve internete bağlanabilen bir dizi cihazı ifade eder! Böyle bir insan olmak
DHT11 ile ESP32 Tabanlı M5Stack M5stick C Hava Durumu Monitörü - DHT11 ile M5stick-C'de Sıcaklık Nem ve Isı İndeksini İzleme: 6 Adım
DHT11 ile ESP32 Tabanlı M5Stack M5stick C Hava Durumu Monitörü | DHT11 ile M5stick-C'de Sıcaklık Nem ve Isı İndeksini İzleme: Merhaba arkadaşlar, bu talimatta DHT11 sıcaklık sensörünün m5stick-C (m5stack tarafından geliştirilen bir geliştirme kartı) ile nasıl arayüzleneceğini ve m5stick-C ekranında nasıl görüntüleneceğini öğreneceğiz. Bu eğitimde sıcaklık, nem ve sıcaklık değerlerini okuyacağız; ısı ben