Toolchain
Arduino Nano ESP32 (ESP32-S3) + VS Code
1. Pakiety systemowe
sudo apt update
sudo apt install git python3 python3-venv python3-pip python3-serial curl wget unzip build-essential libusb-1.0-0
Aktywacja środowiska Python venv:
python3 -m venv ~/.venv
source ~/.venv/bin/activate
pip install --upgrade pip
pip install esptool adafruit-ampy rshell mpremote
2. Konfiguracja udev
sudo nano /etc/udev/rules.d/99-esp32.rules
SUBSYSTEM=="tty", ATTRS{idVendor}=="303a", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="303a", MODE="0666"
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1a86", MODE="0666"
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="10c4", MODE="0666"
sudo udevadm control --reload-rules
sudo udevadm trigger
3. VS Code
sudo snap install code --classic
Wtyczki: - PlatformIO IDE\
- Python\
- Pylance\
- C/C++\
- MicroPico
4. Port urządzenia
ls /dev/ttyACM* /dev/ttyUSB* 2>/dev/null
5. Firmware MicroPython
wget https://micropython.org/resources/firmware/esp32s3-20241126-v1.24.0.bin -O micropython.bin
6. Flashowanie MicroPython
source ~/.venv/bin/activate
esptool.py --chip esp32s3 --port /dev/ttyACM0 erase_flash
esptool.py --chip esp32s3 --baud 460800 --port /dev/ttyACM0 write_flash -z 0x0 micropython.bin
7. Projekt PlatformIO
mkdir nanoesp32-mpy
cd nanoesp32-mpy
pio project init --board nanoesp32
rm -rf src/
mkdir -p mpy
touch mpy/main.py
Struktura:
nanoesp32-mpy/ platformio.ini mpy/ main.py lib/ modules/
8. platformio.ini
[platformio]
description = "MicroPython - Arduino Nano ESP32"
[env:nanoesp32]
platform = espressif32
board = nanoesp32
framework = arduino
upload_protocol = esptool
monitor_speed = 115200
extra_scripts = upload_mpy.py
9. Skrypt upload_mpy.py
import os
from SCons.Script import DefaultEnvironment
env = DefaultEnvironment()
project_dir = env["PROJECT_DIR"]
mpy_dir = os.path.join(project_dir, "mpy")
def before_upload(source, target, env):
port = env.subst("$UPLOAD_PORT") or "/dev/ttyACM0"
print(">>> Wgrywanie MicroPython na", port)
os.system(f"mpremote connect {port} fs cp -r {mpy_dir}/* :")
env.AddPreAction("upload", before_upload)
10. Wgrywanie
pio run -t upload
11. REPL
mpremote connect /dev/ttyACM0 repl
12. Przykład main.py
import time
from machine import Pin
led = Pin(13, Pin.OUT)
while True:
led.value(1)
time.sleep(0.5)
led.value(0)
time.sleep(0.5)
13. Przydatne komendy
mpremote connect /dev/ttyACM0 fs ls
mpremote connect /dev/ttyACM0 fs cp main.py :
mpremote connect /dev/ttyACM0 reset
14. Skrócone polecenia
python3 -m venv ~/.venv
source ~/.venv/bin/activate
pip install esptool mpremote
esptool.py --chip esp32s3 erase_flash
esptool.py --chip esp32s3 write_flash -z 0x0 mp.bin
pio run -t upload
mpremote connect /dev/ttyACM0 repl