Mündəricat:

Bir DHT11/DHT22 Sensorunu ESP8266 əsaslı bir lövhə ilə buluda bağlamaq: 9 addım
Bir DHT11/DHT22 Sensorunu ESP8266 əsaslı bir lövhə ilə buluda bağlamaq: 9 addım

Video: Bir DHT11/DHT22 Sensorunu ESP8266 əsaslı bir lövhə ilə buluda bağlamaq: 9 addım

Video: Bir DHT11/DHT22 Sensorunu ESP8266 əsaslı bir lövhə ilə buluda bağlamaq: 9 addım
Video: ESP8266 ESP01 DHT11 Temperatur Rütubət Sensor Modulunun Proqramlaşdırılması | RemoteXY | FLProg 2024, Noyabr
Anonim
ESP8266 əsaslı bir lövhə ilə DHT11/DHT22 Sensorunu Buluda Bağlamaq
ESP8266 əsaslı bir lövhə ilə DHT11/DHT22 Sensorunu Buluda Bağlamaq

Əvvəlki məqalədə, ESP8266 əsaslı NodeMCU lövhəmi Cloud4RPi xidmətinə bağladım. İndi real bir layihənin vaxtıdır!

Təchizat

Avadanlıq tələbləri:

  • ESP8266 çipinə əsaslanan hər hansı bir lövhə (məsələn, NodeMCU)
  • DHT11 və ya DHT22 sensoru

Proqram və xidmətlər:

  • Adafruit tərəfindən DHT sensor kitabxanası - v1.3.7
  • Adafruit Vahid Sensor - v1.0.3
  • cloud4rpi-esp-arduino-v0.1.0
  • Cloud4RPI - IoT cihazları üçün bulud idarəetmə paneli
  • VSCode üçün PlatformIO IDE

Addım 1: Temperaturu və Rütubəti ölçün

Rütubət və Temperaturu ölçün
Rütubət və Temperaturu ölçün

Artıq DHT11 sensorum var idi, buna görə temperatur və rütubət ölçmələri üçün istifadə etməyə qərar verdim. Sensor məlumatlarını oxumaq üçün bir Arduino kitabxanası seçək.

Arduino reyestrində ən populyarını seçdiyim bir neçə kitabxana var.

GitHub depolarına görə, bizdən də Adafruit Unified Sensor paketi əlavə etməyimiz tələb olunur.

Addım 2: Layihə yaradın və konfiqurasiya edin

Layihə yaradın və konfiqurasiya edin
Layihə yaradın və konfiqurasiya edin

PlatformIO layihəsinin necə yaradılacağını və birinci hissədə kitabxanaların necə qurulacağını artıq təsvir etmişəm. Layihəm "MyNodeMCU" adlanır. Quruluş yuxarıda göstərilmişdir.

Bu layihə bir az dəyişdirilmiş Cloud4RPi nümunəsidir. Cihaz simvolunu və Wi-Fi etimadnaməsini kod yerinə konfiqurasiya faylında saxlamağa qərar verdim.

Platform.io faylı belə görünür:

[platformio] default_envs = nodemcuv2 [env: nodemcuv2] platform = espressif8266 çərçivə = arduino lövhəsi = nodemcuv2

Addım 3: Kitabxanaları quraşdırın

Kitabxanaları quraşdırın
Kitabxanaları quraşdırın

Kitabxanaların quraşdırılması olduqca sadədir. Bunu IDE -nin qrafik interfeysindən və ya tələb olunan kitabxana adlarını platform.io faylının lib_deps hissəsinə əlavə edərək edə bilərsiniz:

; … Lib_deps = cloud4rpi -esp -arduino Adafruit Birləşdirilmiş Sensor DHT sensorlar kitabxanası build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = "-WD_ID_ID_IF_I_I_I_I_D D CLOUD4RPI_TOKEN = / "_ SİZİN_DİVİK_TOKEN _ \"

Əlavə edilmiş kitabxanalar avtomatik olaraq bir layihənin alt qovluğuna quraşdırılacaq.

Main.cpp başlığı belə görünür:

#daxil edin #əlavə edin "daxil edin" "DHT.h" daxil edin

Addım 4: DHT11 Sensorunu qoşun

Adafruit, DHTtester.ino bir sensor bağlantısı nümunəsi təqdim edir.

Bu kod bir sensoru işə salır və ölçmə nəticəsini saxlamaq üçün bir quruluşu təyin edir (müvəffəqiyyətli olduğu təqdirdə):

#dehine DHTPIN 2 // DHT sensoruna qoşulan rəqəmsal pin#DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… DHT_Result {float h; üzmək t; }; DHT_Result dhtResult;

Növbəti funksiya, sensor məlumatlarının necə oxunacağını və yuxarıda təsvir edilən məlumat strukturunda necə saxlanılacağını göstərir

