Obsah:

Pripojenie senzora DHT11/DHT22 k cloudu s doskou založenou na ESP8266: 9 krokov
Pripojenie senzora DHT11/DHT22 k cloudu s doskou založenou na ESP8266: 9 krokov

Video: Pripojenie senzora DHT11/DHT22 k cloudu s doskou založenou na ESP8266: 9 krokov

Video: Pripojenie senzora DHT11/DHT22 k cloudu s doskou založenou na ESP8266: 9 krokov
Video: Программирование модуля датчика температуры и влажности ESP8266 ESP01 DHT11 | удаленныйXY | ФЛПрог 2024, Septembra
Anonim
Pripojenie senzora DHT11/DHT22 k cloudu s doskou založenou na ESP8266
Pripojenie senzora DHT11/DHT22 k cloudu s doskou založenou na ESP8266

V predchádzajúcom článku som svoju dosku NodeMCU založenú na ESP8266 pripojil k službe Cloud4RPi. Teraz je čas na skutočný projekt!

Zásoby

Hardvérové požiadavky:

  • Akákoľvek doska založená na čipe ESP8266 (napríklad NodeMCU)
  • Snímač DHT11 alebo DHT22

Softvér a služby:

  • Knižnica senzorov DHT od spoločnosti Adafruit - v1.3.7
  • Jednotný senzor Adafruit - v1.0.3
  • cloud4rpi-esp-arduino-v0.1.0
  • Cloud4RPI - Ovládací panel v cloude pre zariadenia IoT
  • PlatformIO IDE pre VSCode

Krok 1: Zmerajte teplotu a vlhkosť

Zmerajte teplotu a vlhkosť
Zmerajte teplotu a vlhkosť

Senzor DHT11 som už mal, a tak som sa rozhodol použiť ho na meranie teploty a vlhkosti. Vyberme si knižnicu Arduino na čítanie údajov zo senzorov.

Register Arduino obsahuje niekoľko knižníc, z ktorých som vybral najobľúbenejšiu.

Podľa ich úložiska GitHub sme tiež povinní pridať balík Adafruit Unified Sensor.

Krok 2: Vytvorte a nakonfigurujte projekt

Vytvorte a nakonfigurujte projekt
Vytvorte a nakonfigurujte projekt

V prvej časti som už popísal, ako vytvoriť projekt PlatformIO a nainštalovať knižnice. Môj projekt sa nazýva „MyNodeMCU“. Štruktúra je zobrazená vyššie.

Tento projekt je mierne upraveným príkladom Cloud4RPi. Rozhodol som sa uložiť token zariadenia a poverenia Wi-Fi do konfiguračného súboru namiesto kódu.

Súbor platform.io vyzerá nasledovne:

[platformio] default_envs = nodemcuv2 [env: nodemcuv2] platform = espressif8266 framework = arduino board = nodemcuv2

Krok 3: Nainštalujte si knižnice

Nainštalujte si knižnice
Nainštalujte si knižnice

Inštalácia knižníc je veľmi jednoduchá. Môžete to urobiť z grafického rozhrania IDE alebo pridaním požadovaných názvov knižníc do sekcie lib_deps súboru platform.io:

; … Lib_deps = cloud4rpi -esp -arduino Adafruit Unified Sensor, knižnica build_flags = -D MQTT_MAX_PACKET_SIZE = D CLOUD4RPI_TOKEN = / "_ VAŠE_DEVICE_TOKEN _ \"

Pridané knižnice sa automaticky nainštalujú do podpriečinka projektu.

Hlavička main.cpp vyzerá nasledovne:

#include #include #include #include "DHT.h"

Krok 4: Pripojte snímač DHT11

Adafruit poskytuje príklad pripojenia snímača DHTtester.ino.

Tento kód inicializuje senzor a definuje štruktúru na uloženie výsledku merania (v prípade, že bol úspešný):

#define DHTPIN 2 // Digitálny pin pripojený k senzoru DHT#definovať DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… struct DHT_Result {float h; plávať t; }; DHT_Výsledok dhtVýsledok;

Nasledujúca funkcia ukazuje, ako čítať údaje zo senzorov a ukladať ich do vyššie popísanej dátovej štruktúry

