piątek, 2 czerwca 2017

Widget EVENTOR - programowanie klocków lego cz.2

Ale na początek klasyka - programowanie w Arduino IDE


Przez cały rok staram się pokazać, iż programowanie mikroprocesorów za pomocą Arduino IDE nie jest trudne. Jeśli dodamy do tego mnogość dostępnych bibliotek to efekt końcowy po kilku godzinach nauki jest przyjemnie zaskakujący. Dołożenie zaś do naszego modułu aplikacji BLYNK daje nieprawdopodobny efekt końcowy - w pełni profesjonalny sprzętowo i programowo projekt bijący na głowę wszystko to co można zrobić konkurencyjnymi systemami dostępnymi na rynku. I to po jednym - dwu dniach pracy.
Niestety większość użytkowników współczesnej elektroniki nie podziela fascynacji możliwością swobodnego programowania układów mikroprocesorowych nawet tak przyjaznymi narzędziami jak Arduino IDE. Dla takich osób klasyczne programowanie musi zostać zastąpione możliwie prostą konfiguracją pozwalającą szybko i bezboleśnie uzyskać pożądaną funkcjonalność urządzenia czy systemu. Co więcej w trakcie eksploatacji funkcje urządzenia winny dawać się równie prosto i szybko dopasowywać do zmieniających się potrzeb użytkownika bez konieczności ingerencji ze strony producenta urządzenia. Powyższe wymagania spełnia widget EVENTOR.



Porównajmy więc klasyczne programowanie funkcji w mikroprocesorze z możliwościami jakie dostajemy wykorzystując EVENTOR. Najlepiej na wyobraźnie działa przykład - a więc przykład


Prosty moduł mikroprocesorowy dla trzech sygnałów wejściowych  (przyciski na portach 4,5 13) i trzech wyjściowych (LEDy: jeden na module ESP i dwa dodatkowe na portach 12, 14). W module ESP zainstalowana jest biblioteka BLYNK ver 0.4.7.
Przykład nie jest aż tak mocno teoretyczny - ale o tym w następnych postach. A tak to wygląda w realu


Załóżmy poniższy schemat działania urządzenia:
  • przycisk 1 załącza odbiornik 1 (LED1)
  • przycisk 2 załącza  odbiornik 2 (LED2) i odbiornik 3 (LED 3). Odbiornik 3 jest załączony przez odcinek czasu nastawiany z aplikacji w telefonie
  • przycisk 3 wyłącza odbiornik 1, 2 i 3 jeśli jest załączony
  • przyciski 1,2,3 mają mieć swoje odpowiedniki w aplikacji BLYNK w telefonie (zdalne sterowanie)
  • stan odbiorników ma być widoczny w aplikacji BLYNK (zdalna kontrola)
  • wszystkie (i te w realu i te wirtualne) przyciski są mono-stabilne. Przyciski na płytce podwieszone są rezystorami do +3V a więc sterują opadającym zboczem z 1/0 co jasno wynika ze schematu. LEDy też mają odwróconą logikę - świecą gdy na wyjściu portu jest 0.
  • w aplikacji w telefonie jest wskaźnik czy jest połączenie z modułem (M)
Na schemacie blokowym przepływ sygnałów pomiędzy elementami wej/wyj, mikroprocesorem i aplikacją BLYNK wyglądał będzie następująco:



Najważniejszym elementem jest blok funkcji programu odpowiedzialny za wykonywanie opisanego wyżej schematu działania całego systemu. Licznik czasu służy do wyłączenia odbiornika 3 po czasie zadanym suwakiem w telefonie. M to sterowanie kontrolnego vLEDa. Serwer BLYNK nie bez kozery został tu potraktowany lekceważąco - jego rola sprowadza się jedynie do przekazywania w obu kierunkach informacji pomiędzy mikroprocesorem a aplikacją w telefonie
Kompletny program dla mikroprocesora ESP8266  realizujący  zadane funkcje umieściłem tutaj>>>>>>. ). Blok funkcji programu to linie 31-51 i 95-120. To tam zapisane są wszystkie relacje między wyjściami i wejściami, które ma wykonać nasz mikroprocesor. W liniach 31-51  funkcje sterowane są przyciskami z aplikacji w telefonie a 95-120 to sterowanie przyciskami na płytce modułu.

Tak działa testowy układ gdy sterujemy rzeczywistymi przyciskami na module.


Te same funkcje są wywoływane równolegle wirtualnymi przyciskami w telefonie.
Aplikacja w telefonie wygląda mniej więcej tak


A tak sterujemy funkcjami  za pomocą wirtualnych przycisków aplikacji BLYNK w telefonie.

 


Układ działa zgodnie z założeniami - co nie jest dużym zaskoczeniem:)
W kolejnej części dopuścimy do głosu widget EVENTOR więc ciąg dalszy niechybnie nastąpi
84