fixes
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
"""MicroMesh example for the Seeed Studio XIAO RP2040.
|
||||
|
||||
Wiring (cross TX and RX):
|
||||
XIAO D6 / GPIO0 / TX -> Meshtastic radio RX
|
||||
XIAO D7 / GPIO1 / RX <- Meshtastic radio TX
|
||||
XIAO GND --- Meshtastic radio GND
|
||||
"""
|
||||
|
||||
from machine import Pin, UART
|
||||
from time import sleep_ms, ticks_diff, ticks_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_receive(message):
|
||||
variant = message.WhichOneof("payload_variant")
|
||||
print("radio message:", variant or "unknown")
|
||||
|
||||
|
||||
def on_error(error, payload):
|
||||
print("skipping undecodable radio frame:", error)
|
||||
print("frame bytes:", payload.hex())
|
||||
|
||||
|
||||
print("MicroMesh starting on XIAO RP2040")
|
||||
print("UART0: D6/GPIO0 TX -> radio RX")
|
||||
print("UART0: D7/GPIO1 RX <- radio TX")
|
||||
print("UART0: 115200 baud; common GND required")
|
||||
|
||||
uart = UART(
|
||||
0,
|
||||
baudrate=115200,
|
||||
tx=Pin(0), # XIAO D6
|
||||
rx=Pin(1), # XIAO D7
|
||||
timeout=0,
|
||||
rxbuf=1024,
|
||||
)
|
||||
|
||||
mesh = SerialInterface(
|
||||
uart,
|
||||
on_receive=on_receive,
|
||||
on_packet=on_packet,
|
||||
on_log=lambda line: print("radio log:", line),
|
||||
on_error=on_error,
|
||||
)
|
||||
mesh.connect()
|
||||
print("configuration requested; id=%08x" % mesh.config_id)
|
||||
|
||||
hello_sent = False
|
||||
last_status = ticks_ms()
|
||||
while True:
|
||||
mesh.poll()
|
||||
if mesh.config_complete and not hello_sent:
|
||||
print("radio configuration complete; sending greeting")
|
||||
mesh.sendText("hello from XIAO RP2040")
|
||||
hello_sent = True
|
||||
now = ticks_ms()
|
||||
if ticks_diff(now, last_status) >= 5000:
|
||||
if mesh.config_complete:
|
||||
print("connected; %d nodes known" % len(mesh.nodes))
|
||||
else:
|
||||
print("waiting for radio data; check TX/RX, GND, baud, and PROTO mode")
|
||||
last_status = now
|
||||
sleep_ms(10)
|
||||
Reference in New Issue
Block a user