Elektroda.pl
Elektroda.pl
X
Arrow Multisolution Day
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Bezprzewodowy miernik wilgotności i temperatury oparty na ESP8266

ghost666 14 Wrz 2015 12:12 7710 10
  • Bezprzewodowy miernik wilgotności i temperatury oparty na ESP8266
    Celem przedstawionego poniżej projektu było stworzenie sensora temperatury i wilgotności, który mógłby bezprzewodowo zapisywać te parametry w czasie na zdalnym serwerze. W celu realizacji projektu, jego autor wykorzystał Arduino Uno (można zastąpić ten moduł dowolnym, kompatybilnym klonem), sensor DHT11 oraz moduł z układem scalonym ESP8266. Poniższy projekt jest doskonałą prezentacją możliwości dawanych przez układ ESP8266, zapewniający bezprzewodową łączność po WiFi.

    Krok 1: Zbierz wymagane elementy

    Bezprzewodowy miernik wilgotności i temperatury oparty na ESP8266


    Autor wykorzystał w projekcie klon oryginalnego Arduino Uno. Każdy klon tego modułu powinien działać w tym układzie. Do realizacji urządzenia potrzebujemy:

    * Arduino Uno
    * Kabel USB A do B
    * Zasilacz 5 V z wtyczką USB
    * Układ transceivera ESP8266. Autor wykorzystał moduł Esp-01, ale dowolny moduł z tym układem spełni swoje zadanie.
    * Sensor temperatury i wilgotności DHT11. Zastąpić go można DHT22.
    * Płytka stykowa
    * Kabelki do połączenia układów
    * Rezystory

    Krok 2: Stwórz kanał danych ThingSpeak

    Bezprzewodowy miernik wilgotności i temperatury oparty na ESP8266


    Aby móc logować dane na temat temperatury i wilgotności online musimy mieć dostęp do odpowiedniej strony lub usługi, która ma możliwość przyjmowania komend GET http. W tym projekcie wykorzystani ThingSpeak, jednakże istnieje szereg analogicznych usług w sieci, więc każdy może wybrać to co mu pasuje.

    Jeśli wykorzystamy konto na ThingSpeak, to musimy utworzyć kanał danych z dwoma polami - jednym dla temperatury i drugim dla wilgotności. Serwis pozwala skonfigurować sposób wyświetlania danych. W prezentowanym przypadku najlepszy jest wykres w funkcji czasu. Taki właśnie wykres wybrał autor projektu. Ustawił on uśrednianie po 10 pomiarów, mające na celu wygładzenie ewentualnych nagłych zmian czy błędów grubych układu pomiarowego. Serwis, po skończonej konfiguracji, generuje klucz dla kanału danych, który musimy umieścić w kodzie programu naszego sensora.





    Krok 3: Łączenie elementów

    Bezprzewodowy miernik wilgotności i temperatury oparty na ESP8266 Bezprzewodowy miernik wilgotności i temperatury oparty na ESP8266 Bezprzewodowy miernik wilgotności i temperatury oparty na ESP8266


    Najpierw przyjrzyjmy się modułowi z ESP8266 i układowi DHT11 i ich wyprowadzeniom. Następnie podłączymy je do modułu UNO z mikrokontrolerem

    Obrazek powyżej pokazuje moduł z układem ESP8266 z ośmioma podpisanymi pinami. Moduł ten zasilany jest napięciem 3,3 V, więc trzeba upewnić się, że takie napięcie podamy na VCC z modułu Uno. Jako że mikrokontroler pracuje na 5 V koniecznie trzeba dodać pomiędzy układami dzielniki napięciowe, tak aby nie ryzykować uszkodzenia ESP8266 zbyt wysokim napięciem na interfejsie szeregowym. Można umieścić tutaj scalony translator poziomów, ale zastosowanie zwykłego dzielnika oporowego wystarczy (i jest tańsze). Autor wykorzystał oporniki 220 Ω i 470 Ω do konstrukcji dzielnika.

    Sensor DHT11 mierzy wilgotność z dokładnością do ±5% i temperaturę ±2°C, więc nie jest super dokładnym układem. Jest on w stanie mierzyć temperaturę powyżej 0°C. Można zastąpić go układem DHT22, który jest odrobinę dokładniejszy, jednakże nie jest to kluczowe w tym projekcie. Sensor ten zasilany jest napięciem od 3,3 V do 5 V. Pin sygnałowy należy podciągnąć do zasilania np. przez opornik 4,7 kΩ.

    Powyżej narysowano schemat pokazujący jak połączyć poszczególne elementy w układzie. W poniższej tabelce zawarto podsumowanie gdzie podpięte są poszczególne sygnały z układu ESP8266:




    Moduł UNOESP8266
    RXDRXD
    TXDTXD przez dzielnik oporowy
    3,3 VVCC, CH_PD, Reset


    I poszczególne sygnały z sensora DHT11:




    Moduł UNOESP8266
    5 VVCC
    GNDGND
    D7Wyjście sygnałowe, podciągnięte di VCC


    Krok 4: Program

    Przed skorzystaniem z opublikowanego kodu programu trzeba doinstalować biblioteki dla układów DHT z firmy Adafruit. Na ich stronie znajduje się stosowny opis, jak zainstalować i korzystać z ich bibliotek, umieszczonych na GitHubie. Ich biblioteki posiadają szereg dodatkowych funkcji, związanych z wyznaczaniem parametrów na podstawie temperatury i wilgotności. Można je wykorzystać, jednakże podstawowa wersja programu, umieszczona poniżej, z nich nie korzysta.

    Prędkość transmisji z/do mikrokontrolera do/z ESP8266 skonfigurowana jest w kodzie w jednej s górnych linijek (#define Baud_Rate). Autor korzystał z wersji układu, który działa z prędkością 115200 baud, jednakże są układy nie radzące sobie z tą prędkością, więc można zmienić ją na 9600 baud, jeśli coś będzie zachowywało się niepoprawnie.

    W kodzie jest kilka zmiennych "< >", oznaczają one miejsca, które należy uzupełnić własnymi informacjami. Są to dane sieci WiFi, klucz ThingSpeak itp. Dodatkowo w kodzie umieszczono prostu debugger wykorzystujący czerwoną i zieloną diodę LED (nie pokazane na schemacie!), co pozwala łatwo zobaczyć jaki jest stan działania układu w danym momencie.

    Należy uważać, podczas ładowania programu do mikrokontrolera, na połączenie szeregowe z ESP8266. Na czasprogramowania należy odłączyć transceiver od układu, gdyż inaczej zaprogramowanie układu nie powiedzie się.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Krok 5: Korzystaj ze stworzonego urządzenia!

    Bezprzewodowy miernik wilgotności i temperatury oparty na ESP8266


    Gratulujemy! właśnie udało Ci się stworzyć bezprzewodowy sensor temperatury i wilgotności. Autor wykorzystuje swój do monitorowania warunków w piwnicy, gdzie problemem jest wysoka wilgotność. Układ można zamontować w obudowie, lub nawet na kawałku kartonu, jak uczynił do twórca projektu. Jego kolejnym planem, jest wykorzystać sam układ ESP8266 do realizacji opisanego zadania, tak aby pozbyć się z urządzenia Arduino.

    Żródło: http://www.instructables.com/id/Wireless-Temperature-and-Humidity-Monitor-With-ESP/?ALLSTEPS


    Fajne!
  • Arrow Multisolution Day
  • #2 14 Wrz 2015 13:28
    tmf
    Moderator Mikrokontrolery Projektowanie

    Wszystko fajnie, tylko po co autor pakował w to Arduino? Obie funkcje, tj. pomiar temperatury i wilgotności można zrobić w całości w oparciu o ESP.

  • Arrow Multisolution Day
  • #3 14 Wrz 2015 13:32
    ghost666
    Tłumacz Redaktor

    tmf napisał:
    Wszystko fajnie, tylko po co autor pakował w to Arduino? Obie funkcje, tj. pomiar temperatury i wilgotności można zrobić w całości w oparciu o ESP.


    Masz w 100% rację - autor pakuje w to dodatkowy µC, ponieważ nie potrafi programować ESP. Zauważ, że w ostatnim akapicie napisane jest, że kolejnym krokiem w rozwoju tego układu, jest właśnie eliminacja AVRa.

  • #4 14 Wrz 2015 20:27
    razorxx100
    Poziom 11  

    Juz bawie sie esp jakis czas i mam male pytanko ;p
    Czy jest mozliwosc zeby esp zwrocilo mi kod zrodlowy strony przy wejsciu przez GET w link?
    Szukalem rozwiazania w internecie i niestety nic nie znalazlem ;/

  • #5 15 Wrz 2015 11:24
    Hetii
    Poziom 14  

    razorxx100 napisał:
    Juz bawie sie esp jakis czas i mam male pytanko ;p
    Czy jest mozliwosc zeby esp zwrocilo mi kod zrodlowy strony przy wejsciu przez GET w link?
    Szukalem rozwiazania w internecie i niestety nic nie znalazlem ;/


    Proszę bardzo, przykład ze strony nodemcu.

    Kod: lua
    Zaloguj się, aby zobaczyć kod


    W przykładzie powyżej zamień:
    Kod: text
    Zaloguj się, aby zobaczyć kod
    na twoją funkcję która będzie parsowała stronę i po sprawie.

  • #6 15 Wrz 2015 12:02
    Galareta
    Poziom 21  

    Dlaczego node? Wiekszosc ludzi zna tutaj C albo z arduino albo innych zrodel (niw wiem co sie w moim poscie nie podobalo poprzednim) np w smig framework sie dobrze pisze i banalnie latwo;-) Gotowy serwer http z praserem szablonow ma itd.

  • #7 15 Wrz 2015 13:55
    Hetii
    Poziom 14  

    Galareta napisał:
    Dlaczego node? Wiekszosc ludzi zna tutaj C albo z arduino albo innych zrodel (niw wiem co sie w moim poscie nie podobalo poprzednim) np w smig framework sie dobrze pisze i banalnie latwo;-) Gotowy serwer http z praserem szablonow ma itd.


    No niestety node jest kiczowaty jak na tą platformę.
    Chcąc napisać coś faktycznie interesującego to pozostaje nam C.

    Niemniej jednak podałem przykład z node z racji swojej prostoty.

  • #8 15 Wrz 2015 17:13
    Galareta
    Poziom 21  

    Ale C++ na tą platformę jest prostszy? Cały Framework w C jest (SMIG)

    Kod: c
    Zaloguj się, aby zobaczyć kod


    wywoływany jest "asynchronicznie" od reszty kodu z tego co wiem - sam się lokuje w przerywaniu i jak się dane pobierają lub oczekujemy na odpowiedź to procesor mieli kod dalej, dlatego jak chcemy te dane odebrać, to musimy podać funkcje w 2 parametrze. tzn to "onDataSent" i tam sobie mielimy... np:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Z czego wypadało by sprawdzić czy wszystko poszło ok (ten bool zawiera właśnie informacje czy przeszło czy nie.

  • #9 16 Wrz 2015 00:57
    razorxx100
    Poziom 11  

    A przez komenty AT jest moze taka mozliwosc? Przyznam ze przyjemnie programuje sie esp w arduino IDE.

  • #10 16 Wrz 2015 13:03
    Galareta
    Poziom 21  

    No, oczywiście że jest;) ale pytanie po co? Po co sobie życie utrudniać? i spowalniać działanie tego, nie opłaca się uczyć czegoś co i tak za chwilę Ci się na nic nie przyda bo przejdziesz na samo ESP.

    razorxx100 napisał:
    Przyznam ze przyjemnie programuje sie esp w arduino IDE.

    Chyba nie, jak podstawowej rzeczy nie potrafisz zrobić;) Gdyby było jak piszesz to byś to już dawno umiał, bo w C, LUA czy Arduino IDE przerobionym na ESP (czyli C) nie trzeba się nad tym nawet zastanawiać zbytnio jak to się robi.

    https://github.com/esp8266/arduino <- Arduino IDE dla ESP