Files
micromesh/examples/esp32.py
T

43 lines
1.2 KiB
Python

"""MicroMesh example for a generic ESP32 development board.
Wiring (cross TX and RX):
ESP32 GPIO17 / UART2 TX -> Meshtastic radio RX
ESP32 GPIO16 / UART2 RX <- Meshtastic radio TX
ESP32 GND --- Meshtastic radio GND
Change the pin numbers when GPIO16 or GPIO17 is unavailable on your board.
"""
from machine import Pin, UART
from time import sleep_ms
from micromesh import PortNum, SerialInterface
def on_packet(packet):
if packet.WhichOneof("payload_variant") != "decoded":
return
if packet.decoded.portnum == PortNum.TEXT_MESSAGE_APP:
try:
text = packet.decoded.payload.decode("utf-8")
except UnicodeError:
text = repr(packet.decoded.payload)
print("from !%08x: %s" % (packet.from_, text))
def on_error(error, payload):
print("skipping undecodable radio frame:", error, "(%d bytes)" % len(payload))
uart = UART(2, baudrate=115200, tx=Pin(17), rx=Pin(16), timeout=0, rxbuf=1024)
mesh = SerialInterface(uart, on_packet=on_packet, on_log=print, on_error=on_error)
mesh.connect()
hello_sent = False
while True:
mesh.poll()
if mesh.config_complete and not hello_sent:
mesh.sendText("hello from ESP32")
hello_sent = True
sleep_ms(10)