from machine import UART, Pin
import time
from umqtt.simple import MQTTClient # 导入 MQTT 客户端库,不同环境可能库名有差异,需适配
# 初始化 UART,使用默认引脚(TX: GPIO1, RX: GPIO3),根据实际硬件调整
uart = UART(1, baudrate=115200, tx=1, rx=3)
# 初始化 LED 引脚,根据实际硬件调整
led = Pin(15, Pin.OUT)
# MQTT 连接参数,根据巴法云平台信息填写
MQTT_BROKER = "bemfa.com" # 巴法云 MQTT 服务器地址,固定
MQTT_PORT = 9501 # 巴法云 MQTT 端口,固定
MQTT_USER = "+8618840167598" # 你的巴法云用户标识
MQTT_PASS = "8854b385911048edaa12808fb1f199e6" # 你的巴法云私钥
MQTT_TOPIC = "myled" # 要上报的主题,对应你设置的 myled
# 初始化 MQTT 客户端
client = MQTTClient(MQTT_USER, MQTT_BROKER, port=MQTT_PORT, user=MQTT_USER, password=MQTT_PASS)
# 连接 MQTT 服务器
try:
client.connect()
print("Connected to MQTT broker")
except Exception as e:
print("MQTT connect failed:", e)
# 运行前提示信息
uart.write(b"\rPlease enter 1 or 0,1 is open led,0 is close led:\n")
while True:
uart.write(b"\r") # 将光标移动到当前行最左边,确保输入从最左开始
# 读取串口数据
if uart.any():
data = uart.read()
print("Received:", data) # 在 REPL 打印接收数据
# 根据串口指令控制 LED 并上报状态到巴法云
if data == b'1':
led.value(1) # 点亮 LED
uart.write(b"\r\nInput 1, LED is ON.\n")
# 上报状态到巴法云,发布消息到 myled 主题
client.publish(MQTT_TOPIC, "ON")
elif data == b'0':
led.value(0) # 熄灭 LED
uart.write(b"\r\nInput 0, LED is OFF.\n")
# 上报状态到巴法云,发布消息到 myled 主题
client.publish(MQTT_TOPIC, "OFF")
else:
uart.write(b"\r\nInvalid input! Please enter 1 or 0.\n")
time.sleep(0.1) # 短暂延时,避免频繁检测