Octopus LAB – MicroPython pro ESP32 (9)
V tomto díle pokračujeme v naší sérii o displejích. Speciálně se zaměříme na sériové displeje. Komunikuje se s nimi přes jednoduché sériové rozhraní, takže se velmi snadno připojují. Sériových displejů existuje celá řada, my se ale podrobněji zmíníme pouze o těch, se kterými jsme měli možnost se ve svých projektech více seznámit. Nextion i DGUS jsou typy inteligentních TFT displejů s dotykovou obrazovkou, které jsou navrženy pro snadnou práci při tvorbě uživatelských rozhraní. „Inteligentní“ zde znamená, že řídící deska displeje už sama o sobě disponuje jistou inteligencí, která umožní pohodlnější práci s grafickým zobrazováním nebo implementaci vyhodnocování pro dotykové řízení.
Nextion
Jedna ze stránek projektu: https://nextion.tech/.
Displej Nextion jsme objevili někdy v roce 2016, kdy jsme potřebovali profesionálnější ovládání pro projekt SLA 3D tiskárny 3DWARF (dnes Prusa SLA). Hardware zobrazovače byl na velmi dobré úrovni, ale první verze software byla velký průšvih.
Inteligentní displeje se totiž programují ve speciálních programech. Pro Nextion se nabízí Nextion Editor, což je WYSIWYG editor (What You See Is What You Get), který umožňuje vizuálně navrhovat uživatelské rozhraní. Máte zde možnost vytvářet jednotlivé obrazovky, připravovat si obrázky i pokročilejší grafiku. Je zde možnost definovat různé typy tlačítek a dalších interaktivních prvků.
Avšak první verze těchto programů byly z velké části v čínštině (kombinované se špatnou angličtinou), bez jakékoli rozumné dokumentace a především obsahovaly celou řadu fatálních chyb, které znemožňovaly rozumnou práci nad rámec jednoduchého dema s jediným tlačítkem pod obrázkem. Jak případné neduhy obejít se probíralo v několika málo diskusních fórech, kde se uživatelé snažili společnými silami přesvědčit výrobce, aby chyby opravil. Na opravu se čekalo i několik měsíců a tak až zhruba po roce se dalo s editorem (stále v omezené míře) pracovat.
Samotná práce se správně naprogramovaným displejem pak už byla snadná. Dnes by se dalo říct, že snad všechny zásadní nedostatky jsou už odstraněny. Je ale nutné počítat s tím, že pokud se ve složitějším projektu v některé specifické kombinaci dat bude chovat displej neočekávaně nebo podivně, oprava je velmi zdlouhavý proces a někdy je nutno si počkat až na novou verzi od výrobce.
V roce 2016 jsme na displeji zkoušeli i vykreslovat graf. Na obrázku je ukázka jednoho projektu, který sledoval kurz bitcoinu. Všimněte si, krásné ceny 1248 USD/BTC.
DGUS
Aktuální výrobce DWIN a stránky produktu: www.dwin-global.com/dgus/.
Displej DGUS (Data Graphics User Interface System) je pokročilejší verze zobrazovací jednotky, o které by se dalo říci, že v jistém smyslu navazuje na Nextion. Také tyto displeje nejsou závislé na proprietárním softwaru a údajně by měly být otevřené pro různé platformy a konfigurace. DGUS má pokročilejší mikrokontrolér (jakýsi klon tradiční 8051) a má kvalitnější kapacitní dotykový displej.
Programování DGUS je realizováno pomocí speciálního softwaru poskytovaného výrobcem a ve srovnání s Nextionem je o něco náročnější se v práci s firmware zorientovat. Celý přístup k návrhu i kompilaci je přinejmenším nezvyklý, ale po překonání nemalé vstupní bariéry máte oproti předchozím variantám více možností, jak vytvořit i poměrně složité interaktivní prvky pro ovládání nebo zobrazování.
Na obrázku je jedna z prvních verzí emulátoru palubního počítače v lunárním modulu Apollo. Celý čelní panel jsme nahradili dotykovou klávesnicí a programově by se mělo dát přepínat mezi různými druhy náhledů. Cílem bylo co nejvíce přiblížit velmi zajímavou práci s jedním z úplně prvních minipočítačů. Apollo Guidance Computer (AGC) byl na svou dobu v mnoha směrech opravdu revoluční systém, který hrál klíčovou roli při řízení mise na Měsíc a zpět. Byl navržen tak, aby zvládal poměrně složité výpočty pro navigaci, řízení letu a další operace potřebné pro úspěšné (což znamenalo především bezpečné) dosažení cíle.
„Podprogramy“ se vyvolávaly pomocí kláves Verb (sloveso) následované číselným parametrem například pro Programovat, Navigovat, Monitorovat, Řídit, Kontrolovat. Dále se vkládalo Noun (podstatné jméno) opět následované číslem akce nebo hodnotou vstupních dat. Astronauti měli k dispozici velmi obsáhlý manuál, ve kterém byla popsána většina úkonů, se kterými by se mohli na misi setkat.
Displeje DGUS ve vyrábějí v různých velikostech a několika základních tvarech (čtverec, obdélník ale i kruhové, jak je vidět na obrázku). Provedením jsou poměrně kvalitní a pozorovací úhel displeje je velmi dobrý. I možnost sledování na přímém slunečním světle se v posledních verzích velmi zlepšila.
Pro snadnější práci s displejem na ESP32 v MicroPythonu máme k dispozici první experimentální verzi knihovny (zatím se jedná o první betaverzi určenou k testování pro nejvíce nedočkavé nebo zvědavé uživatele).
https://github.com/octopuslab-cz/micropython-dgus
from machine import UART from dgus import DGUS from dgus.components.textdisplay import TextDisplay ut = UART(2, 115200, rx=36, tx=4) tft = DGUS(ut) tft.event_recv_add(dgus_receive) ...
Interakce s displejem je zjednodušena na práci s moduly, registrování a nastavení událostí a jejich efektivního obsloužení. Koukněte se na základní ukázku ve výše odkazované knihovně.
Pokud si dobře navrhnete rozhraní v displeji, spolupráce s MicroPythonem vám umožní poměrně snadno vytvořit i velmi kvalitní a moderní GUI (Graphical User Interface).
Octopus Serial Display
Zanedlouho to bude už deset let, co jsme pro naše experimenty s mikrokotoléry vymysleli „chytrý sériový displej“.
Začínali jsme v té době s obvody PIC a následně se více věnovali Atmelu. Pak jsme přešli na ATtiny, kde jsme využívali i nově se prosazující Arduino („Arduino Uno“ s mikrokontrolérem ATmega328). Potřebu zobrazovat data na trochu vyšší úrovni jsme pociťovali od prvopočátku práce s číslicovými obvody. V době Arduina se objevila celá řada rozšiřujících modulů. A s nimi i barevný TFT displej s rozlišením 320×240. Ten byl ve své době pro naše projekty zcela postačující. Mohli jsme na něm „vykreslit“ několik řádek textu, tabulku čísel, barevné grafy i jednoduchou grafiku. A tak jsme si navrhli vlastní řešení pro „inteligentní displej“ – v době, kdy se tomu tak ještě neříkalo a zobrazovací jednotky tohoto typu (Nextion nebo DGUS) rozhodně nebyly běžně k sehnání a profesionální průmyslové řešení bylo velmi drahé.
Projekt sériového displeje je opět zdarma k dispozici na githubu:
https://github.com/octopusengine/serial-display
(jedná se o kód v Arduino-C, který je nutno po zkompilování přehrát do Arduina UNO s připojeným displejem)
Pro ESP s MicroPythonem je tu jednoduchá ukázka, jak snadno se pracuje s knihovnou:
# simple basic example - ESP32 + serial "Arduino" 320x240 TFT display from machine import UART print("ESP32 + serial display test") uart = UART(2, 9600) #UART2 > #U2TXD(SERVO1/PWM1_PIN) uart.write('C') #test quick clear display uart.write('R0') # row 0 (first) uart.write('Qoctopus test*') uart.write('R2') # row 2 uart.write('W3') # color 3 (RED) uart.write('Q --- ok --- *') uart.write('W2') # color 2 (YELLOW) uart.write('P10.10') # one yellow point x = 100, y = 50 uart.write('h100') # horizontal line, y = 100 uart.write('W7') # color 7 (CYAN) uart.write('v150') # vertical line, x = 150 uart.write('W1') # color 1 (WHITE) ...