STM32F407 + ML307 阿里云物联网项目总结

STM32F407 + ML307 阿里云物联网项目总结


一、今日完成的功能

功能模块 状态 说明
DHT11 温湿度采集 ✅ 完成 温度、湿度正常读取
超声波测距 ✅ 完成 距离数据正常测量
ML307 4G 通信 ✅ 完成 AT 指令连接稳定
阿里云 MQTT 连接 ✅ 完成 设备在线,数据上报成功
数据上报(温湿度+距离) ✅ 完成 三合一数据正常上传
结构体管理数据 ✅ 完成 代码模块化,易扩展
云平台物模型 ✅ 完成 温度、湿度、距离属性已添加
独立供电问题 ⚠️ 待解决 需要 5V/2A 独立电源

二、代码架构

1. 结构体定义(ml307.h

c

复制代码
typedef struct
{
    float temperature;      // 温度 (°C)
    float humidity;         // 湿度 (%)
    uint32_t distance;      // 距离 (mm)
} SensorData_t;
2. 上报函数(ml307.c

c

复制代码
void 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);
    // 通过 AT+MQTTPUB 上报
}
3. 主循环(main.c

c

复制代码
SensorData_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秒一次
}

三、阿里云平台配置

属性 标识符 数据类型 步长 单位
温度 temperature float 0.1 °C
湿度 humidity float 0.1 %
距离 distance int32 1 mm

四、硬件接线(最终确认)

ML307 STM32F407 说明
VCC 独立 5V/2A 必须独立供电
GND GND 共地
TXD PB11 模块发送 → 单片机接收
RXD PB10 单片机发送 → 模块接收
传感器 引脚 说明
DHT11 DATA PG9 温湿度(需上拉电阻)
超声波 TRIG PB6 触发信号
超声波 ECHO PE6 回响信号

五、关键参数记录

阿里云连接参数

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|securemode=2,signmethod=hmacsha256,timestamp=1774405660503|"
#define ALI_USERNAME        "test&k067yCVEsI7"
#define ALI_PASSWORD        "86c4ffc040da26d56a34f369a897899a98244dd0d96e9a51f68c9b16a14456e8"
上报 JSON 格式

json

复制代码
{
  "id": "1",
  "params": {
    "temperature": 20.0,
    "humidity": 62.0,
    "distance": 27
  }
}

六、遇到的问题及解决方案

问题 原因 解决方案
DHT11 读取失败 开始信号拉高 30ms 太长 改为 30us
ML307 无响应 供电不足(4.53V) 独立 5V/2A 电源
上报时无 > 响应 中断函数只检测 \n 增加 > 检测
云端离线但程序运行 MQTT 连接检测失败 手动验证连接成功
拔掉下载线掉电 下载线同时供电 独立供电

七、待解决问题

  1. 独立供电:ML307 需要 5V/2A 独立电源,STM32 需要另一路供电

  2. 电源稳定性:长时间运行不掉线

  3. 云端数据验证:确认数据持续更新


八、后续扩展建议

  1. 添加更多传感器:GPS、电池电量、空气质量等

  2. 云端下发指令:控制 LED、蜂鸣器等

  3. 数据本地存储:网络不好时暂存数据

  4. 告警功能:温湿度超限时推送通知

相关推荐
磐链科技4 小时前
区块链开发入门实战:用 Hardhat 与 Ethers.js 搭建你的第一个 DApp
开发语言·javascript·区块链
csdn2015_4 小时前
java springboot项目,接收到的参数多个逗号
java·开发语言·spring boot
春风解人意4 小时前
从零开始学习嵌入式P35----数据库
数据库·嵌入式硬件·学习
可乐鸡翅yeah_4 小时前
hls.js 多实例并发踩坑,多视频页面播放器内存与冲突问题解决
开发语言·前端·javascript·音视频·hls·m3u8·m3u8在线播放
俊昭喜喜里4 小时前
c#中的构造函数
开发语言·数据库·c#
hahaha60164 小时前
HLS高层次综合设计--axi之burst纠偏
开发语言·算法·fpga开发·c#
单片机仿真设计4 小时前
【Proteus 仿真】基于 STM32 单片机智能楼宇照明控制系统设计(定制仿真咨询)
stm32·单片机·嵌入式硬件·proteus·毕设
SunnyDays10114 小时前
如何使用 Python 给 PDF 添加附件:文档附件与附件注释
开发语言·python·pdf
xx~t5 小时前
嵌入式——Linux软件编程——数据库
linux·c语言·数据库·oracle·sqlite
ACP广源盛139246256735 小时前
M6/M5 Pro Mac mini 端侧 AI 爆发@ACP#YLB3118 存储扩展芯片在本地 AI 服务中的机会与落地场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos