Featured image of post Grenton – Smart Panel

Grenton – Smart Panel

Szczegółowa recenzja Grenton Smart Panel - nowego panelu dotykowego z wyświetlaczem OLED i rozpoznawaniem gestów.

Grenton Smart Panel Grenton Smart Panel

Firma Grenton wysłała mi swój nowy “Grenton Smart Panel” do testów za co bardzo dziękuję. W tym poście chciałbym Wam pokazać czego się dowiedziałem w ciągu ostatnich kilku dni.

Nowy panel dotykowy

Na wizualizacjach nowy panel wygląda następująco:

Wizualizacja Grenton Smart Panel – wizualizacja

W rzeczywistości różni się kilkoma detalami. Po pierwsze, logo jest mniej widoczne, co jest na plus. Po drugie, koło diod umieszczone są czujniki wykrywające gesty. Na dole pod logiem znajduje się czujnik zmierzchu.

Dokładna instrukcja dostępna jest pod adresem: http://www.grenton.pl/upload/files/PL/GRENTON_SMART_PANEL_TF-Bus.pdf

Dane techniczne

  • zasilanie: 5-24V DC
  • średni pobór prądu w trybie czuwania (dla 5V): 20 mA
  • maks. pobór prądu (dla 5V): 80 mA
  • waga: 120 g
  • zakres temperatur pracy: 0-45°C
  • wymiary (wys/szer/głęb): 80/80/10 mm

Tył panelu i podłączenie

Grenton zrezygnował ze swojego złącza TF-BUS na rzecz zwykłych śrubek. Adapter ARK pozwalający na podłączenie poprzedniego panelu kosztował 39 zł i trzeba było go zamontować w puszce wraz z każdym panelem dotykowym, teraz potrzeba znacznie mniej adapterów.

Tył panelu Grenton Smart Panel – tył

Z tyłu obudowy wystaje karta SD (4GB!), prawdopodobnie to na niej trzymane są ikony. Ta część w prawym dolnym rogu to chyba głośnik. Część w lewym górnym rogu to silnik do wibracji.

Informacje przekazywane użytkownikowi

Panel dotykowy pozwala przekazać całkiem sporo informacji:

  • Na wyświetlaczu oled można wyświetlić tekst, ikony, pliki bmp oraz rysować za pomocą Lua
  • Przy każdym z przycisków można wyświetlić dwie różne ikony, zależnie od stanu przycisku
  • Diody przy każdym z przycisków mogą świecić w dwóch kolorach – zielony i czerwony
  • Panel może wydawać piszczący dźwięk (można go wyłączyć)

Dodatkowo wszystko jest sterowane za pomocą Lua.

Rozpoznawanie gestów

Przy każdej z diod sygnalizujących stan przycisku, umieszczony jest czujnik pozwalający wykryć gest. Panel rozpoznaje cztery gesty – ruchy ręką w lewo, prawo, górę i dół. Gesty tłumaczone są na zdarzenia w OM, przez co ich obsługa w Lua jest całkiem prosta.

Wyświetlacz OLED

Wyświetlacz ma rozdzielczość 128 x 64 piksele. Jest dość jasny, ma dobry kontrast. Panel jest bardzo czuły - delikatny kontakt z palcem powoduje reakcję. Można nacisnąć wiele przycisków w tym samym momencie.

Wyświetlanie tekstu

Przykład wyświetlenia tekstu:

1
2
3
DOM->x250000067_PANEL1->ClearScreen()
DOM->x250000067_PANEL1->PrintText(0,0,'ABCDEFGHIJKLMNOPRSTUWYZ',1)
DOM->x250000067_PANEL1->DisplayContent()

Największym fontem (3) można wyświetlić na ekranie około 6 liter. Polskie znaki działają, ale kodowane są w utf-8, gdzie jeden znak zajmuje dwa bajty.

Rysowanie

