Szklarnia w internecie rzeczy (IOT) – część 5.

Czysty kod, doxygen, komunikacja Arduino i ESP poprzez UART

Jak zawsze przypominam o poprzednich częściach, jeśli ktoś jeszcze nie czytał – tutaj.

Wkraczamy w fazę składania wszystkich elementów w całość. W tym wpisie pokażę połączenia Arduino i ESP oraz jak to wszystko zrobić czysto, z dobrą dokumentacją, czyli po inżyniersku (;

Zobacz też: Często używane układy

Kody do Arduino oraz ESP dla tej części znajdziecie w repozytorium (tutaj). Znajduje się tam też dokumentacja, bardzo specyficzna, bo tworzona dzięki doxygenowi. W folderach „…\dox\html\” znajdziecie pliki „idnex.html”, w tym miejscu możecie się łatwo poruszać się po całym projekcie bez konieczności otwierania go.

Zobacz też: Repozytoria i systemy kontroli wersji

Trochę więcej o tym jak korzystać z doxygena w projekcie Arudino pokazuję na wideo.

Link do pobrania doxygena: http://www.stack.nl/~dimitri/doxygen/download.html

Czysty i dobrze udokumentowany projekt to ważna sprawa. Dla porządkowania mojego działania ważna była książka:


Jeżeli nie przyjęliście jeszcze pewnych zasad co do prowadzenia „czystego” projektu, to z pewnością ta pozycja wprowadzi wasz kod na wyższy poziom.
Prócz zasad zaczerpniętych ze wskazanej książki, często współtwórcy sami wypracowują lub decydują się na określoną konwencję porządkowania projektu, ale nawet jeśli tworzycie coś sami, taka „czystość”, mimo że nie poprawia funkcjonalności, bardzo ułatwia pracę.

Zobacz też: Programowanie – nie lękajcie się

Jeśli w kodzie i dokumentacji jest już ładnie i czysto, to przejdźmy do części dotyczącej funkcjonalności.

Najważniejsza funkcjonalność to komunikacja pomiędzy Arduino a ESP (u mnie wersja 12E) poprzez UART. Można najpierw poczytać o tym, na czym polega taka komunikacja; tutaj po angielsku ogólny, ale bardzo dobry opis, a tutaj już po polsku, jak działać z UARTem i Arduino. Najważniejsze dla nas jest to, że komunikacja, o której mówimy, jest dwukierunkowa i chyba najłatwiejsza w obsłudze. Dla naszego projektu jest także istotne, że oba układy są programowane przez UART, a także to, że mają różne stany logiczne – chodzi o 3,3V i 5V. Będziemy więc potrzebować konwertera stanów logicznych.

Należy też pamiętać o tym, aby przy programowaniu czy to Arduino, czy ESP ten drugi układ był odłączony – trzeba przygotować na to jakaś złączkę lub miejsce na zworki.

Wszystkie elementy podłączyłem według poniższego schematu.

Każdą część, przed połączeniem zresztą, najpierw testowałem na osobnych konsolach. Należy zwrócić szczególną uwagę na:
– tę samą prędkość i ustawienia UART (tutaj 9600),
– typ danych, jakie wysyłamy i jakich oczekujemy przy komunikacji – czy gdzieś przypadkiem nie konwertujemy z ASCII na bajty itp.,
– znak przejścia do nowej linii „\n” – czy korzystamy z Serial.print czy println oraz aby przy testowaniu korzystać z tej funkcji odpowiednio,

– dobre zaplanowanie czasu odebrania wiadomości, czasu jej nadawania i długości wiadomości.

Zobacz też: Projekt a testy

Jeśli dalej coś nam nie działa, użyteczny może się okazać analizator stanów logicznych. U mnie taki:


Na Ebayu można go dostać za 5 dolarów. Bardzo polecam to narzędzie, pomogło mi w wielu projektach z różnymi rodzajami komunikacji. Nawet moja praca inżynierska w połowie opierała się właśnie na pomiarach dokonanych tym urządzeniem.

To, co jest nagrane na ESP, przypomina bardzo to, co działa dla projektu lampki. I będzie się to bardzo podobnie odbywało. Ale cały opis ESP-Raspberry w następnej części (;

Zobacz też: Hej Lampko, włącz się!

Na koniec jeszcze zdjęcie wentylatora, który postanowiłem dodać, bo niewietrzona szklarnia to idealne środowisko dla tworzenia się pleśni. Niestety, jeszcze nie obsłużony z poziomu Arduino, ale projekt jest tak tworzony, że dodawanie kolejnych funkcjonalności będzie bardzo proste.

Wydrukowane klapki opadają grawitacyjnie przy wyłączonym wentylatorze.

Jeśli macie jakieś pytania, ciekawe pomysły, komentarze związane z czystym kodem, piszcie śmiało w komentarzach albo na maila (;

2 thoughts on “Szklarnia w internecie rzeczy (IOT) – część 5.

  1. Czemu arduino nie zostało przez Uart do Raspberry podłączone ? Jako początkujący jestem w trakcie takiego projektu ale bez ESP bo moim zdaniem jest całkowicie zbędne.

    • Oczywiście że można (: ESP jest użyte dlatego bo szklarnia stoi daleko od Raspberry, które stanowi centralę domową, nie chciałem także kłaść kabla do tego wszystkiego.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *