MicroPython on ESP32

Embedded and IoT
Python

Download Firmware

https://micropython.org/download/

https://micropython.org/download/?port=esp32

ESP32 / WROOM: https://micropython.org/download/ESP32_GENERIC/

Download latest release .bin, e.g.: ESP32_GENERIC-20230426-v1.20.0.bin

Virtual Environment

python3 -m venv esp_venv
 
cd esp_venv
 
source bin/activate
 
pip install esptool

Installation

Plug in the esp32 board.

Check /dev and confirm device is devttyUSB0. If not, adjust instructions accordingly.

If you are putting MicroPython on your board for the first time then you should first erase the entire flash using:

esptool.py --chip esp32 --port /dev/ttyUSB0 erase_flash

From then on program the firmware starting at address 0x1000:

esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 460800 write_flash -z 0x1000 esp32-20190125-v1.10.bin

Port Error

If you see this when running esptool.py:

A fatal error occurred: Could not open /dev/ttyUSB0, the port doesn't exist

You may need to add yourself to the dialout group:

sudo adduser <username> dialout

And maybe also this:

sudo chmod a+rw /dev/ttyUSB0

Access REPL

Install picocom:

sudo apt install picocom

Connect:

picocom /dev/ttyUSB0 -b115200

Hit enter a couple of times, and you’ll see the »> prompt.

Test:

>>> import machine
>>> pin = machine.Pin(2, machine.Pin.OUT)
>>> pin.on()
>>> pin.off()