Amaro04


Odstavec se zeleným podkladem patří do článku a bylo by fajn ho také „nějak“ zvýraznit, alespoň rámečkem, ideálně i obdobným barevným podkladem


Octopus LAB – Micropython pro ESP32 (4)

V tomto článku přejdeme od práce s příkazy v terminálu k psaní kódu MicroPythonu do samostatných souborů, což usnadňuje organizaci a sdílení projektů. Dále se zaměříme na popis základních PINů a rozhraní ESP32 včetně dotykového vstupu. Můžete si zkusit jednoduchý příklad použití dotykového „tlačítka“. Pod čarou zmíníme účast společnosti OctopusLAB na pražském Maker Faire a stručně představíme vybrané projekty postavené na ESP32.

Python je populární programovací jazyk, který umožňuje rychlé a efektivní vytváření programů. Při práci s Pythonem (přesněji MicroPythonem) jsme v minulém díle začali s využitím terminálu a příkazy se prováděly přímo ve formě řádkové syntaxe. Tento přístup je užitečný pro rychlé testování, experimentování a ladění programů. Nicméně jakmile se dostanete k vytváření rozsáhlejších a složitějších projektů, je často vhodné přejít k psaní kódu do samostatných souborů. Tímto způsobem můžete lépe organizovat svůj program, oddělit různé části kódu do funkcí a tříd a udržovat tak svůj projekt přehlednější. Kromě toho umožňuje ukládání kódu do souborů snadnější sdílení s ostatními programátory a zpřístupňuje vám znovupoužití již napsaného kódu.


Náš první program

Vrátíme se tentokrát k aplikaci Thonny, kterou jste již měli možnost vyzkoušet i při prvních pokusech z příkazové řádky. V ESP32 máme nahrán MicroPython verze 1.20. To bude platit až do té doby,než neuvedeme změnu. Někdy možná bude nutno přejít na starší (nižší) verzi, protože potřebné moduly (knihovny) nemusí v nové verzi fungovat. Případně nás v průběhu psaní článků překvapí novější verze, což hned oznámíme a pokusíme se dané situaci přizpůsobit. Pro zachování zdravého rozumu a minimalizaci případných škod je ideální stav zůstávat co nejdelší dobu na jedné verzi a především při vytváření rozsáhlejších projektů být v přechodech na nové verze velmi obezřetní.



Vyjedeme z minulé ukázky jednoduchého „hello world“ blikání. Tentokrát příkazy „nevkládáme“ jeden po druhém v pravé spodní části s promptem >>> (na obrázku dole, fialovou barvou), ale píšeme je jako klasický text. Výsledný program pak uložíme pod názvem blink.py zvolením File/Save as.
Aplikace se nás následně zeptá, kam aktuální program chceme uložit.
This computer je volba pro uložení do vašeho PC či notebooku (což doporučujeme pro zálohy a další využívání)
MicroPython device uloží soubor do aktuální vybrané cesty v ESP. V tuto chvíli ji máme v „rootu“ (kořenovém adresáři), což je vidět i vlevo dole. Jiné soubory můžeme ukládat podle potřeby do podaresářů, například components, config, lib… (na obrázku vlevo nahoře).
Dávejte si pozor, kam program ukládáte. Jednou z častých nehod je přepsání programu na nevhodném místě, což vede ke ztrátě dat (když si přepíšete rozpracovanou nefunkční verzí zálohu v PC, místo abyste jí testovali v ESP a naopak).

Program spustíme buď zvolením Run/Run current script v horním menu, přímou volbou F5, nebo pomocí šipky v zeleném kroužku. Na stejném místě je pak i funkce STOP (v červeném šestiúhelníku), která běh programu přeruší. Program se dá ukončit i pomocí CTRL+C (známe z REPLU).

Máte? Bliká Vám LEDka? Super.


ESP32 – blokové schéma (Espressif Systems)

Než pokročíme dál, ještě se vraťme k základům ESP32, protože tento mikrokontrolér (jak je vidět z obrázku výše) nabízí opravdu mnoho. K jednotlivým částem se budeme dostávat postupně a podrobněji je probereme až v kontextu nějakého konkrétního projektu.
Nyní se zaměříme na přehled o základních PINech a rámcově zmíníme i jednotlivá rozhraní. Shrňme si to nejdůležitější z dokumentace:

34x GPIO	
3 x UARTs, including hardware flow control
3 x SPI
2 x I2S
12 x ADC input channels
2 x DAC
2 x I2C
PWM/timer input/output available on every GPIO pin
OpenOCD debug interface with 32 kB TRAX buffer
SDIO master/slave 50 MHz
Supports external SPI flash up to 16 MB
SD-card interface support
Security Related
WEP, WPA/WPA2 PSK/Enterprise
Hardware accelerated encryption: AES/SHA2/Elliptical Curve Cryptography/RSA-4096

Je nutno podotknout, že jsme se už párkrát setkali s drobnými nesrovnalostmi, které byly uváděny v různých zdrojích a dost nám to znesnadnilo další postup. Proto doporučujeme pro konkrétní projekt vždy dané informace raději ověřit a určitě před finální realizací co nejvíce otestovat.


