ESP - IDE
Tabulka nástrojů pro práci s ESP
- flash uPy - "Flashování" Micropythonu
- copy lib - kopírování knihoven z externího zdroje
- deploy /.py - celé "setavení" konkrétního projektu
- Terminal - sériový terminál pro práci s ESP / REPL
- IDE - pokročilejší editor kódu
(lib | *.py - přesun celých knihoven nebo jen dílčí přesun souborů)
- flash uPy - | - copy lib - | - deploy *.py - | - Terminal - | - IDE - | |
---|---|---|---|---|---|
esptool | ✅✅ | ~ | ❌ | ❌ | ❌ |
ampy | ❌ | ✅ | ✅ | ❌ | ❌ |
putty | ❌ | ❌ | ❌ | ✅ | ❌ |
rshell | ❌ | ✅ | ✅ | ✅✅ | ~ |
pip | ❌ | ✅ | ✅✅ | ❌ | ❌ |
FTP | ❌ | ✅✅ | ✅ | ❌ | ❌ |
web_server | ❌ | ~ | ✅ | ✅ | ✅ |
Thonny | ✅ | ~ | ✅ | ✅ | ✅ |
uPyCraft | ✅ | ~ | ✅ | ✅ | ✅ |
EsPy | ~ | ~ | ✅ | ✅ | ✅ |
Mu | ~ | ~ | ✅ | ✅ | ✅ |
shell / editor | ❌ | ❌ | ✅ | ~ | ~ |
deployer | ❌ | ✅ | ✅ | ~ | ~ |
Legenda:
✅✅ ideální | ✅ vhodné | ~ použitelné | ❌ nevhodné
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 put
/ z ESP get
, vytvářet adresáře mkdir
a podobně.
Pozor na kolize portu - ampy nesmí být blokováno sériovým terminálem (screen nebo putty).
Instalace
Pro používání ampy musíte mít nainstalován Python3.
Windows: Instalace Pythonu – hezky popsáno na https://naucse.python.cz/course/pyladies/beginners/install/
Linux: Python bývá už součástí základní instalace
Instalace ampy
přes pip
:
pip install adafruit-ampy
pip install adafruit-ampy --upgrade
Příkazy
ampy --help
ampy --version
¨
Klasickému shellu podobné:
- get
- ls
- mkdir
- put
- reset
- rm
- rmdir
- run
Hlavní příkaz put
Pozor
Následující ukázky jsou pro Win, kde jsme detekovali port COM6
. Stejně tak by to mohl být jiný port nebo na jiných operačních systémech to bude obdobně. Třeba pro Linux to bývá /dev/ttyUSB0
.
ampy -p /COM6 ls
ampy -p /COM6 put main.py
ampy -p /COM6 mkdir config
ampy -p /COM6 mkdir utils
ampy -p /COM6 put ./shell/__init__.py shell/__init__.py
ampy -p /COM6 mkdir lib
ampy -p /COM6 put ./lib/max7219_8digit.py lib/max7219_8digit.py
ampy -p /COM6 put ./lib/ssd1306.py lib/ssd1306.py
...
rshell
Alternativa k ampy nebo Thony se sériovým terminálem screen pro Linux (běží i na Raspberry Pi).
Ke stažení 🡒 github.com/dhylands/rshell.
Instalace
sudo pip3 install rshell
Připojení a spuštění
rshell --buffer-size=30 -p /dev/ttyUSB0
Výchozí cesta k připojené desce je /pyboard
.
Možnost nastavení editoru dalším parametrem: - e nano
, nano je i výchozí (Linux).
Základní příkazy
Podbné Linuxu: ls
(list) a cp
(copy file).
> ls /pyboard
> cp myfile.py /pyboard
> cd
...
> edit /pyboard/main.py
...
> rsync . /pyboard
...
> exit
Terminál + REPL
Plnohodnotný a stabilnější sériový terminál pro REPL se pustí snadno příkazem repl
:
> repl
Pro ukončení práce s terminálem (exit: CTRL+X
) - zpět do rshellu.
PIP
Hesla: PIP| upip | pypi
Pracujeme na vlastních "instalačních balíčcích" (packages) pro Rozšíření MicroPythonu. Tyto balíčky se nejčastěji instalují pomocí pip
(package installer for Python), přesněji upip
(pro Micropython). Chceme používat pypi
(the Python Package Index) na stránkách 🡒 pypi.org/.
micropython-octopus-installer
Základním instalačním balíčkem je micropython-octopus-installer
, nahrazující octopus_initial.setup() v "lite" verzi.
🡒 pipi.org/octopuslab-installer
🡒 github.com/octopuslab-installer
🡒Micropython pro ESP32. (Používáme zatím lépe otestovanou verzi ESP-IDF v3.x
)
V této základní (vanilla) verzi Micropythonu stačí provést dva následující kroky:
Připojení k WiFi
Můžete použít copy&paste celého bloku popmocí CTRL+E
(nezapomeňte si vyplnit svoje ssid a heslo).
import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect('ssid', 'password')
Instalace metody deploy() z octopuslab_installer
import upip
upip.install('micropython-octopuslab-installer')
# wait for install
from lib import octopuslab_installer
octopuslab_installer.deploy()
uPip
>>> import upip
>>> upip.help()
upip - Simple PyPI package manager for MicroPython
Usage: micropython -m upip install [-p <path>] <package>... | -r <requirements.txt>
import upip; upip.install(package_or_list, [<path>])
If <path> is not given, packages will be installed into sys.path[1]
(can be set from MICROPYPATH environment variable, if current system
supports that).
Current value of sys.path[1]: /lib
Note: only MicroPython packages (usually, named micropython-*) are supported
for installation, upip does not support arbitrary code in setup.py.
Možnosti instalace dalších "balíčků" uvádíme v samostatné kapitole Rozšíření MicroPythonu.
FTP
FTP (File transfer protocol) - protokol pro přenos souborů mezi počítači pomocí počítačové sítě.
Původní knihovna pro ESP8266 i ESP32 v základu funguje. Používáme například FTP plugin Total Commanderu (testováno ve Win 10).
Jednoduchá verze - na ESP běží samostatně "pouze" FTP. Po připojení k lokální síti se spustí FTP a vypíše IP adresu.
>>> from utils.octopus_lib import w
>>> w() # wifi connect
>>> import ftp
>>> ftp
FTP Server started on 192.168.x.y # -> IP
Spustit se dá i ze setup() - příkazy cw
-> ftp
.
Použití z Total commanderu
V menu Síť
se zvolí Protokol FTP - připojit kserveru
(nebo přímo: CTRL-F
), což vyvolá FTP okno, kde se zvolí Nové připojení
a vyplní do Hostilel [port]
IP adresa, kterou vám ESP oználilo. (Nejčastěji 192.168.x.y, kde x y jsou konkrétní čísla). Toto nastavení si uložíme v poli Název relace
například pod názvem "ESP32".
Pro jednorázové připojení stačí v menu Síť
zvolit Protokol FTP - nové připojení
(nebo přímo: CTRL-N
) a zadat IP adresu.
Použití v terminálu Linuxu
$ sudo apt-get install ftp
$ ftp 192.168.x.y
ftp> ls
...
ftp> mput *.py
...
ftp> prompt
Zdrojová knihovna 🡒 github.com/robert-hh/FTP-Server...
Možnost běhu i v threadu a pod., zatím netestováno.
import uftpd
uftpd.start()
# uftpd.start([port = 21][, verbose = level])
Použití v projektech
Po boot se stiskem tlačítka BOOT
/EN
spustí ftp server, pokud tlačítko stiknuto není, bude pokračovat standardní program.
from time import sleep
from machine import Pin
from utils.octopus_lib import w
btnum = 0
button = Pin(0, Pin.IN)
print("press button / CTRL+C or continue")
sleep(1)
for i in range(12):
print("-",end="")
btnum += button.value()
sleep(0.2)
w()
print()
if (btnum > 0):
print("button1 -> start FTP")
import ftp
else:
print("button0 -> continue")
# ...
# your code: ...
Využili jsme například v ukázce WiFi RGB lampičky, kde se dodatečně mohou modifikovat parametry.
Další inspirace: https://www.youtube.com/watch?v=a7DrFqqu-78&t=369s
Thonny
Alternativou k IDE + Ampy (i esptool) je tento jednoduchý nástroj (program běžící na PC). V prvním vydání byl takřka 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. Pomáhají opakované restarty jak ESP tak Aplikace Thony, což není úplně komfortní, ale za zkoušku to stojí.
Nastavení v Tools/Options/Interpreter
, by mělo být zvoleno v Interpreter MicroPython (ESP32)
a v Port Vaše USB připojení k ESP - například Silicon Labs CP210x USB to UART Bridge (COM6)
.
Pak v levém sloupci vidíte i soubory dostupné v ESP, které můžete v hlavním okně (horní) editovat, v okně dolním pak bývá přednastaven terminál (shell).
Tato speciální aplikace Thonny - Python IDE for beginners, je ke stažení zde: 🡒 https://thonny.org/
Pár (anglických) odkazů (ale nebojte se použít google):
uPyCraft
https://randomnerdtutorials.com/uPyCraftWindows
Mu
Další alternativní IDE:
https://codewith.mu/en/download
EsPy
https://github.com/jungervin/EsPy
Připravujeme: deployer