Files
SmartPetFeeder_STM32/README.md

39 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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()`:检查时间是否有效
### 使用示例: