IOT · 21 stycznia, 2023 0

Zdalne monitorowanie temperatury za pomocą Wemos-a D1 i czujnika DHT11

W tym wpisie pokażę jak podłączyć czujnik temperatury DHT11 do płytki WeMos D1 oraz stworzyć prosty serwer HTTP, który będzie wyświetlał aktualną temperaturę na stronie internetowej.

Jeśli jesteś nowy w programowaniu, na początku możesz mieć trudnośći. Ale, jeśli jesteś gotowy na wyzwanie, zyskasz nową całkiem przydatną wiedzę. Programowałeś wcześniej w Arduino IDE, to też świetnie małe ćwiczenie przyda Ci sie do utrwalenia wiedzy!

Aby zbudować ten mini projekt, potrzebujesz następujących elementów: 

1 x WeMos D1 mini
1 x Czujnik DHT1
1 x Mini Płytka Prototypowa
1 x Zestaw Kabli Połączeniowych
1 x Kabel USB do Komputera

1. Podłącz Wemos do komputera za pomocą kabla micro-USB

2. Utwórz nowy szkic i skonfiguruj Adruino IDE

  • Z narzędzi wybierz kolejno Płytka -> ESP8266 Boards (3.0.2) -> LOLIN(WEMOS D1 mini Lite)
  • Następnie z Narzędzi wybierz Zarządaj Bibliotekami
  • W Menedżerze Bibliotek wszukaj biblioteke DHT11 adafruit i zainstaluj ją.
  • Instalujemy wszystko

3. Zaprogramuj działanie w IDE 

W tej części omówimy Kod naszego programu.

  • Import Bibliotek

Sekcja w której zaimportowane są biblioteki potrzebne do komunikacji z WiFi, serwerem HTTP oraz czujnikiem temperatury DHT11.

  • Definiowanie zmiennych

W tej sekcji definiujemy stałe, takie jak pin, na którym podłączony jest czujnik DHT11 oraz typ czujnika i na tej podstawie tworzymy obiektu DHT
Ważne aby przed podłączeniem czujnika sprawdzić dokładnie pinout Wemosa i czujnika

  • Wifi oraz serwer

Na lini 16 i 17 tworzymy zmienne ssid i haslo, które przechowują nazwę sieci WiFi oraz hasło. Dalej tworzymy obiektu serwera HTTP na porcie 80.

  • Funkcja setup

Funkcja setup() to specjalna funkcja, która jest uruchamiana raz po załadowaniu kodu na płytkę. Służy ona do inicjalizacji różnych elementów konstrukcyjnych, takich jak interfejs szeregowy, czujnik DHT11, połączenie z siecią WiFi, serwer HTTP.

Zaczynamy od inicjalizowania interfejsu szeregowego w nawiasie podajemy prędkość Serial.begin(115200);. Pozwoli nam to na komunikacje płytki z Arduino i ewentualny debug w przypadku problemów. Dodajemy opóźnienie 10ms: delay(10); tak na wszelki wypadek 🙂 .W następnym kroku przygotowujemy czujnik DHT do pracy odwołując sie do biblioteki Adafruit którą wcześniej ściągneliśmy – w lini 25 używamy metody dht.begin();

Kolejnym przystankiem będzie połaczenie sie wifi WiFi.begin(ssid, haslo); – pobieramy wcześniej zdefiniowane zmienne ssid oraz haslo i inicjalizujemy połącznie.

Pętla while pozwoli nam sprawdzić status połącznia a metoda Serial.println() wyświetli nam status w Monitorze portu szeregowego Arduino IDE.

W lini 32 za pomocą metody server z biblioteki ESP8266WebServer ustawiamy endpoint, który będzie obsługiwany przez funkcję stronka(),  odpowiedzialna jest ona za generowanie i wysyłanie treści strony HTML.

Na deser server.begin(); uruchomi serwer na porcie 80 który zdefiniowaliśmy w sekcji Wifi oraz serwer

  • Funkcja loop()

Funkcja loop() jest specjalną funkcją wykonywaną w pętli po zakończeniu funkcji setup(). Będzie nam służyć do odczytywania aktualnej wartości z czujnika.

Funkcja handleClient() jest metodą z biblioteki ESP8266WebServer i pozwala serwerowi na obsługę klientów, którzy łączą się z serwerem HTTP

Jeśli klient wysłał żądanie, serwer przeszuka swoją listę endpointów ustawionych w funkcji setup(), jeśli znajdzie odpowiedni endpoint o nazwie stronka i wywoła funkcje o tej samej nazwie.

  • Funkcja stronka

Kod funkcji stronka() działa w następujący sposób:

Odczytujemy wartości wilgotności oraz temperatury i zapisujemy do zmiennych float hum i temp.
Tworzymy odpowiedź w formacie HTML linie od 44 do 48.
Wysyłamy odpowiedź do klienta server.send(200, “text/html”, content)

4.  Podłącz swój czujnik do Wemos-a

Podłącz czujnik DHT11 do płytki Wemos zgodnie z poniższym schematem połączeń:

  • Pin 1 (VCC) czujnika DHT11 do pinu 5V na Wemos
  • Pin 2 (Data) czujnika DHT11 do pinu D2 czyli GPIO4 na Wemos d1 w wersji mini
  • Pin 4 (GND) czujnika DHT11 do pinu GND na Wemos

Jeśli nie jesteś pewny swojej wersji wemosa d1 mini odwiedź stronę wemos.cc

5.  Kompiluj, prześlij, uruchom

Oto nasz cały kod w arduino IDE Teraz skompilujemy go i prześlemy do naszej płytki.

  • Przesyłamy szkic do wemosa z menu Szkic wybieramy Prześlij
  • Uruchamiamy Monitor portu szeregowego
  • Sprawdzamy status

Zwracamy uwagę na ustawienie szybkości portu szeregowego , powinno być 115200.

Jeśli w monitorze portu widoczne jest Serwer HTTP uruchomiony to prawdopodobnie wszystko działa.

6.  Świętuj sukces !

Teraz pozostaje nam odnaleźć nasze urządzenie w sieci, używamy do tego swojego ulubionego oprogramowania np: Advanced Ip Scanner  lub korzystamy z routera aby ustalić IP Wemosa.

Otwieramy przeglądarke i wpisujemy IP

Podsumowanie

W tym poradniku nauczyliśmy się jak połączyć płytkę Wemos z czujnikiem DHT11.  Sami zaprogramowaliśmy nasz mikrokontroler, a przy okazji dowiedzieliśmy się jak skonfigurować połączenie WiFi oraz jak utworzyć prosty serwer HTTP.  Poznaliśmy także podstawy obsługi czujnika DHT11 z biblioteki Adafruit oraz jak generować odpowiedzi HTTP dla klientów. Zaimplementowaliśmy wyświetlanie aktualnej temperatury na stronie www.

Stworzyliśmy projekt który jest dobrym punktem wyjścia do rozbudowy o dodatkowe funkcjonalności.

Dzięki za poświęcenie czasu mam nadzieje że nauczyłeś się czegoś nowego!

Do następnego! Cześć!