feat(bluetooth): 添加多按钮支持和WiFi连接音频反馈 添加MultiButton库支持多按键功能,重构SPI显示屏驱动代码, 迁移MP3音频文件至正确目录并集成WiFi连接状态音频提示音。 - 添加Multi_Button.c源文件和相关头文件包含 - 重构spi_st7735s.c中的数组初始化格式,优化代码可读性 - 将MP3音频文件从Development_Docs/MP3迁移到Core/Bsp/BSP_Device/bsp_mp3/MP3 - 在WiFi连接过程中添加MP3音频反馈(连接成功/失败提示音) - 优化ST7735显示屏驱动中的DMA传输模式支持 ```
78 lines
4.0 KiB
Markdown
78 lines
4.0 KiB
Markdown
# 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): 系统检测到异常,请检查硬件模块
|
||
|
||
### 使用说明:
|
||
系统通过调用相应的音频索引值来播放对应的提示音,为用户提供直观的听觉反馈,增强用户体验。 |