Amaro02


osnova:

různé varianty ESP, moduly, známky
instalace Micropythonu


záleží, jak se ne dvoustranu vejde
je v plánu i hello word, bliknutí LEDkou,
ale to už může být zase až v pokračování (3)



Octopus LAB – Micropython pro ESP32 (2)


První konkrétnější seznámení s ESP

ESP32 navazuje na popularitu svého předchůdce ESP8266. Ten byl anglicky mluvící komunitě tvůrců představen bezmála před deseti lety! Zpočátku však neexistovala k tomuto čipu téměř žádná anglicky („nečínsky“) psaná dokumentace.
Kombinace velmi malého počtu externích komponent a relativně nízké ceny přilákala mnoho bastlířů i „hackerů“ k prozkoumání čipu a posléze i k překladu čínské dokumentace. A tak příchodem modulu ESP-01 (od externího výrobce Ai-Thinker) někdy v roce 2014 byla zahájena dekáda stále rostoucího zájmu. V první fázi se například používal k Arduinu pro připojení k WiFi, než se zjistilo, že „pokročilejší“ přeprogramování v ESP může plně Arduino nahradit.

Variant modulů s EP32 je opravdu mnoho

Popišme si některé z nich, které můžete vidět na obrázku:

  1. ESP-WROOM-32 (ESPRESSIF) – „známka“, která existuje v celé řadě provedení (verze C2/C3) nebo s rozšířenou flash pamětí, které se dají rozeznat podle toho, co mají uvedeno na koci popisu – XXN4 (pro 4M) nebo XXN8 (pro 8M). My používáme například i ESP32-S s přidaným konektorem na externí anténu nebo varianty s větší RAM pamětí.

  2. ESP32 – speciální programovací modul s „drátěnými“ konektory, který umožňuje otestovat či naprogramovat „známku“ ještě před případným osazením. Na obrázku je verze pro větší modul, klasický má piny rozmístěny po části obvodu ve tvaru „U“. Precizní provedení zajistí dobrý kontakt se „zoubky známky“ a zachovává možnost snadné manipulace bez nutnosti pájení. Vzhledem k velké variabilitě velikosti a tvaru „známek“ je dnes potřeba pro univerzální vývoj mít zhruba pět variant těchto programátorů, samozřejmě se dá vystačit s jednou nebo dvěma, které sami nejčastěji používáme.

  3. ESP32 – DoIt (15×2 pinů). Základní a velmi rozšířená verze modulu s USB konektorem, programátorem a vestavěnou LED (a jednou signalizační LED). Hlásí se jako Silicon Labs CP210x to UART Bridge (COMx, kde x je přidělené číslo COM portu). Velmi často se zaměňuje s dalšími vývodově nekompatibilními variantami, které mají pinů více (například 2×19). Ty ale jsme nepoužívali, protože piny navíc se většinou stejně nedaly používat.

  4. ESP32-WROOM (na desce je vyvedeno 2×10 pinů). Kompaktní verze, kterou jsme již nahradili vlastními moduly. V současné době máme i variantu s C3 a možností připojení k baterii.

  5. ESP32board1 – neosazená verze 2 s externím programátorem (6).

  6. Samostatný převodník UART/USB, který používáme k programování.
    Hlásí se také jako Silicon Labs CP210x to UART Bridge (COMx).

  7. ESP32board – částečně osazená verze 6 s FTDI. Hlásí se jako USB Serial Port (COMx), námi předkonfigurováno i jako Octopus Lab, ale pro vyšší cenu FTDI programátoru (USB-UART) uživatelé upřednostňují levnější varianty.

Připojení ESP32 k počítači

ESP se při programování a práci s MicroPythonem připojuje k USB rozhraní počítače, kde pak využíváme sériový terminál. Většina starších modelů potřebovala speciální obvod USB-UART (USB TO UART BRIDGE), který řeší převod ze sériové komunikační linky UART (Asynchronní Sériové Datové Přenosové Rozhraní) na standardní USB (Universal Serial Bus). Nejčastěji se můžete setkat s těmito převodníky:


jednoduchá tabulka?

CP2102

  • Rychlost přenosu dat: 300bps ~ 1Mbps
  • USB Interface: USB 2.0
  • Podporované napětí: 3,3 / 5 V
  • Nejběžnější verze má rozměry 5 x 5 mm, takže pokud vidíte na modulu „čtvereček“, jedná se velmi pravděpodobně o tuto verzi.

