Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Zmierz temperaturę i wilgotność
- Krok 2: Utwórz i skonfiguruj projekt
- Krok 3: Zainstaluj biblioteki
- Krok 4: Podłącz czujnik DHT11
- Krok 5: Wysyłanie danych do chmury
- Krok 6: Diagnostyka
- Krok 7: Rozpocznij i debuguj projekt
- Krok 8: Konfiguracja pulpitu nawigacyjnego
- Krok 9: Wniosek
Wideo: Podłączanie czujnika DHT11/DHT22 do chmury za pomocą płyty opartej na ESP8266: 9 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
W poprzednim artykule podłączyłem moją płytkę NodeMCU opartą na ESP8266 z usługą Cloud4RPi. Teraz czas na prawdziwy projekt!
Kieszonkowe dzieci
Wymagania sprzętowe:
- Dowolna płyta oparta na chipie ESP8266 (na przykład NodeMCU)
- Czujnik DHT11 lub DHT22
Oprogramowanie i usługi:
- Biblioteka czujników DHT autorstwa Adafruit - v1.3.7
- Zunifikowany czujnik Adafruit - v1.0.3
- cloud4rpi-esp-arduino - v0.1.0
- Cloud4RPI - Panel sterowania w chmurze dla urządzeń IoT
- PlatformIO IDE dla VSCode
Krok 1: Zmierz temperaturę i wilgotność
Miałem już czujnik DHT11, więc postanowiłem go wykorzystać do pomiarów temperatury i wilgotności. Wybierzmy bibliotekę Arduino do odczytu danych z czujników.
Rejestr Arduino zawiera kilka bibliotek, z których wybrałem najpopularniejszą.
Zgodnie z ich repozytorium GitHub, jesteśmy również zobowiązani do dodania pakietu Adafruit Unified Sensor.
Krok 2: Utwórz i skonfiguruj projekt
Opisałem już jak stworzyć projekt PlatformIO i zainstalować biblioteki w pierwszej części. Mój projekt nazywa się „ MyNodeMCU”. Struktura pokazana jest powyżej.
Ten projekt jest nieco zmodyfikowanym przykładem Cloud4RPi. Zdecydowałem się przechowywać token urządzenia i dane uwierzytelniające Wi-Fi w pliku konfiguracyjnym zamiast kodu.
Plik platform.io wygląda następująco:
[platformio]default_envs = nodemcuv2[env:nodemcuv2] platforma = espressif8266 framework = arduino board = nodemcuv2
Krok 3: Zainstaluj biblioteki
Instalacja bibliotek jest dość prosta. Możesz to zrobić z interfejsu graficznego IDE lub dodając wymagane nazwy bibliotek do sekcji lib_deps pliku platform.io:
; …lib_deps = cloud4rpi-esp-arduino Biblioteka czujników Adafruit Unified Sensor DHT build_flags = -D MQTT_MAX_PACKET_SIZE=1024 -D MQTT_MAX_TRANSFER_SIZE=128 -D CLOUD4RPI_DEBUG=0 -D SSID_NAME=\"_YOUR_WIFI_P_ASS_WOO D CLOUD4RPI_TOKEN=\"_TWOJE_URZĄDZENIE_TOKEN_\"
Dodane biblioteki zostaną automatycznie zainstalowane w podfolderze projektu.
Nagłówek main.cpp wygląda następująco:
#include #include #include #include "DHT.h"
Krok 4: Podłącz czujnik DHT11
Adafruit dostarcza przykład DHTtester.ino podłączenia czujnika.
Ten kod inicjalizuje czujnik i definiuje strukturę do przechowywania wyniku pomiaru (w przypadku, gdyby się powiódł):
#define DHTPIN 2 // Cyfrowy pin podłączony do czujnika DHT#define DHTTYPE DHT11 // DHT 11 // … DHT dht(DHTPIN, DHTTYPE); dht.początek(); // … struct DHT_Result { float h; pływak t; }; DHT_Result dhtResult;
Następna funkcja pokazuje, jak odczytać dane z czujnika i zapisać je w opisanej powyżej strukturze danych
void readSensors() { float h = dht.readHumidity(); // Odczytaj temperaturę w stopniach Celsjusza (domyślnie) float t = dht.readTemperature();
// Sprawdź, czy jakiekolwiek odczyty nie powiodły się i wyjdź
if (isnan(h) || isnan(t)) { Serial.println(F("Nie udało się odczytać z czujnika DHT!")); powrót; } dhtResult.h = h; dhtWynik.t = t; }
Krok 5: Wysyłanie danych do chmury
Gdy już mamy te dane, kolejnym krokiem jest przesłanie ich do usługi Cloud4RPi.
Strona Cloud4RPi for Arduino opisuje bibliotekę API, która jest zbiorem metod służących do:
- tworzyć, czytać i aktualizować zmienne,
- wyślij wartości zmiennych do chmury za pomocą protokołu MQTT.
Biblioteka obsługuje trzy typy zmiennych: Bool, Numeric i String.
Obieg pracy biblioteki rozpoczyna się od utworzenia instancji API przy użyciu Device Token ze strony cloud4rpi.io (szczegóły w części 1 artykułu).
#jeśli zdefiniowano(CLOUD4RPI_TOKEN) Cloud4RPi c4r(CLOUD4RPI_TOKEN); #else Cloud4RPi c4r("!!!_NO_DEVICE_TOKEN_!!!"); #endif
Następnie zadeklaruj zmienne dla odczytów DHT11:
c4r.declareNumericVariable("DHT11_Temp");c4r.declareNumericVariable("DHT11_Hum");
Następnie pobierz dane z czujnika, zapisz je w zmiennych i opublikuj dane w Cloud4RPi:
c4r.setVariable("DHT11_Temp", dhtResult.t);c4r.setVariable("DHT11_Hum", dhtResult.h); c4r.publishData();
Temperatura i wilgotność nie zmieniają się szybko, więc wysyłanie więcej niż jednej wartości na 5 minut nie jest wymagane.
Krok 6: Diagnostyka
Cloud4RPi obsługuje dane diagnostyczne wraz z wartościami zmiennych. Użyłem uptime, siły sygnału Wi-Fi i adresu IP jako danych diagnostycznych:
c4r.declareDiagVariable("Adres_IP");c4r.declareDiagVariable("RSSI"); // Siła sygnału WiFi c4r.declareDiagVariable("Uptime");
Uwaga: funkcja millis, której używam, aby uzyskać czas pracy bez przestojów, resetuje się do zera co ~50 dni. Co jest więcej niż wystarczające dla mojego projektu.
Poniższy kod ustawia wartości zmiennych diagnostycznych:
c4r.setDiagVariable("RSSI", (String)WiFi. RSSI() + " dBm");c4r.setDiagVariable("Adres_IP", WiFi.localIP().toString()); c4r.setDiagVariable("Uptime", uptimeHumanReadable(currentMillis)); c4r.publishDiag();
Funkcja uptimeHumanReadable konwertuje milisekundy do wygodnej postaci:
String uptimeHumanReadable(unsigned long milisekund) { static char uptimeStr[32]; długie sekundy bez znaku = milisekundy / 1000; długie minuty bez znaku = s / 60; unsigned int godz. = min / 60; unsigned int dni = godziny / 24; sek -= min * 60; min -= godziny * 60; godziny -= dni * 24; sprintf(uptimeStr, "%d dni %2.2d:%2.2d:%2.2d", (bajt)dni, (bajt)godziny, (bajt)minuty, (bajt)sekundy); return String(uptimeStr); }
Funkcja wypisuje ciąg taki jak ten 5 dni 10:23:14 zamiast dziwnie dużej liczby.
Krok 7: Rozpocznij i debuguj projekt
Po skompilowaniu utworzonego kodu i wgraniu go do NodeMCU urządzenie łączy się z usługą w chmurze i zaczyna wysyłać dane.
Szczegółowość rejestrowania można zwiększyć, ustawiając zmienną preprocesora CLOUD4RPI_DEBUG na 1 (dodaj -D CLOUD4RPI_DEBUG=1 do sekcji build_flags w pliku platform.io).
Następnie otwórz witrynę cloud4rpi.io i zauważ nowe urządzenie online. Otwórz go, aby zobaczyć wszystkie wartości zmiennych otrzymane z urządzenia: czujnik i diagnostyka.
Krok 8: Konfiguracja pulpitu nawigacyjnego
Na tym etapie połączenie danych z chmurą działa. Teraz skonfigurujmy wizualną reprezentację danych.
Użyłem interfejsu konfiguracji Dashboard do stworzenia następującego dashboardu.
Pulpit nawigacyjny można udostępniać, więc od razu udostępniam go mojemu przyjacielowi.
Krok 9: Wniosek
Pełny kod projektu jest dostępny w segmie.
To wszystko na teraz!
Pytania i sugestie mile widziane w komentarzach.
Zalecana:
Podłączanie Arduino WiFi do chmury za pomocą ESP8266: 7 kroków
Łączenie Arduino WiFi z chmurą za pomocą ESP8266: W tym samouczku wyjaśnimy, jak podłączyć Arduino do chmury IoT przez WiFi. Skonfigurujemy konfigurację złożoną z Arduino i modułu WiFi ESP8266 jako rzecz IoT i przygotujemy ją komunikować się z chmurą AskSensors.L
Automatyczny system przejazdów kolejowych za pomocą wbudowanej platformy opartej na Arduino: 9 kroków
Automatyczny system przejazdów kolejowych za pomocą wbudowanej platformy opartej na Arduino: Boże Narodzenie już za tydzień! Wszyscy są zajęci świętowaniem i zdobywaniem prezentów, które, nawiasem mówiąc, stają się jeszcze trudniejsze do zdobycia z niekończącymi się możliwościami wokół nas. Co powiesz na klasyczny prezent i dodaj odrobinę majsterkowania do
UCL - Podłączanie węzła czerwonego do sterownika PLC firmy Siemens za pomocą serwera KEPserver: 7 kroków
UCL - Podłączanie węzła Node-red do sterownika Siemens PLC przy użyciu serwera KEPserver: WymaganiaNode-red: https://nodered.org/docs/getting-started/installationKEPserver: https://www.kepware.com/en-us/kepserverex-6 -6-wydanie
Jak korzystać z płyty zgodnej z Arduino WeMos D1 WiFi UNO ESP8266 IOT IDE za pomocą Blynk: 10 kroków
Jak korzystać z płyty zgodnej z Arduino WeMos D1 WiFi UNO ESP8266 IOT IDE za pomocą Blynk: Płyta zgodna z Arduino WeMos D1 WiFi UNO ESP8266 IOT IDE Opis: Płytka rozwojowa WiFi ESP8266 WEMOS D1. WEMOS D1 to płytka rozwojowa WIFI oparta na ESP8266 12E. Funkcjonowanie jest podobne do NODEMCU, z wyjątkiem tego, że sprzęt jest budowany
Metody wykrywania poziomu wody Arduino za pomocą czujnika ultradźwiękowego i czujnika wody Funduino: 4 kroki
Metody wykrywania poziomu wody Arduino za pomocą czujnika ultradźwiękowego i czujnika wody Funduino: W tym projekcie pokażę, jak stworzyć niedrogi wykrywacz wody za pomocą dwóch metod:1. Czujnik ultradźwiękowy (HC-SR04).2. Czujnik wody Funduino