← zpět na zápisky z Arduino projektů
Jak rozchodit konzoli Micropythonu
Poté, co zdárně nahrajeme Micropython do NodeMCU, bychom se potřebovali nejlépe nějak přihlásit k NodeMCU do Python konzole. V zásadě existují 3 způsoby: REPL, WebREPL AP, WebREPL klient. REPL je zkratka pro Read Evaluate Print Loop a v zásadě to pro nás znamená tu vzdálenou konzoli.
REPL
Do REPL NodeMCU se dostaneme přes USB kabel libovolným sériovým terminálem.
Windows Oblíbený terminál putty s parametry:
- typ připojení: serial
- port: náš port, přes který je NodeMCU připojen na USB
- rychlost 115200
- data bits 8, stop bits 1, no parity, no flow
Po připojení je někdy potřeba stisknout tlačítko Reset
na NodeMCU. Prvních zmatených znaků si nevšímáme a do konzole píšeme:
>>> print("Hura, zije to!")
Další informace bychom získali třeba
>>> help()
Linux
- Lze použít např. terminál screen či třeba picocom.
screen /dev/ttyUSB0 115200
picocom -b 115200 /dev/ttyUSB0
WebREPL AP
Přihlásit se do Micropython konzole lze samozřejmě i vzduchem. Micropython nastartuje automaticky svoje Wifi AP, pokud si nepřejeme něco jiného. Připojení do takového AP je praktické např. v případech, kdy není na blízku router, jsme v neznámém prostředí (na robosoutěži, na přednášce, na konferenci) a chceme se připojit do WebREPL konzole.
Pokud se přihlásíme do sítě NodeMCU, můžeme se tak dostat pomocí WebREPL do konzole Micropythonu. WebREPL je speciální Javascript app, kterou si můžeme stáhnout lokálně, ale která běží i hostovaná online.
Nejdříve je však potřeba WebREPL povolit, jelikož výchozí nastavení je vypnuto.
- NodeMCU připojit přes USB kabel.
- Přihlásit se seriovým terminálem do REPL
- Z konzole spustit:
import webrepl_setup
- Povolíme WebREPL a nastavíme heslo do WebREPL konzole.
- Odpojit NodeMCU od počítače. Vyhledat jiný zdroj napájení pro NodeMCU, třeba USB adaptér nebo baterie.
- Přihlásíme se do wifi sítě NodeMCU - heslo do Micropython wifi je
micropythoN
(pozor, připojením ztratíme internet - budeme v síti NodeMCU). - Jdeme do WebREPL konzole, IP adresa našeho malého NodeMCU AP je
192.168.4.1
. Connect. - Zadat naše heslo a jsme tam.
WebREPL klient
Mnohem praktičtější a asi běžnější je pro vývoj připojení NodeMCU do lokální Wifi sítě k našemu routeru. Chová se pak jako standardní WiFi klient a my můžeme přistupovat současně na NodeMCU i na internet.
- Připojit se do NodeMCU (přes REPL, ne přes WebREPL, protože nastavení způsobí změnu WiFi).
- Přímo v REPL konzoli nakonfigurujeme Micropython tak, aby se připojil automaticky k naší WiFi:
import network wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect('ssid', 'password') # dopln si sve SSID a heslo
- Po chvíli se NodeMCU připojí k WiFi. Výsledek můžeme zkontrolovat pomocí:
wlan.ifconfig()
- Můžeme vidět, že běží 2 rozhraní:
import webrepl webrepl.start()
//TODO: obrázek
- Otevřeme WebREPL a připojíme se na IP adresu, kterou NodeMCU dostalo v naší síti.
//TODO: obrázek
Vypnutí debug výstupu
NodeMCU si pamatuje vždy poslední WiFi, ke které se připojoval a bude se k ní připojovat vždy po startu. Ne žádnou předchozí, takže při změně na jinou WiFi a zpět na původní je potřeba vždy znovu konfigurovat.
Je proto velmi praktické vypnout debug výstup - pokud přeneseme NodeMCU mimo dosah sítě, bude se pokoušet připojit a bude sypat debug hlášení o tom, že to nejde. Tato hlášení mohou zabránit přístupu k REPL konzoli, protože ta neočekává tenhle debug výstup.
import esp
esp.osdebug(None)
Tyto příkazy bychom ale museli psát pokaždé, co NodeMCU nabootuje, takže je dobré je strčit rovnou do souboru boot.py
, který se volá pokaždé, když zařízení bootuje (s Micropythonem).
K tomu budeme potřebovat python program Ampy, který slouží pro přenos souborů tam i zpět. Pozor: přístup přes ampy
není možné využívat souběžně s REPL konzolí.
- Instalace Ampy:
pip install adafruit-ampy
- stažení aktuálního
boot.py
z NodeMCU:ampy --port <PORT> get boot.py > boot.py
- do souboru
boot.py
přidáme na konec:import esp esp.osdebug(None)
- nahrajeme zpět do NodeMCU:
ampy --port <PORT> put boot.py
Více příkazů ampy
je možné získat pomocí:
ampy --help
Alternativně je možné provést stažení a nahrátí souboru pomocí experimentálního rozhraní pro přenos souborů v konzoli WebREPL.
//TODO: obrázek