CH340

  • Velký rozsah rychlosti přenosu dat: 50bps~2Mbps.
  • Podporované napětí: 5 V (podle typu)
  • Rozměry: „největší“ verze 7,5 x 11,3 mm umožní snadnější připájení SMD i v domácích podmínkách
    (existují různé varianty a mnohá pouzdra CH340N – SOP8, CH340C/G – SOP16, CH340R/T – SSOP20…)
    Existuje však celá řada neoriginálních čínských klonů, které mají parametry často o dost jiné (většinou horší).

FTDI FT231X

  • Maximální rychlost přenosu dat: 3 Mb/s
  • Podporované napětí: 3,3 V
  • Rozměry cca: 3 x 5 mm
  • Další funkce: nízká spotřeba energie, vyšší spolehlivost a dostupnost ovladačů s možností zákaznického „podpisu“. My máme v dmesg nejčastěji „octopuslab esp32 board“
  • Podstatná výhoda: nepotřebuje specializované ovladače

Většina typů má integrovaný oscilátor takže nepotřebují téměř žádné externí součástky. Některé mají i napájecí regulátor napětí, takže jejich použití je o to více univerzální. Je dobré mít na paměti, že parametry převodníků USB-UART se mohou lišit v závislosti na konkrétních modelech, výrobcích a verzích. A existuje i celá řada dalších typů, které mohou mít další funkce navíc.


Takže pokud máte modul s ESP32 a nějakým výše zmíněným převodníkem, stačí jej připojit k počítači pomocí USB kabelu. Starší verze využívaly převážně Micro-USB, ale nově se už setkáváme více se standardem USB-C. I na to je dobré si dát pozor a u starší verze mít kvalitnější kabel. Některé „pouze pro nabíjení“ jsou velice nespolehlivé pro datovou komunikaci a programování nebo dokonce vůbec nefungují.

Na obrázku je modul DoIt (2×15) v modulu vývojové desky ROBOTboard (ale vám stačí ESP32 samostatně).
Je připojen ke stařičkému Laptopu Asus eee na platformě Intel Atom, kde běží odlehčená Linuxová distribuce Mint. A na práci s MicroPythonem nám to bohatě postačuje, protože jsme více limitováni samotným ESP32.

První připojení a základ komunikace

Připojení – GNU Linux

Linuxovým uživatelům asi nemusíme představovat terminál, ze kterého se dá „ovládat“ většina toho, co je potřeba. Připojíme modul kabelem k USB počítače a pro úplně první připojení je občas potřeba provést ještě pár zásadních nastavení.
Musíte svého uživatele mít ve skupině dialout. Do jakých skupin patří „můj“ uživatel (pod kterým jste přihlášeni) zjistíte příkazem groups. Pokud není mezi vypsanými hodnotami uvedeno dialout, tak se do skupiny přidá následujícím příkazem (pod rootem):

$ sudo usermod -a -G dialout ${USER}

poznámka pro redaktora:

bylo by dobré „sjednotit“ vypisování kódu – neproporcionální písmo,
zde na web. stránce se může objevit se šedým podkladem,
v tištěném časopise určitě jen na bílé, možná s rámečkem?




Aby se načetlo nové oprávnění, je nutné se odhlásit a znovu přihlásit (nebo restartovat počítač). Že se všechno podařilo, ověříme tak, že po opětovném vypsání všech skupin vidíme, že je mezi nimi dialout.
Náš uživatel tak získal potřebná oprávnění ke komunikaci se sériovým portem a může přistupovat k zařízení připojenému na tomto portu (Windows bezpečnost přístupu k portům na podobné úrovni neřeší).

Po připojení zařízení k počítači se dá ověřit, pod jakým názvem bylo ESP připojeno. Vypíšeme-li si níže uvedeným příkazem konec seznamu všech připojených zařízení (bezprostředně po připojení toho našeho, aby bylo na konci). Měli bychom vidět použitý převodník (zde cp210x) a hlavně pod jakým názvem je naše zařízení připojeno (zpravidla ttyUSB0).

$ dmesg | tail
...
[  489.645783] usb 1-2: Product: CP2102 USB to UART Bridge Controller
[  489.645789] usb 1-2: Manufacturer: Silicon Labs
[  489.645794] usb 1-2: SerialNumber: 0001
[  489.657053] cp210x 1-2:1.0: cp210x converter detected
[  489.658450] usb 1-2: cp210x converter now attached to ttyUSB0


Název zařízení pak dále používáme (i pro konfiguraci níže popsané aplikace Thonny), případně se dá využít i připojení pomocí nástroje screen (sériový terminál) tímto příkazem:

$ screen /dev/ttyUSB0 115200

