43 lines
1.2 KiB
Python
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)
|