V rozmezí GPIO00GPIO39 je uváděno 34 PINů. Tyto piny jsou určeny pro všeobecné vstupy a výstupy. Dají se použít jako digitální vstupy nebo výstupy a také je lze konfigurovat pro různé periferní funkce.
ESP32 obsahuje několik analogových vstupů ADC (na obrázku výše jsou označeny oranžovou barvou). Téměř všechny PINy mohou být konfigurovány jako PWM (Pulse Width Modulation), výstupy pro generování signálů s proměnlivou šířkou pulzu.
Dále zde nalezneme integrovanou podporu pro komunikaci přes I2C (Inter-Integrated Circuit) sběrnici. Typické I2C piny jsou GPIO21 jako SDA (Serial Data Line) a GPIO22 jako SCL (Serial Clock Line).
ESP32 také podporuje sériovou periferní rozhraní SPI pro komunikaci s dalšími zařízeními. Standardní piny pro SPI jsou GPIO23 jako MOSI (Master Out Slave In), GPIO19 jako MISO (Master In Slave Out), a GPIO18 jako SCK (Serial Clock). Kromě toho je zde také pin GPIO5, který slouží jako SS (Slave Select) nebo nověji SPI_CS0 (Chip Select). Sériová komunikace pomocí UART (Universal Asynchronous Receiver-Transmitter) vzužívá piny GPIO1 jako TX (Transmit, U0_TXD) a GPIO3 jako RX (Receive, U0_RXD).
DAC (Digital-to-Analog Converter) jsou pak PINy pro převod digitálního signálu na analogový. Máme zde k dispozici dva 8bitové DAC piny, které jsou označeny jako DAC1 (GPIO25) a DAC2 (GPIO26). Můžete je použít pro generování analogových výstupů s různými úrovněmi napětí v rozsahu od 0 V do napájecího napětí ESP32 (což je 3,3V).

Touch (dotykový) vstup na ESP32 je funkce, která umožňuje detekovat dotyky na speciálně navržených kapacitních ploškách (postačí kousek PCB, může být i přelepeno izolepou nebo překryto tenkým sklíčkem) a umožňuje tak implementovat dotykovou funkcionalitu bez nutnosti externích dotykových senzorů. ESP32 podporuje až 10 dotykových vstupů. Pro použití funkce touch na ESP32 je potřeba správně nakonfigurovat dotykové piny a provést inicializaci dotykového ovladače. Poté lze pomocí příslušných funkcí číst a zpracovávat dotyky na dotykové ploše.

Jednoduchý pokus s dotykovým tlačítkem

from time import sleep_ms
from machine import Pin, TouchPad

# Setting up PINs
touch_pin_num = 4
led_pin_num = 2

tp = TouchPad(Pin(touch_pin_num))
led = Pin(led_pin_num, Pin.OUT)

# Main program loop
while True:
    # If touch is detected
    t = tp.read()
    print(t)
    if t < 300:
        led.value(1) #Turn on
    else:
        led.value(0) #Turn off
    sleep_ms(100)

Program uložíme pod názvem touch.py. Opět je k dispozici na githubu:
github.com/octopuslab-cz/prakticka_elektronika_23.


Pro otestování programu a v tomto případě především pro určení správné hraniční hodnoty (threshold) pro sepnutí využijeme vestavěné funkce plotter v aplikaci Thonny. Stačí v horní části menu pod View zaškrtnou Plotter a hodnoty, které vypisujeme příkazem print bychom měli vidět v grafu. Pro svoje ESP jsem v první fázi hraniční hodnotu určil 300 a vždy, když jsem se dotknul pinu, rozsvítila se LEDka. Pak s jinou ploškou to vycházelo lépe na 500 (viz graf).


poslední úsek může být opět uveden „pod čarou“, jako posledně, šlo by možná obrázek formátovat na 1,5 sloupce a text vedle…


ESP32 na letošním pražském Maker Faire?

Maker Faire je již tradiční veletrh plný workshopů, interaktivních činností a především nadšených a zvídavých lidí. Světová přehlídka kreativity propojuje zájmové tvůrce a odborníky, zároveň slibuje chytrou zábavu pro rodiny s dětmi. Maker Faire v sobě kombinuje moderní technologie, vědu, design i tradiční řemesla.

Na stánku OctopusLABu jsme měli jako obvykle skoro desítku projektů s ESP32 a MicroPythonem. Ale tentokrát se zmíním o jiných vybraných projektech, které jsou postaveny na ESP32 a stojí podle mého názoru za pozornost.
Vlevo nahoře je ESP32-S-BOX, skvělý modul s dotykovým displejem, který jsme si „vyprosili“ u stánku Espressif. Projekt je popsán na https://github.com/espressif/esp-box, kde jsou i zdrojové kódy.
Dalším modulem (fialový – vlevo dole) je miniaturní generátor entropie, který jsme vyvinuli pro našeho známého z Paralelní Polis. Původně vznikl pro ethereum/kzg-ceremony, ale posouvá se i od obecnější použitelnosti v pokročilé kryptografii. Více na https://proofof.cat/. Zdrojové kódy v MicroPythonu: https://github.com/taxmeifyoucan/proof-of-cat.
Uprostřed je červený Maker badge s e-ink displejem. I ten je popsán na githubu: https://github.com/dronecz/maker_badge. A úplně vpravo je krásný zelený přístroj s OLED displejem od „spřáteleného hackerspace“ Takt. Zde nás velmi zaujalo zpracování TouchPadu. Celý projekt je opět hezky zdokumentován na stránkách https://git.taktpraha.cz/trimen/tctb_hw.
Většině z uvedených zařízení se ještě budeme věnovat více a případně o tom v případě zájmu i napíšeme.


Uvidíme, jak se to vejde na cca dovoustranu.

Další díl: https://www.octopuslab.cz/amaro05/