piątek, 25 listopada 2016

BLYNK w (prawie) każdym mikroprocesorze

Mikroprocesorowe klocki LEGO czyli BLYNK<4>ALL

Dwa poprzednie posty zainspirowały tenże. Więc trochę logiki

Założenie
Jeśli mikroprocesor posiada > 8 kB pamięci programu i jakikolwiek interface szeregowy (serial, I2C itp)
Teza
 To dodając najmniejszy i najtańszy ESP8266 - ESP-01 można  nim sterować za pomocą aplikacji BLYNK
Dowód
W zasadzie zawarty jest w dwu poprzednich postach :)

Omówienie problemu

1. W wielu uruchamianych systemach mikropocesorowych do komunikacji z procesorem w konfigurowaniu, normalnym działaniu lub w celach testowych niezbędne jest  zastosowanie jakiegoś wyświetlacza (najczęściej LCD) i jakiś klawiszy czy klawiatury. Możemy to zastąpić lub uzupełnić o nowe funkcjonalności dodając do systemu odpowiednio zaprogramowany układ ESP-01  i komunikować się z systemem mikroprocesorowym poprzez telefon/tablet z IOS lub Androidem. Uzyskujemy nieporównanie bardziej uniwersalną, wszechstronną,  tanią a przede wszystkim zdalną możliwość komunikacji sterowania i nadzoru stworzonym przez nas systemem. Możemy więc zdalnie zmieniać konfigurację, wartości początkowe, i inne dane zmieniające zdalnie działanie systemu. Możemy odczytać online  informacje o dowolnych zmiennych, portach, komórkach pamięci czy rejestrach w systemie.
Oczywiście możemy udostępnić część  tych funkcji użytkownikowi końcowemu jeśli jest to niezbędne w normalnej pracy urządzenia. Ponadto w ramach systemu BLYNK  nasz system może wysyłać nam lub użytkownikowi alerty, informacje czy jakiekolwiek dane na telefon, email, facebook,zbiorczej bazy danych  czy gdzie sobie ustalimy.

To tylko początek możliwości jakie dostajemy dokładając do własnego systemu mikroprocesorowego niewielką (2,5x1,6 cm) i śmiesznie tanią (ok 1,5 $ z dostawą do domu) płytkę ESP z wgraną biblioteką BLYNK i z zainstalowaną w telefonie/tablecie darmową (lub za niewielką opłatą dla dużych projektów) aplikacją BLYNK. I to wszytko co potrzeba by skomunikować dowolny nasz projekt z projektantem lub użytkownikiem (przy czym liczba osób równolegle przyłączonych do systemu jest nieograniczona!)

Jak to wygląda w praktyce?

Na przykład do takiej płyty na etapie projektowania dodajemy nasz ESP (w dolnym lewym rogu)

I zamiast (albo obok) komunikować się z systemem za pomocą wyświetlacza LCD i przycisków na płycie możemy to zrobić tak samo albo i lepiej telefonem/tabletem z każdego dowolnego miejsca na świecie - podkreślmy - za 1,5$ :). Mamy wiec dzięki takiemu rozwiązaniu w telefonie wirtualne przyciski. potencjometry, klawiaturę, wyświetlacze ledy wskaźniki  itd itd a nawet terminal!.




Jak to wygląda programowo
W programie naszego systemu mikroprocesorowego dodajemy 3-4kB bibliotekę (mam zamiar zmniejszyć ją do 1-2KB) będącą protokołem komunikacyjnym z ESP-01. Poprzez wywołanie odpowiednich funkcji z biblioteki przekazywane są  polecenia, ustawienia i dane wysyłane z aplikacji w telefonie/tablecie lub wysyłane dane  (bity,bajty, liczby formatu int, stringi ) do aplikacji. Z jakim widgetem połączymy te dane to już nasza fantazja. Możliwości są nieograniczone. A mamy do dyspozycji 128 virtualnych pinów do deklaracji różnych zmiennych. A i to nie wszystko bo dołączony do aplikacji pełnowymiarowy terminal pozwala wprowadzać i wyświetlać nieograniczoną ilość danych.

Struktura systemu BLYNK<4>ALL

Wrysowałem tu jedynie część rozwiązania znajdującą się w systemie mikroprocesorowym. Pozostała część przynależna do aplikacji BLYNK (serwer, telefon z aplikacją)   pozostają niezmienione how-blynk-works.
Dowolny mikroprocesor z zainstalowanym  naszym oprogramowaniem coś tam sobie steruje, mierzy czy błyska ledem na porcie. Dodatkowy niewielki kod ma za zadanie sformatować/zdekodować ramkę danych i wysłać/odebrać ją poprzez jakieś łącze szeregowe. Dla ułatwienia całość obsługi komunikacji BLYNK działa w poolingu z poziomu pętli głównej nie ma więc niebezpieczeństwa zablokowania normalnej pracy mikrokontrolera. Co więcej brak połączenia z ESP czy dalej z WiFi lub BLYNK nie ma większego znaczenia dla poprawnej pracy całego naszego systemu - ot przez jakiś czas nasz układ pracuje w trybie autonomicznym.  
Ramka danych jest najprostszą z możliwych.

Vxx:yyyy/r/n
V   - znak początku transmisji i znacznik rodzaju komendy (litery V, S, I, N, F, O itd.)
xx  - nr vPin lub nr komendy
:     - separator
yyy - dane w postaci integer lub string
/r/n  - znacznik końca ramki zamieniany przy odbiorze na znacznik końca stringu /0

Do wysłania jej funkcją Serial.printnl() skłania łatwość śledzenia transmisji i możliwość korzystania z gotowych procedur Arduino.
I to wszytko co potrzeba by skomunikować nasz procesorek ze światem zewnętrznym i skorzystać z dobrodziejstw gotowej aplikacji do zarządzania.
Klocki LEGO to genialny pomysł.

To zaczyna być naprawdę interesujące .......  więc niecierpliwie czekam na cd ...

Brak komentarzy:

Prześlij komentarz