STM32F407 + ML307 阿里云物联网项目总结
STM32F407 ML307 阿里云物联网项目总结一、今日完成的功能功能模块状态说明DHT11 温湿度采集✅ 完成温度、湿度正常读取超声波测距✅ 完成距离数据正常测量ML307 4G 通信✅ 完成AT 指令连接稳定阿里云 MQTT 连接✅ 完成设备在线数据上报成功数据上报温湿度距离✅ 完成三合一数据正常上传结构体管理数据✅ 完成代码模块化易扩展云平台物模型✅ 完成温度、湿度、距离属性已添加独立供电问题⚠️ 待解决需要 5V/2A 独立电源二、代码架构1. 结构体定义ml307.hctypedef struct { float temperature; // 温度 (°C) float humidity; // 湿度 (%) uint32_t distance; // 距离 (mm) } SensorData_t;2. 上报函数ml307.ccvoid ML307_ReportSensor(SensorData_t *data) { char json[192]; sprintf(json, {\id\:\1\,\params\:{\temperature\:%.1f,\humidity\:%.1f,\distance\:%lu}}, data-temperature, data-humidity, data-distance); // 通过 ATMQTTPUB 上报 }3. 主循环main.ccSensorData_t sensor_data; while(1) { // 读取温湿度 DHT_GetData(dht_buf); sensor_data.temperature dht_buf[2]; sensor_data.humidity dht_buf[0]; // 读取距离 sensor_data.distance SR04_GetDistance(); // 上报数据 ML307_ReportSensor(sensor_data); Delay_ms(30000); // 30秒一次 }三、阿里云平台配置属性标识符数据类型步长单位温度temperaturefloat0.1°C湿度humidityfloat0.1%距离distanceint321mm四、硬件接线最终确认ML307STM32F407说明VCC独立 5V/2A必须独立供电GNDGND共地TXDPB11模块发送 → 单片机接收RXDPB10单片机发送 → 模块接收传感器引脚说明DHT11 DATAPG9温湿度需上拉电阻超声波 TRIGPB6触发信号超声波 ECHOPE6回响信号五、关键参数记录阿里云连接参数c#define ALI_PRODUCT_KEY k067yCVEsI7 #define ALI_DEVICE_NAME test #define ALI_MQTT_HOST iot-06z00ab4mcvi9le.mqtt.iothub.aliyuncs.com #define ALI_CLIENT_ID k067yCVEsI7.test|securemode2,signmethodhmacsha256,timestamp1774405660503| #define ALI_USERNAME testk067yCVEsI7 #define ALI_PASSWORD 86c4ffc040da26d56a34f369a897899a98244dd0d96e9a51f68c9b16a14456e8上报 JSON 格式json{ id: 1, params: { temperature: 20.0, humidity: 62.0, distance: 27 } }六、遇到的问题及解决方案问题原因解决方案DHT11 读取失败开始信号拉高 30ms 太长改为 30usML307 无响应供电不足4.53V独立 5V/2A 电源上报时无响应中断函数只检测\n增加检测云端离线但程序运行MQTT 连接检测失败手动验证连接成功拔掉下载线掉电下载线同时供电独立供电七、待解决问题独立供电ML307 需要 5V/2A 独立电源STM32 需要另一路供电电源稳定性长时间运行不掉线云端数据验证确认数据持续更新八、后续扩展建议添加更多传感器GPS、电池电量、空气质量等云端下发指令控制 LED、蜂鸣器等数据本地存储网络不好时暂存数据告警功能温湿度超限时推送通知

相关新闻

最新新闻

日新闻

周新闻

月新闻