Board examples
These examples connect a MicroPython board to the hardware UART exposed by a
Meshtastic radio. The radio must have its serial module enabled in PROTO mode. The
examples choose 115200 baud, so configure the radio to match; Meshtastic's serial
module defaults to 38400 baud.
| Board | Example | MicroPython UART | TX pin | RX pin |
|---|---|---|---|---|
| Seeed Studio XIAO RP2040 | xiao_rp2040.py |
UART0 | D6 / GPIO0 | D7 / GPIO1 |
| Raspberry Pi Pico / Pico W | raspberry_pi_pico.py |
UART0 | GP0 | GP1 |
| Generic ESP32 | esp32.py |
UART2 | GPIO17 | GPIO16 |
Desktop curses dashboard
curses_dashboard.py is a host-side dashboard for macOS or Linux. It displays
connection statistics, known nodes, and received messages, and it can send broadcast
messages. It can connect directly to a radio or through a XIAO RP2040 UART bridge.
python -m pip install -e . pyserial
python examples/curses_dashboard.py /dev/cu.usbmodem123456
For a radio wired to a XIAO RP2040, install MicroMesh and then install the bridge as the XIAO's boot script:
mpremote connect /dev/cu.usbmodem2101 mip install package.json
mpremote connect /dev/cu.usbmodem2101 fs cp examples/xiao_dashboard_bridge.py :main.py
mpremote connect /dev/cu.usbmodem2101 reset
python examples/curses_dashboard.py --xiao-bridge /dev/cu.usbmodem2101
Do not run mpremote at the same time as the dashboard; only one program can own the
XIAO USB serial port. To return to the regular example, replace main.py with
xiao_rp2040.py.
Use mpremote connect list, python -m serial.tools.list_ports, or your operating
system's device list to find the radio port. The message field is always active: type
and press Enter to send. Use Escape to clear it, F5 to refresh, and F10 to quit.
Ctrl-R and Ctrl-Q are also supported. On Windows, install windows-curses and use
a port such as COM4. A message queued status is not a delivery receipt.
Wiring
UART signals cross between the two boards:
MicroPython board TX -> radio RX
MicroPython board RX <- radio TX
MicroPython board GND --- radio GND
Both ends must use 3.3 V UART logic. Do not connect the power pins unless you have confirmed the voltage and current requirements for both boards. Meshtastic radio UART pin names vary by model and may need to be configured in the radio firmware.
Run an example
Install MicroMesh, copy the matching example to the board as main.py, and reset it:
mpremote mip install package.json
mpremote fs cp examples/xiao_rp2040.py :main.py
mpremote reset
Each example requests the node configuration, listens for text messages, and broadcasts
one greeting after configuration completes. Remove the mesh.sendText(...) line for a
receive-only application.