piątek, 23 grudnia 2016

Własne klocki LEGO - odcinek II

Duży może więcej....

 Od chwili zmuszenia ESP8266 do pracy nie mam już problemów z dostępnością pamięci w małym ATMELu-328. Największy kod BRAMA4 obsługujący wszystko co do tego czasu zaimplementowałem w domowym IoT zajmuje niecałe 20KB. Przerzucenie BLYNKa do ESP-01 dało jeszcze jeden pozytywny aspekt - cały system automatycznie przechodzi w stan pracy autonomicznej przy braku połączenia z siecią lub serwerem BLYNK. W porównaniu z BLYNKiem  zainstalowanym w NANO praktycznie przejmującym  kontrolę nad procesorem przy braku połączenia taki stan to spełnienie  marzeń.

A więc 80MHz  traktor dzielnie ciągnie wózek inteligentnego domu. ESP-01 nie ma jednak żadnych dodatkowych portów możliwych do swobodnego wykorzystania toteż szansa na obciążenie jego taczki  jest już niewielka. Ale gdy pomyślę, że dla powiększenia pamięci NANO wydałbym 10-20 zł to rozwiązanie z dodatkowym ESP-01 (1,6$) jako rozszerzeniem pamięci programu wydaje się super optymalne. A wszystko to niejako przy okazji instalacji WiFi bez, której cała zabawa w IoT pozbawiona jest sensu.

ESP-01 pracuje u mnie jak wzorcowy SLAVE pod komendą z małego NANO przejmując na siebie całą obsługę BLYNK i WiFi. A wszystko to jest sterowane banalnie prostym protokołem opartym na stringu.
"Kxx:yyy" gdzie  K >komenda   xx > nr vPin   :  > separator   yyy > dane
i to wszystko czego potrzebuje ESP-01 by poprawnie komunikować się z BLYNK i wykonywać zlecone mu zadania

Cóż więc takiego robi nasz chińczyk:




Wszystkie procedury związane z połączeniem z BLYNKiem są w programie głównym.
BLYNK_WRITE_DEFAULT() (30-39) odczytuje po resecie i wysyła do NANO wszystkie zapamiętane stany vPinów.
 Blynkwrite(String str2)  (41-67) przetwarza otrzymane z NANO komendy na polecenia BLYNK lub wykonuje je wewnątrz ESP-01.
Na końcu programu mamy procedury migania ledami dla celów kontrolnych. Program główny wygląda nader skromnie.

   


ESP-01 odpowiada przede wszystkim  za nawiązanie i obsługę połączenia WiFi. Ale nie zobaczymy tego w kodzie programu. Wszystko odbywa się na poziomie sprzętowym a niezbędne komendy do uruchomienia całej procedury zajmują jedynie kilka linijek (205-227).U mnie więcej bo dodana została  dodatkowo procedura zmiany domyślnych nastaw logowania do WiFi. Idea opisana jest tu>>>> ale próba implementacji tej funkcjonalności w programy BRAMA kończyła się niepowodzeniem przez brak pamięci w NANO. Dopiero układ dwuprocesorowy pozwolił mi ponownie wrócić do pomysłu i to z pełnym sukcesem. Aktualna biblioteka pozwala zmienić dane logowania WiFi przy użyciu terminala BLYNK i jednego vPrzycisku. Nowe dane logowania zapamiętywane są w EEPROMie.



Biblioteka "transmit.h" spełnia funkcję identyczną do tej w NANO tj. obsługuje łącze serialowe dla wymiany danych z drugim procesorem. Nic tu specjalnego nie ma poza odbiorem w poolingu danych z RS232 i sprawdzeniem poprawności odebranego kodu. To skromne zadanie wzbogaciłem o możliwość "podglądania" odbieranych i wysyłanych danych na serialu i terminalu ESP. By nie zaśmiecać transmisji i nie generować nadmiernego ruchu w domowym internecie funkcje podglądu są zdalnie załączane vPrzyciskami V32 i V33. Taki sam mechanizm został dodany do NANO stąd dwie dodatkowe zakładki w aplikacji telefonu służące jedynie celom testowym. Baaaaardzo przydatna funkcjonalność.

Teraz kilka tygodni testów i zobaczymy co jeszcze trzeba będzie dodać lub poprawić

Przed nami święta więc

Spokojnych Pogodnych Świąt Bożego Narodzenia

I czekamy na cd .....



Brak komentarzy:

Publikowanie komentarza