- Wymagane składniki
- Schemat obwodu
- Czujnik temperatury i wilgotności DHT11
- Programowanie monitorowania temperatury i wilgotności na żywo NodeMCU ESP8266
Mikrokontrolery mają małą pamięć wewnętrzną, która nie wystarcza do przechowywania danych generowanych przez czujniki przez długi czas, albo trzeba użyć jakiejś zewnętrznej pamięci, albo można zapisać dane w jakiejś chmurze za pomocą internetu. Ponadto czasami trudno jest sobie z tym poradzić, gdy czujnik jest rozmieszczony w miejscu o ekstremalnych warunkach, do którego człowiek nie może dotrzeć lub trudno jest tam często odwiedzać. Aby rozwiązać tego rodzaju problemy, zawsze przyglądamy się sposobom, w jakie chcemy monitorować dane z czujników w czasie rzeczywistym z dowolnego miejsca, bez fizycznej obecności w tym miejscu.
Do bazy danych w czasie rzeczywistym mogą być używane w tym scenariuszu, w którym po prostu trzeba trochę kontroler interfejsu, który może być podłączony do Internetu i może być w stanie wymieniać dane z serwera w chmurze. Dane serwera mogą być przydatne w monitorowaniu zachowania systemu w czasie rzeczywistym, analizie baz danych, analizie statystycznej i przetwarzaniu oraz interpretacji przyszłych przypadków użycia. Dostępnych jest wiele platform sprzętowych IoT i platform chmurowych, które służą temu celowi. Jeśli napotkasz trudności w znalezieniu odpowiedniej platformy dla swojej aplikacji IoT, kliknij link.
Wcześniej omawialiśmy już ThingSpeak, Adafruit IO i wiele innych programów IoT. Dzisiaj będziemy budować podobny projekt, w którym użyjemy czujnika temperatury i wilgotności DHT11 oraz modułu NodeMCU ESP8266 do rejestrowania temperatury i wilgotności w czasie rzeczywistym na serwerze bazy danych Google Firebase.
Projekt podzielimy na dwie części. Po pierwsze, zaczniemy od montażu komponentów sprzętowych i załadowania do niego oprogramowania układowego. Po drugie, użyjemy Firebase do konfiguracji z NodeMCU do wymiany danych w czasie rzeczywistym. Jeśli jesteś nowy w ESP8266 lub Firebase, postępuj zgodnie z naszym poprzednim samouczkiem dotyczącym sterowania diodami LED za pomocą Firebase.
Wymagane składniki
- Moduł NodeMCU ESP8266
- DHT11 Czujnik temperatury i wilgotności
Schemat obwodu
Czujnik temperatury i wilgotności DHT11
Moduł DHT11 posiada kompleks wilgotności i temperatury ze skalibrowanym cyfrowym wyjściem sygnałowym, co oznacza, że moduł czujnika DHT11 jest połączonym modułem do pomiaru wilgotności i temperatury, który daje skalibrowany cyfrowy sygnał wyjściowy. DHT11 podaje nam bardzo precyzyjną wartość wilgotności i temperatury oraz zapewnia wysoką niezawodność i długoterminową stabilność. Ten czujnik ma rezystancyjny element do pomiaru wilgotności i element do pomiaru temperatury typu NTC z wbudowanym 8-bitowym mikrokontrolerem, który ma szybką reakcję i jest ekonomiczny oraz dostępny w 4-pinowej obudowie jednorzędowej.
Wcześniej używaliśmy ESP12E do aktualizacji odczytów DHT11 na serwerze internetowym, poza tym, że możesz sprawdzić wszystkie projekty oparte na DHT11, w których używaliśmy DHT11 do połączenia z wieloma innymi mikrokontrolerami, takimi jak Arduino, PIC, Raspberry i zbudowaną za ich pomocą stację pogodową.
Programowanie monitorowania temperatury i wilgotności na żywo NodeMCU ESP8266
Kompletny program wraz z działającym wideo jest podany na końcu. Tutaj wyjaśniamy kilka ważnych części kodu.
Najpierw dołącz biblioteki do korzystania z ESP8266 i firebase.
#zawierać
Pobierz i zainstaluj biblioteki, korzystając z poniższych łączy:
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
Jeśli podczas kompilacji pojawi się błąd, że biblioteka ArduinoJson.h nie jest zainstalowana, zainstaluj ją korzystając z linku podanego powyżej.
Zaprogramujemy NodeMCU, aby pobierał odczyty z czujnika DHT11 i przesyłał go do Firebase co 5 sekund. Ustalimy ścieżkę do przesyłania danych. Obecnie dwa parametry, a mianowicie. wilgotność i temperatura są przesyłane tą samą ścieżką nadrzędną i inną ścieżką podrzędną.
Te dwa parametry są bardzo ważne przy komunikacji z firebase. Ustawienie tych parametrów umożliwi wymianę danych między ESP8266 i firebase. Aby znaleźć te parametry dla swojego projektu, postępuj zgodnie z naszym poprzednim samouczkiem dotyczącym konfiguracji Firebase.
#define FIREBASE_HOST "your-project.firebaseio.com" // adres nazwy projektu z firebase id #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // tajny klucz wygenerowany z firebase
Po pomyślnym znalezieniu poświadczeń wystarczy zamienić w powyższym kodzie.
Wprowadź swój identyfikator SSID Wi-Fi i hasło, aby połączyć się z siecią.
# zdefiniować WIFI_SSID "nazwa_sieci" // wprowadź swoją domową lub publiczną nazwę Wi-Fi # zdefiniuj WIFI_PASSWORD "hasło" // hasło SSID wifi
Zdefiniuj pin danych DHT w NodeMCU. Możesz użyć dowolnego cyfrowego pinu GPIO w NodeMCU.
# zdefiniować DHTPIN D4
Biblioteka DHT jest przeznaczona dla wszystkich wariantów DHT i zawiera opcję tego, który czujnik DHT chcesz użyć, np. DHT11 lub DHT22. Po prostu wybierz odpowiedni czujnik DHT i kontynuuj.
# zdefiniować DHTTYPE DHT11 // wybierz typ dht jako DHT 11 lub DHT22 DHT dht (DHTPIN, DHTTYPE);
Połącz się z wybraną siecią Wi-Fi, a także połącz się z serwerem bazy danych Firebase.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Rozpocznij czytanie na pinie D4 NodeMCU.
dht.begin ();
Odczytaj wilgotność i temperaturę z czujnika DHT i zapisz jako wartość pływakową.
float h = dht.readHumidity (); // Odczyt temperatury lub wilgotności zajmuje około 250 milisekund! float t = dht.readTemperature (); // Odczytaj temperaturę jako stopnie Celsjusza (domyślnie)
Wystarczy sprawdzić, czy czujnik DHT jest prawidłowo podłączony lub czy nie jest uszkodzony i sterownik może odczytywać z niego odczyty. Jeśli odczyty się nie pokazują, prawdopodobnie czujnik jest uszkodzony, po prostu pokaż komunikat o błędzie i wróć, aby sprawdzić ponownie, bez kontynuowania.
if (isnan (h) - isnan (t)) {// Sprawdź, czy jakiekolwiek odczyty się nie powiodły i zakończ wcześniej (aby spróbować ponownie). Serial.println (F ("Nie udało się odczytać z czujnika DHT!")); powrót; }
Wydrukuj dane czujnika na monitorze szeregowym w celu debugowania i zapisz wartości temperatury i wilgotności w postaci ciągu znaków, aby wysłać je do bazy Firebase. Należy również pamiętać, że minimalne wymagane opóźnienie między dwoma odczytami z czujnika DHT11 wynosi 2 sekundy, więc zawsze używaj opóźnienia większego niż 2 sekundy. Aby dowiedzieć się więcej o DHT11, zajrzyj do oficjalnego arkusza danych.
Serial.print ("Wilgotność:"); Serial.print (h); String fireHumid = String (h) + String ("%"); // zamień wilgotność całkowitą na wilgotność łańcuchową Serial.print ("% Temperatura:"); Serial.print (t); Serial.println („° C”); String fireTemp = String (t) + String ("° C"); opóźnienie (4000);
Na koniec wyślij dane dotyczące temperatury i wilgotności do firebase na ścieżkę „your-project.firebaseio.com/DHT11/Humidity/”.
Firebase.pushString ("/ DHT11 / Humidity", fireHumid); // konfiguracja ścieżki i wysyłanie odczytów Firebase.pushString ("/ DHT11 / Temperatura", fireTemp); // ustaw ścieżkę i wyślij odczyty
Możesz zobaczyć wszystkie dane na swoim koncie Firebase. Po prostu przejdź do sekcji „ Baza danych ” w „ Twoim projekcie ” w „ Moja konsola ” w Firebase.
Aby skonfigurować Firebase do wysyłania i monitorowania danych, możesz zapoznać się z naszym poprzednim samouczkiem.
Pełny kod i wideo dotyczące monitorowania temperatury i wilgotności opartego na IoT podano poniżej.