środa, 18 października 2017

3,2,1 BLYNK na start - GrzyboSuszarka w telefonie

Model grzybosuszarki z dumnie zaprogramowanym automatem skończonym działa. Wiem, że działa choć słabo to widać. Bo co można stwierdzić patrząc na dwa LEDy? I co można ustawić jednym przyciskiem dostępnym w SONOFFie? Przyznaję - niewiele. Gdyby nie podłączenie do monitora Arduino figę bym wiedział co dzieje się wewnątrz urządzenia. Przycisk wystarczy do załączania/wyłączania urządzenia a nawet do zmiany programów pracy (dzięki autorowi OneButton.h) ale to koniec możliwości. A gdzie zmiana nastaw temperatur czy czasu pracy urządzenia? A jak odczytać aktualną temperaturę GS, pomierzyć pobór energii czy łączny czas suszenia?

Bez wyświetlacza LCD i klawiatury lub kilku potencjometrów się nie da. Możemy zawsze dołożyć coś większego - ot np. tablet jak w lodówce LG. I grzybosuszarka będzie pod naszą całkowitą kontrolą. Można tylko po co? Każdy ma telefon i każdy może mieć BLYNKa. A wtedy i dwa LEDy z przyciskiem w sterowniku grzybosuszarki  to za dużo by sterować urządzeniem leżąc wygodnie na plaży w Juracie (no może nie w październiku). Dziś BLYNK w grzybosuszarce.

No właśnie - po co jeszcze BLYNK do prostego układu elektronicnego?. Zrobić kilka testów ustawić wszystkie parametry grzybosuszarki na sztywno  zaszyć w urządzeniu i do roboty.... Ale tu się Panie dobrobytu zachciewa zimna woda osobno ciepła osobno i jeszcze żeby zmieniać dowolnie parametry w czasie pracy sterownika i obserwować wszystko na telefonie.

A nie wystarczyłby czasowy zegar za 12 PLN? Pewnie tak. Ale jeśli w sterowniku grzybosuszarki mamy 80 MHz procesor z 4Mb pamięcią programu, wszystko za 25 zł z dostawą i darmowy BLYNK to żal z tego nie skorzystać.Jeszcze kilka lat temu taki mikroprocesorowy sterownik trzeba by mocno rozbudować o klawiaturę i wyświetlacz. Do tego porządny kawał zasilacza i dobrych kilkaset linii kodu. I już za miesiąc lub dwa grzybosuszarka z pełnym sterowaniem byłaby gotowa do testów.

Dziś kupujemy SONOFFa w koszcie wykonania jego płytki drukowanej i po 3-4 godzinach testujemy gotowy produkt w półprofesjonalnym wykonaniu. A w telefonie mamy całe centrum zarządzania. Jest inteligentny dom, inteligentne nawadnianie może być i inteligentna grzybosuszarka. Z inteligentną lodówką jeszcze poczekam. I tak powoli dajemy się wciągnąć w wirtualny świat producentów elektronicznych gadżetów. Dajemy i to bardzo szybko.

Stan projektu 
Mam więc działający w oparciu o model automatu skończonego (finite state machine) układ testowy na module D1 MINI. Teraz czas na bajery - dodanie konfiguracji ustawień początkowych i możliwość pełnego sterowania i kontroli urządzenia. I wszystko bez konieczności dolutowania jakiegokolwiek elementu - wszystko zostanie stworzone w wirtualnym świecie BLYNKa.

Sterowanie pracą grzybosuszarki

Popatrzmy jeszcze raz na schemat działania urządzenia. Cyfry w kółkach to stany automatu skończonego grzybosuszarki (zmienna stan_programu). Odczyt zmiennej w telefonie pokaże nam aktualny stan pracy urządzenia. Jeśli aplikacją w telefonie będziemy zmieniać wartość stan_programu uzyskamy zdalną zmianę modów pracy. To ogromna zaleta automatów skończonych - możliwość pełnej kontroli urządzenia jednym prostym parametrem.


Przy takim rozwiązaniu sterowanie grzybosuszarką z telefonu jest banalnie proste. Trzeba tylko odczytać lub wysłać cyfry 0,1,2,3. Można do tego ciągu dodać liczby 12 i 13 wtedy kontrola nad urządzeniem będzie pełna. Ale jest jeden problemem - wybór rozwiązania. To dylemat z supermarketu przed półką z mnogością gatunków makaronów (panie) a lub piwa (my). Podobnie jest z BLYNkiem - ten sam wynik można uzyskać na kilka sposobów w zależności od zastosowanych widgetów. Co wybrać by aplikacja była czytelna, prosta i elegancka w obsłudze? Popatrzmy na poniższe przykłady.

Wersja I - Kopia sterowania SONOFFa  - trzy widgety
Wykorzystam trzy widgety :
-  Odczyt modu pracy wyświetlaczem (by nie utrudniać sobie życia) pin V20,
-  sterowanie jednym przyciskiem V19,
-  wskaźnik zał/wył grzybosuszarki - LED V18.

Kod programu głównego obsługi wyjść automatu grzybosuszarki w porównaniu z poprzednim powiększył się o kilka linijek procedur BLYNKa.

