基于 STM32 与 FreeRTOS 的智能晾衣架控制系统设计

#智能硬件#STM32#FreeRTOS

智能晾衣架实物

👉 硬件套件购买链接(淘宝)

视频介绍:

摘要

针对传统晾衣架在突发降雨时响应滞后、功能单一的问题,本文设计并实现了一种基于 STM32F103C8T6 与 FreeRTOS 的智能晾衣架控制系统。系统集成温湿度(DHT11)、光照(BH1750)与雨滴传感器,通过事件总线架构实现传感器采集、业务决策与电机执行的解耦,并借助 ESP12F 模块接入 OneNET 云平台,支持远程控制与双芯片 OTA 固件升级。测试表明,系统在检测到降雨后能可靠触发回收动作,雨停后按可配置延迟自动晾出,运行稳定。

关键词:STM32;FreeRTOS;智能晾衣架;OTA;事件驱动

1 引言

升降式晾衣架已广泛进入家庭,但市面产品多停留在电动升降层面,缺乏对环境状态的感知与自主决策能力。本设计在成本受限(Cortex-M3、64KB Flash、20KB RAM)的嵌入式平台上,引入实时操作系统与分层软件架构,使晾衣架具备"雨来自动收、晴后延时晾"的自主行为,同时保留手动控制与远程升级能力,兼顾实用性与可维护性。

2 系统总体设计

系统硬件由 STM32F103C8T6 主控、DHT11/BH1750/雨滴三路传感器、电机驱动、OLED 显示、W25Q64 外部 Flash 及 ESP12F WiFi 模块构成。软件采用两层架构:Hardware 层负责读写外设并触发事件,Services 层负责业务决策与状态编排,两层之间通过中心事件总线(AppEvent)解耦:

传感器任务 ──事件──▶ EventBus ──分发──▶ ClotheslineService(决策)──▶ Motor(执行)

这一设计使传感器驱动与业务逻辑互不依赖,新增传感器或更换执行机构均不需改动决策层代码。

3 关键技术实现

3.1 雨滴检测与回收状态机

雨滴信号存在机械抖动,直接采用会产生误动作。系统在硬件层完成防抖后,由服务层以状态机方式处理"回收—延时—晾出"三个阶段:下雨立即回收;雨停后仅当自动模式且衣物处于收回状态时,才等待 rainStopDelayMs(默认 15 s)确认无反复降雨,再执行晾出,核心逻辑如下:

static void ProcessRainLogic(void)
{
    if (isRaining) {
        rainStopActive = 0;
        TryStartRetract();  /* 下雨回收是最高优先级 */
        return;
    }
    rainRetracting = 0;  /* 不下雨了,清除回收标志 */

    if (IsAutoMode() && clothesState == CLOTHES_IN) {
        if (!rainStopActive) {
            rainStopActive = 1;
            rainStopStartTicks = xTaskGetTickCount();
        } else if ((xTaskGetTickCount() - rainStopStartTicks)
                   >= pdMS_TO_TICKS(rainStopDelayMs)) {
            rainStopActive = 0;
            if (!Motor_IsRunning() && !isRaining) {
                Motor_DryOutForAuto();
            }
        }
    }
}

其中 rainStopActiverainStopStartTicks 构成软件定时窗口,避免雨滴间歇抖动导致的"收了又晾、晾了又收"。

3.2 双芯片 OTA 升级

系统支持 STM32 与 ESP12F 两颗芯片的远程固件升级:ESP12F 侧采用 rBoot 双分区方案,保留不可变 recovery 分区实现升级失败自动回退;STM32 侧基于 IAP + YMODEM 串口协议,由 ESP12F 从服务器拉取固件流式转发,升级过程中 OLED 实时显示进度百分比,规避远程变砖风险。

4 测试与结果分析

对雨滴响应链路进行连续 48 小时挂机测试:模拟降雨后系统均在 1 个决策周期内启动回收,无漏触发;雨停后,间歇性滴水(间隔小于延时阈值)期间衣物保持收回状态,仅当持续无雨超过 15 s 才执行晾出,符合设计预期。温湿度与光照数据经 MQTT 上报 OneNET 平台,App 端可实时查看;两颗芯片各执行 10 次 OTA 升级均成功,人为注入断电故障后设备均能回退到可用固件。

5 结论

本文完成了基于 STM32 + FreeRTOS 的智能晾衣架系统设计,通过事件总线架构与状态机决策实现了可靠的雨天自动回收功能,并配套了完整的 OTA 升级与中文字库存储方案。系统验证了在资源受限的 MCU 上构建可维护、可远程演进的物联网产品的可行路径,后续可扩展光照联动晾晒策略与语音控制入口。