Pokud vidíte jen černou obrazovku, zmáčkněte Ctrl+C, pak by se konečně měl objevit terminál, ve kterém se ve výchozím stavu ESP vypisují nějaké „hlášky“ z testovacího programu. Po nainstalování MicroPythonu však uvidíte terminál Pythonu (s promptem >>>). To už bude MicroPython, který poběží ve vašem ESP!

>>>

Příkaz screen je trochu „náročnější“ na ovládání. Ukončí se totiž pomocí sekvence Ctrl+A a následném zmáčknutí samotné klávesy K, načež se objeví potvrzující dotaz, který odsouhlasíme zmáčknutím klávesy Y.

Připojení – Windows



Správce zařízení vyvoláte výběrem v menu po stisknutí symbolu Windows spolu s X (Win+X). Za chvilku po připojení kabelu s modulem uvidíte v sekci Porty (COM a LPT) jaký ovladač má vaše ESP (v ukázce to je CP210x) a jaký „virtuální“ COM port mu byl přidělen. My si ho většinou i dodatečně změníme na COM6, protože pak snadněji a jednotně používáme připravené skripty. Pokud se ESP nepřipojí nebo se s ním následně nedá komunikovat, bývá velmi častou závadou špatný USB kabel.

Pokud se u ovladače objeví symbol vykřičníku, je nutné doinstalovat (nebo přeinstalovat) ovladač pro sériovou linku ze stránek výrobce Silabs USB to serial – silabs.com/developers/usb-to-uart-bridge-vcp-drivers.



Instalace MicroPythonu do ESP32

V prvním kroku si připravíme základní prostředí a nástroje, které jsou nezbytné pro další práci. Stále máme možnost využít starší a do jisté míry „nízkoúrovňovou“ variantu a pracovat s jednotlivými nástroji samostatně. Je to trochu pracnější, ale při složitějších projektech to máme více pod kontrolou.
(Pokud zatím nechcete jít do větší hloubky, můžete tento blok v klidu přeskočit a přejít přímo k Thonny. Sem se pak můžete vrátit až v případě potřeby později).

Pro nahrání MicroPythonu (2) do ESP se dá použít program Esptool (1) přímo od společnosti Espressif. Pro přesun souborů z PC do ESP pak můžete využít nástroj Ampy a pro komunikaci terminál Putty (3). My ale už doporučujeme aplikaci Thonny, která výše uvedené nástroje z velké části plnohodnotně zastoupí.
Na obrázku je také naznačen Framework Octopus, který díky rozsáhlému souboru knihoven může hodně práce urychlit i ulehčit.


Esptool, pokud vás to zajímá, můžete samostatně nainstalovat pomocí pip, ale existuje i v spustitelné verzi. (Zazipovaný esptool.exe pro Windows je ke stažení zde: dl.espressif.com/dl/esptool-2.6.1-windows.zip.)
Instalace MicroPythonu se pak provede z příkazové řádky („cmd“):

esptool.exe --chip esp32 -p COM6 write_flash -z 0x1000 ./micropython-octopus.bin

(kde *.bin je verze MicroPythonu, kterou jsme si stáhli do připraveného adresáře a hodláme ji pro daný projekt v ESP používat, ještě to podrobněji probereme v další části).

Ampy se také instaluje pomocí instalátoru Python balíčků (předpokládá se, že máte python i pip nainstalovaný):

pip install adafruit-ampy

S programem ampy pracujeme v příkazové řádce svého počítače. Slouží pro „vzdálenou“ práci s ESP po sériové lince, kdy nám umožňuje především přesouvat soubory do ESP putz ESP get, vytvářet adresáře mkdir a podobně.

Putty je třetí nástroj, který jsme využívali jako terminál (než jsme přešli z velké části na Thonny).
Spustitelný soubor se dá stáhnout zde: www.chiark.greenend.org.uk/~sgtatham/putty/latest.html.


Thonny

Thonny je integrované vývojové prostředí (IDE) pro vytváření jednodušších programů v programovacím jazyce Python. Obsahuje integrovaný Python a jelikož umí pracovat s externím ESP s jeho MicroPythonem, je jednou z možností, jak ESP programovat. Nepotřebujete proto zvlášť instalovat esptool, ten je v Thonny přímo obsažen. Stejně tak pro přesouvání souborů není potřeba Ampy.
Před několika lety byl Thonny sice téměř nepoužitelný (až na pár tutoriálových výjimek), ale novější verze, po odstranění řady zásadních nedostatků, už běží mnohem lépe. Pro velmi jednoduché a paměťově nenáročné pokusy funguje podle očekávání, ale když chcete připojení k WiFi a zároveň BlueTooth, tak nejspíš narazíte. Občas i běžící program znemožní korektní start Thonny, a jelikož se „tluče“ komunikace na sériovém portu, musíte si osvojit specifické rutiny, jak to provozovat. V krajním případě pomáhají opakované restarty jak ESP tak Aplikace Thonny, což není úplně komfortní, ale za pokus to stojí. V ukázkách, které budou součástí tohoto seriálu je však Thonny plně dostačující a velmi pohodlný nástroj.