void GSon() {
  Serial.println("GS  on");
  digitalWrite(led_green, LOW);
  Blynk.setProperty(V18, "color", _RED); //LED
}
void GSoff() {
  Serial.println("GS  off");
  digitalWrite(led_green, HIGH);
  Blynk.setProperty(V18, "color", _BLUE);
}

void GSmain() // główna procedura GS stanów wyjściowych
{
  switch (stan_programu) {
    case 1: {
        GSon();
        Blynk.virtualWrite(V18, 255); // LED on
        Blynk.virtualWrite(V20, "ZAL"); //wyświetlacz
      } break;
    case 2: {
        GSon();
        Blynk.virtualWrite(V18, 255);
        Blynk.virtualWrite(V20, "TEMP");
        if (temperature >= tempoff)stan_programu = 12;
      } break;
    case 12: {
        GSoff();
        if (temperature <= tempon)stan_programu = 2;
      } break;
    case 3: {
        gstime++;
        GSon();
        Blynk.virtualWrite(V18, 255);
        Blynk.virtualWrite(V20, "CZAS");
        if (gstime >= timeon) {
          gstime = 0;
          stan_programu = 13;
        }
      } break;
    case 13: {
        Serial.println(gstime);
        gstime++;
        GSoff();
        if (gstime >= timeoff) {
          gstime = 0;
          stan_programu = 3;
        }
      } break;

    default:
      {
        GSoff();
        stan_programu = 0;
        Blynk.virtualWrite(V18, 0);
        Blynk.virtualWrite(V20, "WYL");
      } break;
  }
}

BLYNK_WRITE(V19) //zadawanie programu z aplikacji - przycisk
{
  int i = param.asInt();
  if (i == 1) {
    stan_programu =  stan_programu % 10;
    stan_programu++;
    stan_programu =  stan_programu % 4;
  }
}

W efekcie ta to wygląda na ekranie aplikacji:


LED V18 jest wyłączony gdy wyłączone jest urządzenie (stan 0). Gdy urządzenie jest wyłączone w trakcie procedury sterowania temperaturą lub czasem LED pozostaje załączony ale zmienia kolor na niebieski. Pierwsza sekwencja zmian modów pracy dokonywana jest przyciskiem w aplikacji, druga - przyciskiem w urządzeniu. Na dole ekranu pomiar temperatury i tradycyjny migający LED kontroli pracy urządzenia.


Wersja II - Kopia sterowania SONOFFa - dwa widgety

Zrobię identyczną funkcjonalność jak w wersji I ale z zastosowaniem dwu zamiast trzech widgetów
Wynik:



Wyrzucam LEDa a jego funkcje przejmuje wyświetlacz a konkretnie sterowanie jego kolorami.


Wersja III - Kopia sterowania SONOFFa - jeden widget

I znowu ta sama funkcjonalnośc jak poprzednio ale wszystko oparte tylko o jeden widget!!
I efekt końcowy:



Wyrzucam i LEDa i wyświetlacz a wszystkie funkcje przejmuje widget przycisk. Oj lubię takie ćwiczenia umysłowe.

Wersja IV -  jeden ale ciekawy widget 

Najłatwiej przełączanie stanów pracy zrobić za pomocą widgetu MENU, w którym kolejne pozycje odpowiadają kolejnym stanom grzybosuszarki. Wybierając konkretną pozycję menu możemy ustawić wewnętrzny stan grzybosuszarki. Dołączam do widgetu MENU pin V20 i wartość tego pinu wpisuję do zmiennej stan_programu. Z jedną wszakże poprawką - należy odjąć 1 gdyż numeracja stanów zaczyna się od zera a numeracja pozycji MENU od jeden. Stan 12 i 13 (przesunięte także o jeden) również wpisałem do menu



























Podobnie jak w przypadku przycisku również widget MENU odbiera dane z urządzenia więc może służyć jako wyświetlacz informacji. Jeśli na pin V20 wyślemy odpowiednią liczbę (nr stanu) w widgetcie zostanie wyświetlona  odpowiadająca tej liczbie pozycja. I znowu by zgrać numerację stanów z pozycjami menu należy do liczby dodać 1. Oczywiście i w tym elemencie mamy opcję zmiany kolorów więc wszystkie powyższe funkcje uda się upchnąć w tym jednym widgecie.



I tak można się bawić bez końca klockami BLYNKa dla dużych chłopaków......
Teoretycznie wybór rozwiązania nie ma większego znaczenia dla działania urządzenia. Ale w praktyce to wygląd aplikacji i przyjazność jej obsługi będzie widocznym efektem naszej pracy. Podobnie jak ładna i estetyczna obudowa naszego układu zwiększa satysfakcję z wykonanego dzieła. Watro więc przetestować różne warianty rozwiązań oferowane przez BLYNKa by wybrać to co najbardziej lubimy. A kolega i tak będzie kręcił nosem (o żonie nie wspominając).

W następnym wpisie dokończenie budowy aplikacji dla grzybosuszarki. Pozostały jeszcze do zrobienia konfiguracje temperatur i czasów przełączania więc cd niewątpliwie winien nastąpić.

101

Brak komentarzy:

Publikowanie komentarza