Wio Terminal – all-in-one zařízení prošpikované IoT technologiemi
Produkty s označením Wio jsou pro některé známé jako programovatelné desky s jedním hlavním mikročipem a druhým čipem pro bezdrátové připojení. Vše ostatní si musel uživatel dokoupit a na desku napájet, což výrazně znesnadňovalo vytváření prototypů. S příchodem Wio Terminal přichází nová éra.
Do vínku dostává Wio Terminal velký 2,4″ LCD diplej, 2 multifunkční Grove konektory, 3 programovatelná tlačítka, joystick, slot na mikro SD kartu a především 40 pinové GPIO rozhraní, které je plně kompatibilní s Raspberry Pi a lze přes něj připojovat i další rozšíření. Třeba baterii, což učiní z Vašeho Wio Terminalu plně mobilní zařízení.
Čipy a rozhraní
Wio Terminal je osazen výkonným čipem ATSAMD51P19 postaveném na jádru ARM® Cortex®-M4F, jehož takt lze z klidové frekvence 120MHz navýšit až na 200MHz, což může výrazně zvýšit kvalitu komunikace s připojenými moduly, například kamerou. Výběr čipu byl také přizpůsoben k tomu, aby zvládl nejrůznější komunikační protokoly od I2C a I2S až po UART či SPI.
Co se drátové komunikace týče, nabízí Wio Terminal v základu připojení nejen přes 2 multifunkční Grove konektory, ale třeba i přes USB Type-C konektor s podporou USB On-The-Go. Wio Terminal je schopen přes něj přijímat informace z myši, klávesnice, MIDI zařízení, či Xbox/PS konzole, zvládne ale i tato zařízení simulovat.
Více o možnostech využití Grove ekosystému se můžete dozvědět v tomto našem článku.
Třešničkou na dortu je pak rozhraní GPIO. Wio Terminal tak může být multifunkčním displejem pro populární Raspberry Pi. Rozhraní GPIO neslouží pouze pro připojení k Raspberry Pi, lze přes něj připojovat další moduly, ale i komplexní doplňky. Jedním z nich je baterie, díky které přestane být Wio Terminal závislý pouze na energii dodávanou skrz USB kabel. Tento modul mimo energie nabízí i další Grove konektory, takže o dostatek pinů mít nouzi rozhodně nebudete.
Dost bylo kabelů. Wio produkty jsou především o bezdrátovém připojení. Realtek RTL8720DN nabízí vše, co je potřeba pro IoT projekty. Připojit se může ke každému Wi-Fi routeru, neboť umí obě pásma – 2,4GHz i 5 GHz. Nezaostává ani rychlostí připojení, neboť pracuje na nejrozšířenější verzi Wi-Fi 5. Komu se nechce využívat připojení k místní síti či k internetu, může se spojit s blízkými zařízeními díky Bluetooth BLE5.0.
Displej a senzory
Mezi další povedené věci obsažené na Wio Terminalu je LCD displej. S úhlopříčkou 2,4″ a rozlišením 320 x 240 pixelů nijak nevystupuje z řady a nabídne dostatečné místo pro zobrazení všech důležitých informací. Práce může být snadnější především díky vytvoření vlastního uživatelského rozhraní, do kterého je možné promítat aktuální data z připojených modulů, přes internet z webu nebo ze zabudovaných senzorů.
Senzorů má Wio Terminal hned několik. Orientace obrazovky může být přizpůsobená podle polohy zařízení, která se získá z akcelerometru. Jas displeje je možné přizpůsobovat podle intenzity okolního světla, kterou zaznamenává senzor světla. Infračervený vysílač pak emituje se záření o vlnové délce 940nm. Zabudovanému mikrofonu sekunduje i reproduktor.
Wio Terminal má ke svému ovládání nejen 3 tlačítka, která lze jakkoli naprogramovat. Hned vedle dipleje se nachází joystick, u kterého je snímáno 5 poloh – nahoru / doprava / dolů / doleva a stisk. Joystick se může hodit například při pohybu po vytvořeném rozhraním. Po boku Wio Terminalu se nachází trojpolohový přepínač Off / On / Reset.
Příprava Wio Terminalu
Jedním z nejrozšířenějších programovacích prostředí je Arduino IDE, které v projektu použijeme. Wio Terminal není běžným standardem, musí se proto do softwaru přidat. Níže uvedený odkaz se vloží do File - Preferences - Additional Boards Manager URLs
. Pokud už máte takto nějaké desky vložené, další oddělíte čárkou bez mezery, nebo jednodušeji kliknete na ikonku vedle, která otevře okno se seznamem všech URL. Nové URL se vloží na nový řádek.
https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json
Desky z takto vloženého odkazu se následně nainstalují přes Správce desek – Tools - Board - Board Manager
. Do vyhledávání stačí zadat Wio, aby se knihovna s deskou objevila. Tuto knihovnu nainstalujte. Wio Terminal bude následně mezi deskami v Tools - Board
. Nezapomeňte Wio Terminal vybrat, pokud na něj chcete nahrát kód.
Projekt – Senzor vzdálenosti
Použití Wio Terminalu si ukážeme na malém projektu. K zařízení bude připojen ultrazvukový senzor. Pokud detekuje překážku blíže jak 50cm, rozbliká se displej Wio Terminalu bíle, při vzdálenosti bližší jak 20cm se barva změní na červenou a rychlost blikání zintenzivní. Na méně jak 2cm už displej blikat nebude, bude svítit červeně.
Na tento projekt budeme potřebovat:
- 1 x Wio Termial
- 1 x Doplněk Wio Terminalu – Baterie (volitelné)
- 1 x Grove Ultrazvukový senzor
- 1 x Grove propojku
Ultrazvukový senzor přes Grove propojku propojíme s Wio Terminalem přes pravý Grove port. Pokud nechceme mít Wio Terminal pořád připojený přes USB kabel ze zdroje napájení (počítač, powerbanka), doporučujeme pořízení Modulu baterie, který se k Wio Terminalu připojí přes GPIO rozhraní na zádech. Mimo mobility nabízí i více Grove portů.
Vytvoření kódu
Pro použití ultrazvukového senzoru i displeje na Wio Terminalu je vhodné použít knihovny. Tyto knihovny naimportujeme a na jejich základě vytvoříme a pojmenujeme objekty. Zatímco knihovna pro displej se naistaluje i se samotnou deskou, knihovnu pro ultrazvukový senzor je potřeba doinstalovat. Knihovnu stáhnete jako balíček ZIP, který v Arduinu IDE vložíte Sketch - Include Library - Add .ZIP Library
.
#include "Ultrasonic.h"
#include "TFT_eSPI.h" // vkládá knihovny
Ultrasonic us(D0); // vytváří objekt us senzoru na pinu D0
TFT_eSPI tft; // vytváří objekt tft dipleje
Ve void setup()
zahájíme komunikaci s diplejem a rovnou se ujistíme, že je vypnutý. Blikání budeme totiž zajišťovat vypínáním a zapínáním podsvícení dipleje. To se chová stejně jako např. LEDka. Knihovnou TFT_eSPI
se nadefinovala hodnota LCD_BACKLIGHT a funkcí digitalWrite
se jen ovládá, zda displej svítí nebo ne.
void setup() {
tft.begin(); // zahajuje komunikaci
digitalWrite(LCD_BACKLIGHT, LOW); //zhasíná podsvícení
}
Ve smyčce si načteme hodnotu ze senzoru do proměnné vzd
a vytvoříme podmínku, ve které budeme hodnotu proměnné porovnávat a podle toho nastavovat displej.
void loop() {
int vzd = us.MeasureInCentimeters(); // čte hodnotu ze senzoru
if (vzd < 2) { // porovnává hodnotu
tft.fillScreen(TFT_RED); // nastaví barvu
digitalWrite(LCD_BACKLIGHT, HIGH); // rozsvítí podsvícení
delay(500);
}
Obdobně postupujeme i u zbývajících podmínek.
..else if (vzd < 20) {
tft.fillScreen(TFT_RED);
digitalWrite(LCD_BACKLIGHT, HIGH);
delay(vzd * 25); // zrychluje blikání
digitalWrite(LCD_BACKLIGHT, LOW);
delay(vzd * 25);
}
else if (vzd < 50) {
tft.fillScreen(TFT_WHITE);
digitalWrite(LCD_BACKLIGHT, HIGH);
delay(500);
digitalWrite(LCD_BACKLIGHT, LOW);
delay(500);
}
else {
digitalWrite(LCD_BACKLIGHT, LOW); // zhasne displej
delay(500);
}
}
Toto byla jen malá názorná ukázka, jak Wio Terminal funguje. Místo blikání displeje se dá zapínat například reproduktor, který je zabudovaný ve Wio Terminalu. Projekt tak může připomínat starší senzory na parkování, které podle pípání určovaly, jak daleko je překážka za autem.
Mnohem zajímavější jsou pak projekty využívajících dalších funkcí Wio Terminalu, včetně získávání dat z internetu, nebo velmi zajímavé propojení s termokamerou. Návody na tyto projekty najdete na oficiální Wiki od Seeed Studio.
Eshop
Wio Terminal
Mikropočítač s bezdrátovou konektivitou a 2,4″ LCD diplejem určený pro IoT projekty.