Appearance
设备功能说明
一、核心功能
支持通过蓝牙方式对设备进行参数配置,具体配置项包括:
Wi-Fi参数配置
MQTT参数配置
串口参数配置
低功耗模式参数配置
Wi-Fi数据传输:主要通过MQTT协议实现数据透传至UART接口,传输过程中不对数据进行任何额外处理。
WARNING
由于目前芯片使用的ESP8684H2X ,内存只有2M,所以不支持 OTA 升级。
二、低功耗模式说明
NO BB ,SHOW YOU flow Chart
mermaid
flowchart TD
A["程序启动"] --> B["判断唤醒源:esp_sleep_get_wakeup_cause()"]
B --> B1["正常启动(上电/复位)"]
B --> B2["深度睡眠唤醒启动"]
B1 --> C["初始化外设(UART/NVS/WIFI/MQTT/蓝牙),标记is_deep_sleep_wake=0"]
B2 --> C2["初始化外设(UART/NVS/WIFI/MQTT/蓝牙),标记is_deep_sleep_wake=1(深睡唤醒)"]
C --> RUN_MERGE["进入业务运行态"]
C2 --> RUN_MERGE
%% lp_task 主循环:阻塞等待事件(由其它模块/定时器唤醒)
WAIT["阻塞等待事件:start/config_changed/awake expiry\nulTaskNotifyTake(pdTRUE, portMAX_DELAY);"]
RUN_MERGE --> WAIT
WAIT -->|start/config_changed| F["读取NVS中3个低功耗参数(deep_sleep_enable / deep_sleep_wake_sec / awake_sec)"]
F --> G["参数读取失败?"]
G -- 否 --> I["解析参数(转换大端u32、校验范围)"]
G -- 是 --> H["表示没有配置低功耗模式,跳转到继续等待"]
H --> WAIT
I --> IF_ENABLE{"是否开启深度睡眠?
TLV_TYPE_LP_DEEP_SLEEP_ENABLE=1 且
TLV_TYPE_LP_DEEP_SLEEP_WAKE_SEC>0 且
awake_sec>0(为0视为未配置)"}
IF_ENABLE -- 是 --> AWAKE_MERGE["配置清醒倒计时"]
IF_ENABLE -- 否 --> WAIT
AWAKE_MERGE --> AWAKE_START["启动清醒倒计时(非阻塞):awake_sec"]
%% 说明:启动清醒倒计时后,lp_task 返回 WAIT;业务在其它任务中正常运行。
AWAKE_START --> RUN["正常业务运行(清醒倒计时进行中)"]
AWAKE_START --> WAIT
%% 极致低功耗:时间一到立即收敛资源并进入深度睡眠
%% 但需要优先判断蓝牙是否正在连接:若已连接则不能断开,需要延长清醒时间。
WAIT -->|awake_timer_cb notify| BLE_CHECK{"到期:蓝牙是否已连接?"}
BLE_CHECK -- 是 --> BLE_HOLD["蓝牙已连接:保持连接,不进入深睡
重新启动清醒倒计时(awake_sec)"]
BLE_HOLD --> AWAKE_START
BLE_CHECK -- 否 --> Z_PREP["到期且无蓝牙连接:关闭蓝牙、停止MQTT、停止WiFi,收敛非必要外设"]
Z_PREP--> Y["配置RTC定时器唤醒(sleep_sec→微秒)"]
Y --> AA["调用esp_deep_sleep_start()进入深度睡眠"]
AA --> A