Skip to content

设备功能说明

一、核心功能

支持通过蓝牙方式对设备进行参数配置,具体配置项包括:

  • 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