Obsah:
- Zásoby
- Krok 1: Změřte teplotu a vlhkost
- Krok 2: Vytvoření a konfigurace projektu
- Krok 3: Nainstalujte si knihovny
- Krok 4: Připojte snímač DHT11
- Krok 5: Odesílání dat do cloudu
- Krok 6: Diagnostika
- Krok 7: Spusťte a laděte projekt
- Krok 8: Konfigurace řídicího panelu
- Krok 9: Závěr
Video: Připojení senzoru DHT11/DHT22 ke cloudu pomocí desky založené na ESP8266: 9 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
V předchozím článku jsem připojil svoji desku NodeMCU založenou na ESP8266 ke službě Cloud4RPi. Nyní je čas na skutečný projekt!
Zásoby
Hardwarové požadavky:
- Jakákoli deska založená na čipu ESP8266 (například NodeMCU)
- Senzor DHT11 nebo DHT22
Software a služby:
- Knihovna snímačů DHT od Adafruit - v1.3.7
- Sjednocený senzor Adafruit - v1.0.3
- cloud4rpi-esp-arduino-v0.1.0
- Cloud4RPI - cloudový ovládací panel pro zařízení IoT
- PlatformIO IDE pro VSCode
Krok 1: Změřte teplotu a vlhkost
Senzor DHT11 jsem již měl, a tak jsem se rozhodl použít jej pro měření teploty a vlhkosti. Vyberme si knihovnu Arduino pro čtení dat ze senzorů.
Registr Arduino obsahuje několik knihoven, z nichž jsem vybral tu nejoblíbenější.
Podle jejich úložiště GitHub jsme také povinni přidat balíček Adafruit Unified Sensor.
Krok 2: Vytvoření a konfigurace projektu
V první části jsem již popsal, jak vytvořit projekt PlatformIO a nainstalovat knihovny. Můj projekt se nazývá „MyNodeMCU“. Struktura je zobrazena výše.
Tento projekt je mírně upraveným příkladem Cloud4RPi. Rozhodl jsem se uložit token zařízení a pověření Wi-Fi do konfiguračního souboru místo kódu.
Soubor platform.io vypadá následovně:
[platformio] default_envs = nodemcuv2 [env: nodemcuv2] platform = espressif8266 framework = arduino board = nodemcuv2
Krok 3: Nainstalujte si knihovny
Instalace knihoven je celkem jednoduchá. Můžete to udělat z grafického rozhraní IDE nebo přidáním požadovaných názvů knihoven do sekce lib_deps souboru platform.io:
; … Lib_deps = cloud4rpi -esp -arduino Adafruit Unified Sensor knihovna build_flags = -D MQTT_MAX_PACKET_SIZE = D CLOUD4RPI_TOKEN = / "_ VAŠE_DEVICE_TOKEN _ \"
Přidané knihovny budou automaticky nainstalovány do podsložky projektu.
Hlavička main.cpp vypadá následovně:
#include #include #include #include "DHT.h"
Krok 4: Připojte snímač DHT11
Adafruit poskytuje příklad připojení snímače pomocí DHTtester.ino.
Tento kód inicializuje senzor a definuje strukturu pro uložení výsledku měření (v případě, že byl úspěšný):
#define DHTPIN 2 // Digitální pin připojený k senzoru DHT#definovat DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… struct DHT_Result {float h; float t; }; DHT_Result dhtResult;
Další funkce ukazuje, jak číst data ze senzorů a ukládat je do výše popsané datové struktury
void readSensors () {float h = dht.readHumidity (); // Čtení teploty jako Celsia (výchozí) float t = dht.readTemperature ();
// Zkontrolujte, zda některá čtení selhala, a ukončete
if (isnan (h) || isnan (t)) {Serial.println (F ("Failed to reading from DHT sensor!")); vrátit se; } dhtResult.h = h; dhtResult.t = t; }
Krok 5: Odesílání dat do cloudu
Jakmile tato data máme, dalším krokem je jejich odeslání do služby Cloud4RPi.
Stránka Cloud4RPi pro Arduino popisuje API knihovny, což je sada metod používaných k:
- vytvářet, číst a aktualizovat proměnné,
- odesílejte hodnoty proměnných do cloudu pomocí protokolu MQTT.
Knihovna podporuje tři typy proměnných: Bool, Numeric a String.
Pracovní postup knihovny začíná vytvořením instance API pomocí Tokenu zařízení z webu cloud4rpi.io (podrobnosti najdete v části 1 článku).
#if definováno (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #endif
Poté deklarujte proměnné pro hodnoty DHT11:
c4r.declareNumericVariable ("DHT11_Temp"); c4r.declareNumericVariable ("DHT11_Hum");
Poté získejte data ze senzoru, uložte je do proměnných a publikujte data do Cloud4RPi:
c4r.setVariable ("DHT11_Temp", dhtResult.t); c4r.setVariable ("DHT11_Hum", dhtResult.h); c4r.publishData ();
Teplota a vlhkost se nemění rychle, takže odesílání více než jedné hodnoty za 5 minut není nutné.
Krok 6: Diagnostika
Cloud4RPi podporuje diagnostická data spolu s proměnnými hodnotami. Jako diagnostická data jsem použil provozuschopnost, sílu signálu Wi-Fi a IP adresu:
c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // Síla WiFi signálu c4r.declareDiagVariable ("Uptime");
Poznámka: Funkce millis, kterou používám k získání uptime, se resetuje na nulu každých ~ 50 dní. Což je pro můj projekt víc než dost.
Následující kód nastavuje hodnoty diagnostických proměnných:
c4r.setDiagVariable ("RSSI", (String) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Address", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Uptime", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();
Funkce uptimeHumanReadable převádí milisekundy na praktickou formu:
Řetězec uptimeHumanReadable (bez znaménka dlouhé milisekundy) {static char uptimeStr [32]; nepodepsané dlouhé sekundy = milisekundy / 1000; bez znaménka dlouhé min = s / 60; nepodepsané int hodiny = min / 60; nepodepsané int dny = hodiny / 24; s -= min * 60; min -= hodiny * 60; hodiny -= dny * 24; sprintf (uptimeStr, "%d days%2.2d:%2.2d:%2.2d", (byte) days, (byte) hours, (byte) mins, (byte) secs); return String (uptimeStr); }
Funkce místo podivného velkého čísla vygeneruje řetězec takto 5 dní 10:23:14.
Krok 7: Spusťte a laděte projekt
Po kompilaci vytvořeného kódu a jeho flashování do NodeMCU se zařízení připojí ke cloudové službě a začne odesílat data.
Podrobnost protokolování můžete zvýšit nastavením proměnné preprocesoru CLOUD4RPI_DEBUG na 1 (přidejte -D CLOUD4RPI_DEBUG = 1 do sekce build_flags v souboru platform.io).
Dále otevřete web cloud4rpi.io a všimněte si nového zařízení online. Otevřete jej a zobrazte všechny hodnoty proměnných přijaté ze zařízení: senzor a diagnostiku.
Krok 8: Konfigurace řídicího panelu
V tomto kroku je datové připojení ke cloudu funkční. Nyní nakonfigurujme vizuální reprezentaci dat.
Pomocí uživatelského rozhraní konfigurace řídicího panelu jsem vytvořil následující řídicí panel.
Palubní desku lze sdílet, takže ji okamžitě sdílím se svým přítelem.
Krok 9: Závěr
Úplný kód projektu je k dispozici v hlavní části.
To je prozatím vše!
Otázky a návrhy jsou vítány v komentářích.
Doporučuje:
Připojení Arduino WiFi ke cloudu pomocí ESP8266: 7 kroků
Připojení Arduino WiFi ke cloudu pomocí ESP8266: V tomto tutoriálu vám vysvětlíme, jak připojit Arduino ke cloudu IoT přes WiFi. Konfigurujeme nastavení složené z WiFi modulu Arduino a ESP8266 jako věc IoT a připravíme ho ke komunikaci s cloudem AskSensors.L
Základy IoT: Připojení IoT ke cloudu pomocí systému Mongoose OS: 5 kroků
Základy IoT: Připojení vašeho IoT ke cloudu pomocí systému Mongoose OS: Pokud jste člověk, který se zabývá drotářstvím a elektronikou, častěji se setkáte s termínem Internet věcí, obvykle zkráceně IoT, a že označuje sadu zařízení, která se mohou připojit k internetu! Být takovým člověkem
Programově založené rotační solární desky: 9 kroků
Programově založené rotační solární desky: Podle rostoucí populace a potřeby požadujeme větší výkon při nižších výdajích. Navrhli jsme rotační solární desku založenou na programu. Vždy to funguje ve směru intenzity slunečního světla. V této soutěži jsme navrhli speciální typ
Průvodce pro začátečníky k použití senzorů DHT11/ DHT22 W/ Arduino: 9 kroků
Průvodce pro začátečníky k používání snímačů DHT11/ DHT22 W/ Arduino: Tento a další úžasné návody si můžete přečíst na oficiálních webových stránkách ElectroPeak Přehled V tomto tutoriálu se naučíte, jak nastavit snímače DHT11 a DHT22 a měřit teplotu a vlhkost prostředí. Další informace: DHT11 a DHT22
Metody detekce vodní hladiny Arduino pomocí ultrazvukového senzoru a Funduino vodního senzoru: 4 kroky
Metody detekce hladiny vody Arduino pomocí ultrazvukového senzoru a Funduino senzoru vody: V tomto projektu vám ukážu, jak vytvořit levný detektor vody pomocí dvou metod: 1. Ultrazvukový senzor (HC-SR04) .2. Senzor vody Funduino