之前做嵌入式的时候遇到的一些问题,这里给一个比较简单的解决方案
一、连接WiFi
要想将数据上传至阿里云服务器,首先得给MCU连上wifi,所以我们新建一个wifi.py
import network
def do_connect():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print('连接网络中...')
wlan.connect('{wifi名称}', '{wifi密码}')
while not wlan.isconnected():
pass
print('网络配置:', wlan.ifconfig())
二、MQTT配置
可以连接wifi之后我们才能与服务器进行通信
我们需要simple库 ,MircoPython不含包管理工具,手动下载simple库,链接:github链接
新建aliyuniot.py
# simple是MQTT库的一部分,连接阿里云用到它
from simple import MQTTClient
import wifi
from config import aliyun_config
def connect_aliyun():
wifi.do_connect()
# 配置MQTT客户端连接参数
clientId = aliyun_config["clientId"]
mqttHostUrl = aliyun_config["mqttHostUrl"]
port = aliyun_config["port"]
username = aliyun_config["username"]
passwd = aliyun_config["passwd"]
# 创建MQTT客户端
client = MQTTClient(client_id=clientId, server=mqttHostUrl, port=port, user=username, password=passwd, keepalive=60)
# 连接到服务器
try:
client.connect()
print("MQTT客户端已连接到阿里云物联网平台")
# 定义要发布的Topic和消息内容
topic = '/sys/{}/{}/thing/event/property/post'.format(aliyun_config["ProductKey"], aliyun_config["DeviceName"])
# 示例:上传心率数据
payload = '{"params": {"heart_rate": 65}}'
# 发布消息
client.publish(topic, payload)
except Exception as e:
print("连接失败:", e)
connect_aliyun()
我们创建一个config.py在里面放我们的配置
aliyun_config = {
"ProductKey": "",
"DeviceName": "",
"DeviceSecret": "",
"clientId":"",
"username":"",
"mqttHostUrl":"",
"passwd":"",
"port":1883,
}
这些配置在阿里云的设备MQTT连接参数可以找到
上报数据的部分在try代码块,可以把它挪出去另写一个更通用的方法
三、测试数据上报
如图,上次心率的数据实际为70bpm。
运行一下单独运行aliyuniot.py
看看数据有没有更新
可以看到心率已经从之前的70bpm变成65bpm了。