poniedziałek, 2 stycznia 2023

Umarł król ...niech żyje Król

 I to już koniec. 31 grudnia zostanie ostatecznie wyłączony publiczny serwer BLYNKa. Mój BLYNK wciąż będzie działał na bazie lokalnego serwera ale i jego czas jest policzony. Wystarczy jakaś istotna zmiana w RPi i serwer też może pokazać mi znany gest. I to już będzie naprawdę koniec BLYNKa na tym blogu. Szkoda że chłopaki w tak mało elegancki sposób rozstali się z tysiącami fanów tego systemu przekształcając go w czysto komercyjny  projekt. Ale karawana jedzie dalej i już w kolejce czeka następny system do implementacji - opisywany wcześniej VIRTUINO


Mam do zrobienia prosty układ regulacji temperatury grzejnika elektrycznego . Na początek zrobię układ w oparciu o BLYNKa by potem przenieść go na VIRTUINO. To dobra lekcja dla porównania obu systemów w praktyce.

Zasada pracy układu sterowania grzejnika jest banalnie prosta. Grzejnik ma być włączany/wyłączany w regulowanych odstępach czasu z krokiem 1 minuty w zakresie od 0 do 250. Dodatkowo ma w układzie pojawić się przełącznik 0/1 pozwalający na trwałe załączenie/wyłączenie grzejnika. 

Grzejnik ma regulację temperatury i to dosyć precyzyjną bo elektroniczną. Ale sterowanie grzejnika jest takie, iż do momentu osiągnięcia zadanej temperatury grzeje on pełną mocą a następnie wyłącza się na dłuższy czas aż mierzona temperatura nie spadnie poniżej wewnętrznej histerezy regulacji. W czasie grzania temperatura zewnętrzna grzejnika jest około 60 oC a w przerwie spoczynkowej spada do temperatury otoczenia. Mnie natomiast potrzebna jest regulacja mocy grzejnika tak by przez cały czas grzejnik był  ciepły. Nie zimny nie gorący a przyjemnie ciepły co oznacza temperaturę 35- 40 oC. I do tego potrzebne jest mi zewnętrzne sterowanie pozwalające na regulację średniej mocy grzejnika tak by jego temperatura utrzymywała się w założonych granicach.

Do sterownia użyłem najprostszego modułu przekaźnikowego z ESP 01
 

a całość po złożeniu wygląda mniej więcej tak.



Zgrabna puszka, w której umieściłem moduł była w komplecie z grzejnikiem a moduł zasilany jest z USB dostępnego na listwie gniazd sieciowych. A teraz wygląd aplikacji BLYNKa


oraz kod programu


Nazwa biblioteki pompa.h jest skutkiem dopasowania jakiegoś starego programu dla potrzeb sterowania grzejnikiem. Kod jest prosty i oczywisty dla każdego kto miał styczność z Arduino i BLYNKiem.

A teraz to samo z VIRTUINO


Temat VIRTUINO jako systemu automatyki dla hobbystów jest (a właściwie był) i będzie opisywany na oddzielnym blogu http://virtuino.blogspot.com.
Dziś tylko kilka wiadomości wprowadzających do tematu.
Po pierwsze mamy dziś (grudzień 2022) do wyboru dwie mutacje - VIRTUINO 6 i VIRTUINO IoT. Czym one dokładnie się różnią - nie wiem ale wydaje się że wersja IoT jest bardziej rozwojowa.

Na pewno różnica jest w protokołach komunikacji aplikacja <> mikrokontroler. Wersja 6 używa biblioteki VirtuinoCM autorstwa twórcy VIRTUINO Ilias Lamprou . Dla IoT należy dołączyć  biblotekę Virtuino Web Sockets dla Arduino.
Ale poprzez zmianę tej biblioteki na np. MQTT dostajemy system do komunikacji z innymi serwerami MQTT co nieprawdopodobnie poszerza możliwości jakie daje nam Virtuino.

Jako że jest projekt sterowania grzejnikiem testuje możliwość zamiany BLYNKa na VIRTUINO zostanie on wykonany w obu wersjach VIRTUINO.

Zacznijmy od VIRTUINO 6 bo jest on najbliższy temu co opisywałem w kilku postach na tym blogu dotyczących Virtuino..

Na początek wygląd aplikacji 


Tym razem nie upodabniałem pulpitu Virtuino do BLYNKa ale zachowałem rozłożenie elementów na pulpicie. Łatwość tworzenia pulpitu w obu programach jest podobna aczkolwiek wybór kształtów i opcji konfiguracyjnych widzetów Virtuino bije ja głowę możliwości elementów BLYNKa.

Wszystkie widżety dowiązane są do pinów wirtualnych tak by obsługiwać je jako String w ESP.
I kod programu

https://pastebin.com/UQe1A8EK     blok główny main()
https://pastebin.com/iupQN2wv        blok virtuino.h
https://pastebin.com/VHDgNvVD      blok program.h


Pomijając blok virtuino.h można rzec, iż oba kody są do siebie bliźniaczo podobne. Nawet obsługa pinów wirtualnych jest podobna co pozwala błyskawicznie zamieniać je między sobą przy zmianie systemu sterowania.

Za obsługę odebranej danej z aplikacji w BLYNKu odpowiada procedura

BLYNK_WRITE(V12) {
t_on_mem = (param.asInt());
t_on = t_on_mem;
 wys_t();
}

zaś w Virtuino

void Read_V3(String value_Text) {
  V3_Value = value_Text.toInt();
  t_on_mem = V3_Value;
  t_on = t_on_mem;
  wys_t();
}

wysłanie danej  aplikacji w obu systemach wygląda niby inaczej

 BLYNK ---- >      Blynk.virtualWrite(V2, t_on);

VIRTUINO -------->      V7 = String(t_on);

ale tylko dlatego że nie zrobiłem specjalnej procedury która byłaby wywoływana 
Virtuino_virtualWrite (V7, t_on)

Kod V7 = String(t_on); jest i prostszy i bardziej czytelny.

Podsumowując VIRTUINO 6 i BLYNKa  mogę potwierdzić iż kody obu systemów dla tego przykładu są niema identyczne. Przy pewnej wprawie "przekonwertowanie" jednego projektu w drugi nie powinno zająć więcej niż kilkanaście minut.

W następnym odcinku projekt grzejnik pojawi się w wykonaniu VIRTUINO IoT


Brak komentarzy:

Prześlij komentarz