Pro samotnou práci s ESP32 nastavte v Tools/Options/Interpreter: Interpreter MicroPython (ESP32) a v Port Vaše USB připojení k ESP – například Silicon Labs CP210x USB to UART Bridge (COM6 v našem případě).


Z oficiálních stránek MicroPythonu micropython.org/download/esp32/ si stáhneme Firmware, což je binární soubor (*.bin) který pak přehrajeme do ESP. Vybíráme si verzi vanilla z releases (latest):
micropython.org/resources/firmware/esp32-20220618-v1.19.1.bin

Vanilla MicroPython je verze, která se dodává s oficiálním firmwarem (a také SDK) a neobsahuje žádné rozšíření nebo moduly. Jedná se tedy o základní verzi MicroPythonu, která umožňuje spouštět Python kód na ESP mikrokontrolérech.
Latest bývá poslední stabilní verze, kterou používáme nejčastěji. Aktuálně se stále jedná o verzi 1.19 z června 2022 (20220618).
Přechod na nejnovější (která ještě nebyla vydána) budeme uskutečňovat velmi obezřetně.
Vzhledem k mnohdy zásadním změnám, možnosti výskytu neodhalených chyb nebo nekompatibilitě s předchozími verzemi se vyplatí na oficiálně vydanou stabilní verzi počkat.
Pouze experimentálně zkoušíme i čerstvé „Nightly builds„. Tyto nové „nestabilní“ verze jsou vydávány i několikrát týdně a umožnují nám otestovat některé nové vlastnosti nebo ověřit odstranění případných chyb, které nám v projektu vadily.
Všechny změny zahrnuté v nových verzích jsou přehledně zaznamenány v příslušném příspěvku (commitu) v MicroPython repozitáři (https://github.com/micropython/micropython/commits/master).

Binární soubor jsem si nahrál (ve Windows) do adresáře: C:/Users/Yenda/Downloads/—-Micropython—-.bin

Pak v Thonny zvolíte Run / Configure interpreter – a dole vybereme „Install or update MicroPython
(což je vidět na obrázku výše v pravém dolním rohu nad „OK / cancel“)

Po zvolení Install je někdy nutné ještě na ESP zmáčknout (nebo podržet) tlačítko BOOT. Jsou verze, kdy se při držení BOOT ještě proklikne EN (což je reset).
V případě „potíží“ se o tom více můžete dozvědět zde: www.esp32.com/viewtopic.php?t=5682

Pokud se vše podařilo, tak jak by mělo, po restartu ESP by se měl v terminálu (screen, putty nebo Thonny) zobrazit prompt interaktivního Pythonu. Prompt je výzva k zadání příkazu:  >>>
Když se na nic nevypisuje zmáčkněte ENTER nebo CTRL+D (SW reset) případně CTRL+C (přerušení běhu programu). Terminálový výpis informuje i o aktuální instalované verzi MicroPythonu.

# Vanila 1.19
MicroPython v1.19.1 on 2022-06-18; ESP32 module with ESP32

Type "help()" for more information.

>>>

Pokud je tomu tak, gratulujeme! Máte funkční MicroPython. A za promt si můžete vyzkoušet napsat několik prvních příkazů MicroPythonu. Řádek vždy ukončete zmačknutím ENTERu:

>>> print("ahoj")
ahoj

>>> a = 123
>>> print(a) 
123

>>> b = 56
>>> b - 1
55

>>> import math
>>> print("pf",7**7 % math.factorial(7))
pf 2023

Příkaz (přesněji metoda) print slouží k vypsání textu do terminálu (na monitoru). Parametr (co se má vypsat) se v uvádí do uvozovek, pokud se jedná o řetězec.
Na dalším řádku do proměnné a vložíme hodnotu a tuto proměnnou so příkazem vypíšeme (už bez uvozovek, požadujeme hodnotu proměnné a nikoli znak „a“.
Poslední příklad ukazuje interaktivní provádění příkazu (i matemeatické operace) a bezprostředního výpisu výsledku 56 – 1 = 55.
MicroPython po importu matematické knihovny zvládne i složitější výpočty (mocnina a faktoriál) jako „pf“ (jelikož tento díl vznikal začátkem tohoto roku).



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

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

Pracovní odkazy pod čarou:


https://www.octopuslab.cz/workshop-micropython/