2023-01-04

Virtuino 6 w ESP8266 - część II

 Dziś ciąg dalszy opisu kodu mikrokontrolera dla VIRTUINO 6. Czyli jak prosto i szybko uruchomić system domowej automatyki.





Do przyrządzenia prostego systemu sterowania dla procesora ESP8266 (a pewnie i ESP32) potrzebne nam będzie:

  • działający moduł z ESP8266 np D1 mini lub podobne - szt 1 lub więcej
  • kabel USB micro -  szt 1
  • komputer z Arduino najlepiej ver. 1.8.19  (wersja 2.x.x jest wciąż niedopracowana)  - szt 1
  • Tablet/telefon z Android wer >7 z zainstalowanym VIRTUINO 6 - minimum 1 ale może być więcej
Arduino musi mieć (co oczywiste) zainstalowany procesor ESP. Dodatkowo potrzebna będzie biblioteka VirtuinoCM.h i biblioteka Timers.h jeśli ktoś chce sobie ułatwić pracę i skorzystać z mojego poniższego szkicu.

https://pastebin.com/X3Usbdxu     - blok główny z main()
https://pastebin.com/iQGFVEid       - v1.h - bibloteka z kodem virtuino
https://pastebin.com/g4BkFGTC      -  piny.h - biblioteka deklaracji pinów i procedur obsługi pinów
https://pastebin.com/VtRZ5w1F        - program.h - blok z przykładowym programem


Blok główny nie wymaga praktycznie wyjaśnienia - to dołączenie niezbędnych bibliotek i odesłanie w blokach setup() i main() do konkretnych procedur naszego programu

Biblioteka v1.h zawiera procedury obsługi transmisji danych via WiFi. Trzeba więc ustawić parametry własnej sieci. Jeśli przewidujemy użycie większej ilości danych należy odpowiednio powiększyć bufor (linia 65).Jest jeszcze opcja włączenia klucza dołączanego do transmitowanych danych (linia 66) ale jak do tej pory nie znalazłem uzasadnienia jego użycia. Tak naprawdę nic , poza zmianą adresu kolejnego programowanego ESP (linia 7), w tym kodzie nie trzeba gmerać przy kolejnych projektach.

Biblioteka piny.h to zestaw deklaracji zmiennych i procedur obsługi przesyłanych między ESP a aplikacją danych. Zmienne to piny wirtualne jakie dołączymy do kolejnych widgetów Virtuino. Wszystkie one mają typ String. W tym bloku znajduje się też procedura 

void onReceived(char variableType, uint8_t variableIndex, String valueAsText)

obsługująca wywołanie funkcji programu przy pojawieniu się nowych danych z aplikacji. Jeśli ESP odbierze nową wartość pinu V1 to wywołana zostanie nasza procedura Read_V1(valueAsText)
Dzieje się to niezwłocznie (niezależnie od tego co to oznacza) od momentu odebrania nowej danej z aplikacji. Procedur Read_Vx() będzie tyle ile wirtualnych pinów dołączonych do widgetów wysyłających dane do mikrokontrolera (przyciski suwaki itd)

Najważniejsza z punktu widzenia całego programu jest biblioteka program.h w której znajduje się główny kod programu naszego urządzenia. Tak więc tu w procedurach   Read_Vx(valueAsText)
decydujemy co program ma zrobić z nowymi danymi odebranymi z aplikacji Virtuino a o tym jakie dane zostaną wysłane do aplikacji decyduje polecenie   Vx = String(dana);
Pamiętać należy tylko żeby tej procedury nie umieszczać w głównej pętli programy gdzie będzie wywoływana tysiące razy oraz to, że faktyczna transmisja nowej wartości danej do aplikacji odbędzie się dopiero przy kolejnym zapytaniu wysłanym z programu Virtuino.

W bloku program.h umieszczamy nasze procedury konkretnego programu domowej automatyki.

I to w zasadzie koniec co trzeba wiedzieć by prawidłowo oprogramować nasz ESP8266 do współpracy z aplikacją VIRTUINO 6.

W następnych postach będzie słów kilka o samej aplikacji i jak ją zmusić by gadała z naszym mikrokontrolerem.




Brak komentarzy:

Prześlij komentarz