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
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
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
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:
I poszczególne sygnały z sensora DHT11:
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ę.
Krok 5: Korzystaj ze stworzonego urządzenia!
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
Krok 1: Zbierz wymagane elementy
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
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
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ł UNO | ESP8266 |
| RXD | RXD |
| TXD | TXD przez dzielnik oporowy |
| 3,3 V | VCC, CH_PD, Reset |
I poszczególne sygnały z sensora DHT11:
| Moduł UNO | ESP8266 |
| 5 V | VCC |
| GND | GND |
| D7 | Wyjś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 / C++
Krok 5: Korzystaj ze stworzonego urządzenia!
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? Ranking DIY
