upyshell1

ESP32 OctopusLAB shell 1

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/

Jednou z největších bariér je stále samotná instalace Micropythonu.

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é.)

Verze 2019.
>>> 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.

Příkaz ls (list) ukáže adresáře, soubory i jejich velikosti.

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.