void readSensors () {float h = dht.readHumidity (); // İstiliyi Celsius olaraq oxuyun (standart) float t = dht.readTemperature ();

// Oxunanların uğursuz olub olmadığını yoxlayın və çıxın

if (isnan (h) || isnan (t)) {Serial.println (F ("DHT sensorundan oxunmadı!")); qayıtmaq; } dhtResult.h = h; dhtResult.t = t; }

Addım 5: Məlumatları Buluda Göndərin

Bu məlumatları əldə etdikdən sonra növbəti addım onu Cloud4RPi xidmətinə göndərməkdir.

Arduino üçün Cloud4RPi səhifəsi, kitabxana API'sini təsvir edir, bu da aşağıdakılar üçün istifadə olunur:

  • dəyişənlər yaratmaq, oxumaq və yeniləmək,
  • MQTT protokolundan istifadə edərək dəyişən dəyərləri buluda göndərin.

Kitabxana üç dəyişən növü dəstəkləyir: Bool, Sayısal və String.

Kitabxana iş axını, cloud4rpi.io veb saytından Cihaz Tokenindən istifadə edərək bir API nümunəsi yaratmaqla başlayır (ətraflı məlumat üçün məqalənin 1 -ci hissəsinə baxın).

#if müəyyən edildikdə (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #başqa Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #endif

Sonra DHT11 oxunuşları üçün dəyişənləri elan edin:

c4r.declareNumericVariable ("DHT11_Temp"); c4r.declareNumericVariable ("DHT11_Hum");

Sonra sensordan məlumat alın, dəyişənlərə qeyd edin və məlumatları Cloud4RPi -də yayımlayın:

c4r.setVariable ("DHT11_Temp", dhtResult.t); c4r.setVariable ("DHT11_Hum", dhtResult.h); c4r.publishData ();

Temperatur və rütubət tez dəyişmir, buna görə 5 dəqiqədə birdən çox dəyər göndərmək lazım deyil.

Addım 6: Diaqnostika

Cloud4RPi, dəyişkən dəyərlərlə birlikdə diaqnostik məlumatları dəstəkləyir. Diaqnostik məlumatlar olaraq iş vaxtı, Wi-Fi siqnal gücü və IP ünvanından istifadə etdim:

c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // WiFi siqnal gücü c4r.declareDiagVariable ("İş vaxtı");

Qeyd: İş vaxtını sıfıra endirmək üçün istifadə etdiyim millis funksiyası hər ~ 50 gündə sıfıra endirilir. Hansı ki, mənim layihəm üçün kifayətdir.

Aşağıdakı kod diaqnostik dəyişən dəyərlərini təyin edir:

c4r.setDiagVariable ("RSSI", (String) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Address", WiFi.localIP (). toString ()); c4r.setDiagVariable ("İş vaxtı", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();

UptimeHumanReadable funksiyası milisaniyələri rahat bir formaya çevirir:

String uptimeHumanReadable (imzasız uzun milisaniyələr) {static char uptimeStr [32]; işarəsiz uzun saniyə = milisaniyə / 1000; işarəsiz uzun dəqiqə = saniyə / 60; işarəsiz int saat = mins / 60; imzasız int gün = saat / 24; saniyə -= dəqiqə * 60; dəqiqə -= saat * 60; saat -= gün * 24; sprintf (uptimeStr, "%d gün%2.2d:%2.2d:%2.2d", (bayt) gün, (bayt) saat, (bayt) dəqiqə, (bayt) saniyə); qayıt String (uptimeStr); }

Funksiya qəribə böyük rəqəm əvəzinə 5 gün 10:23:14 kimi bir simli çıxarır.

Addım 7: Layihəyə başlayın və ayıklayın

Layihəyə Başlayın və Debug Edin
Layihəyə Başlayın və Debug Edin

Yaradılmış kodu tərtib edərək NodeMCU -ya yandırdıqdan sonra cihaz bir bulud xidmətinə qoşulur və məlumat göndərməyə başlayır.

CLOUD4RPI_DEBUG preprocessor dəyişənini 1 olaraq təyin etməklə qeyd verbozluğunu artıra bilərsiniz (platform.io faylında build_flags bölməsinə -D CLOUD4RPI_DEBUG = 1 əlavə edin).

Sonra, cloud4rpi.io saytını açın və yeni cihazı onlayn olaraq qeyd edin. Cihazdan alınan bütün dəyişən dəyərləri görmək üçün açın: sensor və diaqnostika.

Addım 8: Dashboard Konfiqurasiyası

Dashboard Konfiqurasiyası
Dashboard Konfiqurasiyası

Bu mərhələdə, buludla məlumat bağlantısı işləyir. İndi məlumatların vizual təsvirini konfiqurasiya edək.

Aşağıdakı tablosunu yaratmaq üçün Dashboard konfiqurasiya UI -dən istifadə etdim.

Tablosu paylaşıla bilər, buna görə dərhal dostumla paylaşıram.

Addım 9: Nəticə

Nəticə
Nəticə

Layihənin tam kodu özündə mövcuddur.

Hələlik hamısı budur!

Suallar və təkliflər şərhlərdə açıqdır.

Tövsiyə: