Úvodem
O tom co to je technologie OLED a jaké výhody/nevýhody nám přináší jste měli možnost si již několikrát přečíst i zde na HW (viz odkazy na konci článku). Do této chvíle ovšem chyběly články o praktickém využití těchto displejů a zvláště pak podrobnější informace o konkrétních produktech. Dnešním článkem tedy zahajuji jakýsi minitutoriál provádějící čtenáře nabídkou společnosti Glyn z oblasti OLED displejů a inteligentních modulů.
Prvním modulem, který jsem mohl otestovat, byl produkt s označením μOLED-128-G1. Jedná se o hotové řešení v minimální konfiguraci vyžadující pouze propojení s mikrokontrolérem prostřednictvím standardní sérové linky (UART). Řízení může samozřejmě vykonávat i speciálně vytvořený software pro PC. Modul je vystavěn nad pasivním OLED (PMOLED) a vestavěným grafickým kontrolérem GOLDELOX. Tento kontrolér zajištuje autonomní běh systému a jednoduché začlenění do téměř jakéhokoliv projektu.
Jak už bylo uvedeno, modul komunikuje s okolním světem prostřednictvím standardní sériové linky v pozici SLAVE. Masterem může být téměř jakýkoliv mikrokontrolér vybavený timto rozhraním nebo již uvedené PC. Ke komunikaci je využíván jednoduchý protokol, vystavěný na jedno a vícebajtových přkazech.
Platforma 4DGL
Moduly řady μOLED lze ale obsluhovat i jinými metodami. Kontrolér GOLDELOX nabízí uživatelům vyžít jednoduchého vyššího programovácího jazyka obdobného jazykům C, Pascal, Basic a dalším a jednoduše tak obsluhovat veškerý připojený hardware. Jednoduché využítí všech periferií zajišťuje bohatá knihovna zpřístupňující například sériový port, low-level funkce grafického displeje, využití mikro-SD karty, vstupně výstupní porty a další. To samozřejmě umožňuje vývojářům úplně vypustit externě připojený mikrokontrolér a veškeré nezbytné procesy realizovat přímo na modulu OLED displeje.
Na rozdíl od profilu, kde je využívána k ovládání displeje sériová linka, není 4DGL možné použít ihned. Příslušný firmware je nutné nejprve do kontroléru nahrát. S přiloženými nástroji je ale tento krok záležitostí několika málo minut.
Obrázek 1: μOLED-128-G1 s připojeným převodníkem USB/UART
Shrnutí základních vlastností
- PMOLED 128x128px, 256/65k barev.
- Fyzické rozměry 45.5x33.5x6.5mm, 1,5 palce úhlopříčka, viditelná plocha 27x27mm.
- Z principu OLED nevyžadují podsvícení, grafika je viditelná ve 180°.
- Jednoduché 5 pinové rozhraní: VCC, TX, RX, RESET, GND.
- Nepájecí napětí v rozsahu 3.6 – 6V, spotřeba 40mA při nominálních 5V. Při využití SD karty je nutné napájecí napětí udržovat na min. 4V.
- Sériové rozhranní (UART) na úrovních 0-3.3V.
- Ovládání prostřednictvím sériové linky nebo SW rozhraní 4DGL.
- Volitelné rozhranní USB.
- Vestavěný adaptér pro μSD kartu (obrázky, ikony, animace).
Sériové komunikační rozhraní
Ovládání prostřednictvím sériového rozhraní je základní metodou jak pracovat s moduly μOLED-128-G1. Nejdůležitejším krokem při pochopení ovládní modulu je správné porozumění syntaxi řídicích příkazů. Příkazy se dělí na tři hlavní skupiny:
- Obecná instrukční sada.
- Sada instrukcí pro konkrétní displej.
- Rozšířená sada (například pro SD kartu).
Následující obrázek přináší základní představu o ovládání μOLED-128-G1. Masterem může být jakýkoliv mikrokontrolér nebo PC vybavený standardní sériovou linkou.
Obrázek 2: Základní představa o řízení displej μOLED-128-G1
Komunikační protokol
My si dnes ukážeme jakým způsobem zobrazovat na uvedeném OLED displeji jednoduché tvary a texty. Vše je zařízeno prostřednictvím jednoduchého komunikačního protokolu, který nevyžaduje žádný speciální SW ani výpočet CRC. Vhodným prostředkem je jakýkoliv terminál, kde je možné kombinovat zápis v hexadecimálním formátu a ascii zápis znaků (pouze v případě, že chceme pracovat s textem). Dobrým terminálem, je například DockLight. Jeho nevýhodou je, že se jedná o placený produkt.
Všechny níže uvedené zápisy jsou kombinací hexadecimálního zápisu ve formátu 0xXX a ASCII zápisu ‘X’. Příkazy a jejich parametry jsou jednobajtové, výjimku tvoří pouze parametr specifikující barvu. Vzhledem k barevné hloubce je nutné barvu přenášet ve dvou bajtech ve formě big Indian, tedy vyšší bajt je přenášen jako první.
Master zasílající příkazy displeji může komunikovat rychlostí od 300Baud do 256kBaud. Aby displej (slave) věděl jakou rychlostí bude probíhat komunikace, musí prvním bajtem který je zaslán být znak ‘U’ tedy 0x55. Tato inicializace musí být provedena vždy po zapnutí napájení a nebo resetu modulu. Dále je již možno zasílat libovolné příkazy k ovládání displeje. Je-li třeba změnit přenosovou rychlost, pak je nutné vypnout a zapnout napájení, a nebo provést reset modulu. Je třeba počítat z vlastní inicializací systému modulu. Ta trvá 1000+100ms. Do té doby není vhodné zasílat ‘U’, příkaz by nebyl zpracován. Není-li do 5s po připojení napájení provedeno nastavení přenosové rychlosti, je zobrazen splashscreen.
Všechny příkazy jsou tvořeny jedním a nebo více bajty. Po odeslání příkazu a jeho zpracování je odeslána odpověď o tom, zda byl příkaz zaslán korektně (ACK – 0x06) nebo že mu nebylo porozuměno (NAK – 0x15). Pro zpracování zprávy není určen žádný timeout, to znamená, že pokud místo 4 bajtů zašleme pouze 3 a následně zašleme další zprávu, pak systém vyhodnotí obě zprávy jako jednu a tím pádem jako chybnou zprávu a zašle NAK.
Nejjednodušším příkazem je už uvedený příkaz pro autobauding:
‘U’ nebo také 0x55.
Příkaz není potvrzován žádným speciálním znakem (CR, LF), je odeslán tak jak je uveden. Na rozdíl od jiných příkazů, tento nemůže být opakován až do následujícího resetu modulu. Dalším jednobajtovým příkazem je příkaz pro vymazání displeje
‘E’ nebo také 0x45.
Většina dalších příkazů již vyžaduje parametry. Zde je nutné dodat, že parametry nejsou opět oddělovány žádným speciálním znakem typu mezera, čárka, apostrof a další. Tyto znaky jsou zde uvedeny pouze pro názornost.
Pro nakreslení kružnice je tak možné odeslat následující data:
0x43, 0x3F, 0x3F, 0x22, 0x00, 0x1F
Uvedený příkaz nakreslí kružnici (0x43 – ‘C’) na souřadnicích 0x3F, 0x3F (63, 63) s průměrem 0x22 (34) a barvou 0x001F. V podobném duchu se nese i většina dalších příkazů z nichž je možné jmenovat vykreslení mnohoúhelníku, trojúhelníku, obdélníku, tlačítka s textem, nastavení barvy pozadí, tisk formátovaného a neformátovaného textu, nastavení a tisk uživatelské bitmapy a další. Příkazy je možné řídit i samotné vnitřní registry modulu, to už je ale náročnější činnost. Veškeré příkazy je možné nastudovat v uživatelském manuálu odkazovaném na konci článku.
Fyzické rozhraní pro připojení modulu
Samotný modul OLED displeje vyžaduje pro svou činnost napájení v rozsahu 3,6 – 6V a komunikační linku o napěťové úrovni 3,3V. Tuto službu může hravě obsloužit jednoduchá destička s obvodem FT232RL. Desku je možné zakoupit originální přímo od výrobce modulu, a nebo lze samozřejmě vytvořit desku vlastní.
Obrázek 3: Modul USB-UART od 4D Systems
Na první pohled je jasné, že se jedná o velmi jednoduchou konstrukci. Na následující schéma a layout plošného spoje přináší náhradu za uvedený modul:
Obrázek 4: Schéma převodníku (klikni pro zvětšení)
Obrázek 5: TOP, BOTTOM, MOUNT
Materiálová rozpiska:
- I1 – Převodník FT232RL (FTDI)
- C1 – keramický kondenzátor 10nF (p.0805)
- C2, C3 – keramické kondenzátory 47pF (p.0805)
- C10, C11 – keramické kondenzátory 100nF (p.0805)
- C12 – tantalový kondenzátor 4M7 [SMD A]
- L1 – tlumivka TL.10uH SMD (GME)
- R1 – rezistor 22k (p.0805)
- Q1 – tranzistor BC847 (p.SOT23)
- CON1 – lámací kolíková lišta S1G05
Uvedený HW se nám hodí i v dalším článku zaměřeném na využití interního grafického kontroléru, bude totiž nutné přehrát softwarový profil modulu. Pro propojení lze ale samozřejmě využít i jiný HW, uvítám jakékoliv náměty v komentářích pod článkem.
Odkazy & Download
- http://www.4dsystems.com.au/ - výrobce inteligentních modulů OLED
- http://www.4dsystems.com.au/prod.php?id=28 – domovská stránka μOLED-128-G1
- Objednat μOLED-128-G1 v HW shopu
- Další OLED produkty v HW Shopu
- Podklady pro DPS (PADS)