void readSensors () {float h = dht.readHumidity (); // Čítanie teploty ako Celzia (predvolené) float t = dht.readTemperature ();

// Skontrolujte, či niektoré čítanie zlyhalo, a ukončite program

if (isnan (h) || isnan (t)) {Serial.println (F ("Zlyhalo čítanie zo senzora DHT!")); návrat; } dhtResult.h = h; dhtResult.t = t; }

Krok 5: Odosielanie údajov do cloudu

Keď máme tieto údaje k dispozícii, ďalším krokom je ich odoslanie do služby Cloud4RPi.

Stránka Cloud4RPi pre Arduino popisuje API knižnice, čo je sada metód používaných na:

  • vytvárať, čítať a aktualizovať premenné,
  • odosielať hodnoty premenných do cloudu pomocou protokolu MQTT.

Knižnica podporuje tri typy premenných: Bool, Numeric a String.

Pracovný postup knižnice začína vytvorením inštancie API pomocou Tokenu zariadenia z webu cloud4rpi.io (podrobnosti nájdete v časti 1 článku).

#ak je definovaný (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #koniec Ak

Potom deklarujte premenné pre hodnoty DHT11:

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

Potom získajte údaje zo senzora, uložte ich do premenných a zverejnite údaje v službe Cloud4RPi:

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

Teplota a vlhkosť sa nemenia rýchlo, takže odosielanie viac ako jednej hodnoty za 5 minút nie je potrebné.

Krok 6: Diagnostika

Cloud4RPi podporuje diagnostické údaje spolu s hodnotami premenných. Ako diagnostické údaje som použil dobu prevádzky, silu signálu Wi-Fi a adresu IP:

c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // sila signálu WiFi c4r.declareDiagVariable ("Uptime");

Poznámka: Funkcia millis, ktorú používam na získanie resetovania prevádzkyschopnosti na nulu každých ~ 50 dní. Čo je pre môj projekt viac ako dosť.

Nasledujúci kód nastavuje hodnoty diagnostických premenných:

c4r.setDiagVariable ("RSSI", (String) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Address", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Uptime", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();

Funkcia uptimeHumanReadable prevádza milisekundy do vhodnej formy:

Reťazec uptimeHumanReadable (dlhé znamienka bez znamienka) {static char uptimeStr [32]; bez znamienka dlhé sekundy = milisekundy / 1000; bez znamienka dlhé minúty = s / 60; nepodpísané int hodiny = min / 60; nepodpísané int dni = hodiny / 24; s -= minúty * 60; min -= hodiny * 60; hodiny -= dni * 24; sprintf (uptimeStr, "%d dní%2,2d:%2,2d:%2,2d", (bajty) dni, (bajty) hodiny, (bajty) minúty, (bajty) sekundy); return String (uptimeStr); }

Funkcia namiesto podivného veľkého čísla vygeneruje reťazec takto 5 dní 10:23:14.

Krok 7: Spustite a ladte projekt

Spustite a ladite projekt
Spustite a ladite projekt

Po skompilovaní vytvoreného kódu a jeho vložení do NodeMCU sa zariadenie pripojí k cloudovej službe a začne odosielať údaje.

Podrobnosť protokolovania môžete zvýšiť nastavením premennej preprocesora CLOUD4RPI_DEBUG na 1 (pridajte -D CLOUD4RPI_DEBUG = 1 do sekcie build_flags v súbore platform.io).

Potom otvorte webovú stránku cloud4rpi.io a všimnite si nové zariadenie online. Otvorte ho a zobrazte všetky hodnoty premenných prijaté zo zariadenia: senzor a diagnostiku.

Krok 8: Konfigurácia panela

Konfigurácia ovládacieho panela
Konfigurácia ovládacieho panela

V tomto kroku je dátové pripojenie do cloudu funkčné. Teraz nakonfigurujme vizuálnu reprezentáciu údajov.

Na vytvorenie nasledujúceho panela som použil používateľské rozhranie konfigurácie panela.

Palubná doska je zdieľateľná, takže ju okamžite zdieľam so svojim priateľom.

Krok 9: Záver

Záver
Záver

Úplný kód projektu je k dispozícii v jadre.

To je zatiaľ všetko!

Otázky a návrhy sú vítané v komentároch.

Odporúča: