Przejdź do głównej zawartości

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