ESP32 OctopusLAB shell 1
V Octopus LAB (sledujte nás na FB) jsme se poslední dobou hodně soustředili na ESP32 ve spojení s Micropythonem. Hledáme limity a možnosti maximálního zjednodušení práce s tímto stále více populárním mikrokontrolérem. Využíváme výborných vlastností Micropythonu (objektové, modulární, file-system…) a v tuto chvíli už trochu na doraz zápolíme s rychlostí i s velikostí paměti RAM i s omezeními dostupných standardních knihoven.
Dalších několik článků se Vám pokusí přiblížit velmi zajímavé možnosti popisovaného propojení ESP s Pythonem. Probereme základy práce se soubory: přesouvání, editace, stahování z webu. Dotkneme se práce s WiFi ale i s BLE (Bluetooth Low Energy). A na závěr nás čeká pár ukázek pokročilejšího multithreadingu nebo async – možností, jak nechat mikrokontrolér dělat víc úloh zároveň.
Cílem článků je seznámit s emulátorem „POSIX“ konzole, který výrazně zjednodušuje práci s ESP, především pro uživatele, kteří nemají zkušenost s mikrokontroléry, ale znají prostředí terminálu z GNU/Linux.
1. Rychlé připomenutí: ESP32
Pro základní práci by Vám mohla posloužit libovolná verze s ESP32 – což je ta „stříbrná známka“ na modulu DoIt s 2x15ti piny. Modul má výhodu snadného programování (obsahuje i stabilizátor 5 > 3.3V) a pro základní experimenty si vystačíme s vestavěnou LED (je na pinu 2).
Pokud využíváme složitější zapojení v náročnějších projektech, vyplatilo by se nám použít ROBOTboard – což je další rozšiřující deska, ke které se dá přímo připojit celá řada senzorů, displejů i motorů.
2. Rychlé připomenutí: Micropython
Micropython je odlehčená verze Pythonu – velmi populárního programovacího jazyka. Jak tento zázrak do ESP nahrát a nakonfigurovat jsme se snažili popsat v jiném článku a shrnout pak zde: https://www.octopuslab.cz/micropython-octopus/
Instalace ve zkratce:
Stáhněte si u nás poslední Micropython: https://octopusengine.org/download/micropython/micropython-octopus.bin (na našem webu je k dispozici aktuální verze, nyní: v1-12-258) Tento Octopus fork Micropythonu se pomocí esptool nahraje do ESP32: Windows / cmd: vas-adresar\esptool.exe --chip esp32 -p COM6 write_flash -z 0x1000 vas-adresar\micropython-octopus.bin Mac/Linux / terminal: vas-adresar/esptool --chip esp32 -p /dev/ttyUSB0 write_flash -z 0x1000 vas-adresar/micropython-octopus.bin ("vas-adresar", "download" i port "COM6" či "/dev/ttyUSB0" si modifikujte podle svého systému) Micropython pak v připojeném terminálu poznáte podle promptu: >>>
Verze octopus- Micropython se liší tím, že jsme přidali modul
octopus_initial s metodou setup, pro snadnější instalaci celého systému z našeho cloudu. Ten se stahuje, průběžně rozbaluje a ukládá ze souboru typu tar (historicky: tape archiver).
Instalace systému s uPyShell: octopus_initial.setup() w a -> přidání a nastavení wifi SSID: vaše síť PSW: a heslo cw -> připojení k wifi sd -> měla by se nahrát spousta souborů z cloudu
Ještě si připomeňme dvě hlavní klávesové zkratky řízení ESP:
CTRL+C přeruší běh programu
CTRL+D je soft reset, i nastavení z RAM by se mělo „vytratit“
Někdy je nutno provést Hard Reset (tlačítkem RST nebo EN, občas dokonce vypnutím a zapnutím ESP) hlavně po přehrávání některých souborů, kdy stará verze v RAM ještě chvíli trčí a my nechápeme, co se děje. (Například nejnověji změněný config po pouhém CTRL+D nemusí být aktuální)
3. uPyShell
Na akci české Python komunity „hardwarové Pyvo“ (doporučuji: https://pyvo.cz/ ) jsme představili náš experiment #uPyShell (čti: u Pyšel).
Nápad, vytvořit něco jako Linux pro ESP (v Micropythonu), se zrodil už dříve. Jeho realizace jsme se ale (oprávněně) obávali . Nakonec první verze „hloupého jádra“ vznikla za odpoledne jako recese pro vánoční besídku 2019. Některé příkazy jsme totiž měli již naprogramované, například: ls(„examples“), mkdir(„newTest“), cp(„f1″,“f2“), cat(„file.py“) .
Právě proto, že psát parametry se závorkami a uvozovkami je hrozně zdlouhavé, změnili jsme formát volání příkazů na čistý „command-line“ styl. A samotné nás dost překvapilo, o kolik je tento způsob efektivnější a příjemnější. (Bavíme se o používání v příkazové řádce, při psaní programu je to delší vypisování s python-syntaxí rozhodně opodstatněné.)
>>> from util.shell import ls >>> ls("examples") takto se to mohlo používat už minulý rok
Ale už máme uPyShell! Takže pro jednoduchou práci se soubory, editaci nebo testování „paralelních“ procesů si zavoláme:
>>> from util.shell import shell >>> shell() # a jsem jakoby v Linuxu, kde stačí psát bez závorek jenom: ls
Základní příkazy
Co nás zajímá nejvíce: Kolik mám na ESP volného místa? Co všechno tam mám nainstalováno? Můžu něco přesunout? Smazat? Přejmenovat?
Na 90% si vystačíme s ls, cd, mkdir, cp, rm, free… a to už nám tam běželo. Navíc k tomu přidáváme edit (jednoduchý řádkový editor pro malé python programy) a run pro jejich spouštění. A ještě pár dalších novinek, ale nepředbíhejme.
Po příkazu ls (na obrázku nahoře) následuje i ukázka spouštění jednoduchého kódu, běžícího v samostatném vlákně pomocí příkazu run. Ještě nás ale čeká podrobnější popis a seznámení s dalšími částmi shellu.
Ale o tom až v příštím díle. Napište, zda se se Vám podařilo uPyShell vůbec rozeběhnout.