Aby móc rysować, trzeba przełączyć wyświetlacz w tryb “freedraw” metodą DisplayContent(). Żeby wrócić do trybu przycisków – metoda ShowButtons().

1
2
3
DOM->x250000067_PANEL1->DrawIcon(10,10,"lamp2off")
DOM->x250000067_PANEL1->DrawLine(0,0,127,63,1)
DOM->x250000067_PANEL1->DisplayContent()

W trybie “freeDraw” przyciski działają tak jak zostały skonfigurowane wcześniej, można dalej włączać urządzenia podpięte pod przyciski.

Co jest na karcie pamięci?

Na karcie pamięci znajdują się pliki BMP z ikonami. Karta jest sformatowana w formacie FAT32. Wszystkie ikony mają rozmiar 64 x 32 piksele (1/4 ekranu).

Można dodawać własne ikony za pomocą ImageMagick:

1
convert b04.gif -resize 128 -crop 128x64+0+25 +repage -monochrome -type Grayscale -colors 2 -negate xkot%02d.bmp

Animacja

Można tworzyć animacje za pomocą timera, który w określonych odstępach czasu zmienia klatki:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
if _G['x'] == nil then
    _G['x'] = 0
    _G['y'] = 0
    _G['xx'] = 1
    _G['xy'] = 1
end

_G['x'] = _G['x'] + _G['xx'];
_G['y'] = _G['y'] + _G['xy'];

if (_G['x'] >= 64) or (_G['x'] <= 0) then
    _G['xx'] = _G['xx'] * -1
end

if (_G['y'] >= 32) or ( _G['y'] <= 0) then
    _G['xy'] = _G['xy'] * -1
end

DOM->x250000067_PANEL1->ClearScreen()
DOM->x250000067_PANEL1->DrawIcon(_G['x'],_G['y'],"lamp2on")
DOM->x250000067_PANEL1->DisplayContent()

Sterowanie termostatem

Panel można wykorzystać jako termostat pokojowy. Przykład implementacji:

  • Button1/3 – sterowanie światłami (bistabilne)
  • Button2 – przycisk “plus” (monostabilny, ikona = plus)
  • Button4 – przycisk “minus” (monostabilny, ikona = minus)

Skrypt zmieniający temperaturę:

1
2
3
local value = DOM->termostat->PointValue
DOM->termostat->SetPointValue(value + temp)
DOM->timer2->Start()

Skrypt wyświetlający temperaturę:

1
2
3
4
5
6
7
local temp = DOM->x250000067_PANELSENSTEMP1->Value
local pointValue = DOM->termostat->PointValue
DOM->x250000067_PANEL1->ClearScreen()
DOM->x250000067_PANEL1->PrintText(20,0,'Temp. pokój 1:',1)
DOM->x250000067_PANEL1->PrintFloat(45,20,temp,2,1)
DOM->x250000067_PANEL1->PrintFloat(45,40,pointValue,2,1)
DOM->x250000067_PANEL1->DisplayContent()

Podsumowanie

Plusy:

  • Fajny, responsywny gadżet
  • Można przekazać użytkownikowi bardzo dużo informacji
  • Ogromne możliwości dzięki Lua
  • Api jest spójne z dotychczasowymi produktami Grentona
  • Pozwala wgrywać własne ikony, tworzyć menu i wyświetlać proste animacje

Minusy:

  • Instrukcja mogłaby zawierać dokumentację metod wraz z parametrami
  • Nie można wgrać obrazków na panel za pomocą OMa, trzeba wyciągać kartę z panelu
  • Nie można pobrać listy obrazków jakie znajdują się na panelu
  • Strasznie się palcuje
  • Drobne bugi z fontami i niekonsekwencje w ograniczeniu pól w OM

Podsumowując panel bardzo mi się podoba. Jeśli macie jakieś pytania to chętnie odpowiem.

Pozdrawiam, T

Zbudowano z Hugo
Motyw Stack zaprojektowany przez Jimmy