f5077adbe753ddc0b3b043cb204238a1dfde90bc
feat(BSP): 添加WiFi模块MQTT连接优化和SNTP配置改进 - 添加SNTP配置标志位,确保只在首次连接时配置SNTP,避免重复重启模块 - 实现MQTT断线重连机制,支持持续运行和自动重连 - 增加SNTP时间查询频率控制,避免频繁查询导致性能问题 - 添加连接状态检测和心跳机制,超时自动重连 - 优化LCD时间显示界面,分别显示时分和年月日信息 - 调整LCD页面刷新策略,时间页面30秒刷新一次以节省资源 ```
SmartPetFeeder_STM32
WiFi 与 MQTT 通信模块说明
本工程中的 dx_wf_24.c 实现了基于 ESP8266/ESP32 AT 指令集的 WiFi 与 MQTT 通信功能,主要特性包括:
- 串口 DMA 接收与发送:使用 STM32 的 UART + DMA 实现高效数据收发,支持 IDLE 中断检测帧尾。
- WiFi 连接管理:通过 AT 指令自动连接指定 SSID 和密码的 WiFi 网络。
- MQTT 客户端功能:
- 自动生成唯一 ClientID(基于系统 Tick 与 STM32 UID);
- 支持设置用户名、密码;
- 连接指定 MQTT 服务器(支持自定义 Host 和 Port);
- 双主题订阅:
petfeeder/control(控制指令)和petfeeder/config(配置更新); - 支持 RAW 数据发布(
AT+MQTTPUBRAW),适用于 JSON 等结构化数据; - 自动处理 MQTT 断线重连事件(通过
+MQTTDISCONNECTED监测)。
- 消息解析:解析
+MQTTSUBRECV格式的订阅消息,提取主题与负载内容。 - 状态上报:
- 设备上线时自动发布
{"status":"online"}到petfeeder/status主题(retain=1); - 支持传感器数据上报至
petfeeder/sensor主题。
- 设备上线时自动发布
注意:当前实现为单任务模型,在
wifi_task_mqtt中完成初始化、连接、订阅及消息处理循环。
SNTP 网络时间同步功能
本工程还实现了 SNTP (Simple Network Time Protocol) 网络时间同步功能,主要特性包括:
- 自动时间同步:在 MQTT 连接成功后自动获取网络时间并同步到本地。
- 中国时区支持:默认配置为中国时区(UTC+8),使用
cn.ntp.org.cn作为 NTP 服务器。 - 时间获取与存储:提供 API 接口获取当前网络时间,并存储在内部结构体中。
- 时间有效性检查:提供函数检查获取的时间是否有效。
主要函数接口:
WIFI_Enable_SNTP():启用 SNTP 功能并配置 NTP 服务器WIFI_Get_SNTP_Time():获取当前网络时间WIFI_Get_Current_Time():获取存储的当前时间(返回结构体副本)WIFI_Is_Time_Valid():检查时间是否有效
MP3 音频播放功能
本工程集成了 MP3 音频播放功能,用于提供各种系统状态和事件的语音提示。相关的音频索引定义在 Core/Bsp/BSP_Device/bsp_mp3/mp3_play_index.h 文件中。
音频提示分类:
系统状态与初始化
SYS_POWER_ON(1): 系统上电完成,智能宠物喂食系统启动完成,进入待机模式WIFI_CONNECT_OK(2): WiFi连接成功,云平台数据同步已开启WIFI_CONNECT_FAIL(3): WiFi连接失败,请检查网络配置
喂食模块
FEED_AUTO_START(4): 自动喂食启动,步进电机开始出粮FEED_IN_PROGRESS(5): 正在出粮,称重模块实时监测中FEED_COMPLETE(6): 喂食完成,当前食物重量已达设定值FEED_MANUAL_TRIGGER(7): 手动喂食指令已接收,开始出粮FOOD_LOW_ALARM(8): 食物余量不足警告,请及时添加
喂水模块
WATER_REFILL_START(9): 水位低于阈值,水泵启动,开始自动补水WATER_REFILL_DONE(10): 补水完成,水位已达设定上限WATER_LOW_ALARM(11): 水位过低警告,请检查水源或水泵WATER_PIR_REFILL(12): 检测到宠物靠近且水位偏低,启动自动补水
模式切换
MODE_AUTO(13): 已切换至自动运行模式MODE_MANUAL(14): 已切换至手动控制模式
参数设置
PARAM_SAVE_OK(15): 参数设置已保存,系统配置已更新PARAM_TIME_SET(16): 自动喂食时间已更新PARAM_WEIGHT_SET(17): 喂食重量阈值已更新
远程控制与异常
REMOTE_CMD_RECEIVED(18): 接收到微信小程序远程控制指令DATA_UPLOAD_FAIL(19): 数据上传失败,请检查网络连接SYS_ERROR_ALARM(20): 系统检测到异常,请检查硬件模块
使用说明:
系统通过调用相应的音频索引值来播放对应的提示音,为用户提供直观的听觉反馈,增强用户体验。
Description
Languages
C
96.9%
Assembly
1.9%
JavaScript
0.9%
C++
0.2%