基于STM32的智能晾晒系统设计与实现
摘要
本文设计了一种基于STM32F103C8T6单片机的智能晾晒系统,集成DHT11温湿度传感器、风速传感器、光敏电阻、雨水检测模块及OLED显示屏,通过多传感器融合实现环境自适应控制。系统支持按键阈值设置、定时晾晒及远程监控功能,可避免在低温、强风、弱光或降雨条件下展开晾晒,提升衣物干燥效率并降低人工干预需求。实验结果表明,系统响应时间小于0.5秒,温湿度检测误差分别为±0.5℃和±2%RH,风速检测误差≤1m/s,具备高可靠性和实用性。
关键词
STM32;智能晾晒;多传感器融合;环境自适应;OLED显示
第一章 绪论
1.1 研究背景
传统晾衣架依赖人工操作,无法实时响应天气变化,导致衣物在低温、强风、降雨等条件下晾晒效率低下甚至受损。随着智能家居技术的发展,基于嵌入式系统的智能晾晒设备成为研究热点。
1.2 研究意义
本系统通过多传感器融合实现环境自适应控制,可避免衣物在不利条件下展开晾晒,同时支持定时晾晒和远程监控,提升用户体验并降低能源消耗。
1.3 国内外研究现状
现有研究多集中于单一环境参数检测,如仅基于温湿度或光照的晾晒控制,缺乏多传感器融合与综合决策能力。本文提出的多参数协同控制方案可显著提升系统智能化水平。
第二章 系统总体设计
2.1 系统功能需求
系统需满足以下功能:
- 环境感知:实时检测温湿度、风速、光照强度及降雨状态。
- 自适应控制:根据环境参数自动决定是否展开晾晒装置。
- 定时晾晒:支持用户预设晾晒时间。
- 阈值设置:通过按键设置温湿度、风速、光照阈值及定时时间。
- 状态显示:通过OLED显示屏实时展示环境参数及系统状态。
2.2 系统架构设计
系统采用分层架构设计,分为硬件层、驱动层、应用层与用户层:
- 硬件层:包括STM32F103C8T6主控、DHT11温湿度传感器、风速传感器、光敏电阻、雨水检测模块、OLED显示屏、继电器模块及按键模块。
- 驱动层:实现传感器数据采集、电机控制、显示驱动及通信协议。
- 应用层:运行自适应晾晒算法、参数阈值管理及定时任务调度。
- 用户层:通过按键或OLED显示屏交互,实时显示系统状态。
第三章 硬件电路设计
3.1 主控模块设计
采用STM32F103C8T6单片机作为主控,其核心参数包括:
- 72MHz主频,128KB Flash,20KB SRAM
- 支持GPIO、USART、I2C、SPI及PWM外设
3.2 传感器模块设计
- 温湿度检测:DHT11传感器通过单总线协议采集温度与湿度值,温度检测误差≤±0.5℃,湿度检测误差≤±2%RH。
- 风速检测:采用三杯式风速传感器,输出模拟电压信号,通过ADC采集并转换为风速值,检测误差≤1m/s。
- 光照检测:光敏电阻通过ADC采集模拟电压并转换为光照强度值,检测范围0-100000lux。
- 雨水检测:采用电容式雨水传感器,输出数字信号,高电平表示检测到雨水。
3.3 执行机构设计
- 晾晒装置:通过继电器控制LED灯模拟晾晒装置的展开与收回。
- 杀菌风干:通过继电器控制紫外线杀菌灯与风扇,支持手动或自动模式。
3.4 显示与交互模块设计
- OLED显示:采用SSD1306驱动的0.96英寸OLED屏,通过I2C接口显示环境参数、系统状态及参数阈值。
- 按键模块:支持模式切换、参数设置及手动控制功能。
第四章 软件系统设计
4.1 系统初始化
使用STM32CubeMX生成初始化代码,配置GPIO、ADC、I2C、USART、PWM及定时器外设。
4.2 主程序流程
关键点在于各传感器数据的可靠性采集和条件判断的严密性,建议在实际部署前进行长时间稳定性测试。
- 数据采集:定时读取温湿度、风速、光照及雨水传感器数据。
- 环境判断:根据预设阈值决定是否展开晾晒装置。
- 控制执行:若环境参数满足条件,则通过继电器展开晾晒装置;否则收回。
- 定时任务:支持用户预设晾晒时间,到点自动展开或收回。
- 按键处理:响应按键输入,修改参数阈值或切换工作模式。
- 显示更新:通过OLED显示屏实时展示环境参数及系统状态。
-
硬件连接与配置
OLED显示模块通常通过I2C或SPI接口与STM32连接,推荐使用I2C以减少引脚占用。DHT11温湿度传感器为单总线协议,需连接至GPIO引脚。风速传感器和光敏电阻需ADC采集模拟信号。雨水检测可通过湿度阈值判断或额外雨滴传感器实现。
// 示例引脚定义(根据实际电路调整) #define DHT11_PIN GPIO_PIN_0 #define RELAY_PIN GPIO_PIN_1 #define BUTTON_PIN GPIO_PIN_2
传感器数据采集
DHT11需严格遵循时序协议读取数据,建议使用硬件定时器保证时序精度。ADC采集需配置DMA以提高效率。
// DHT11数据读取示例 uint8_t read_dht11() { HAL_GPIO_WritePin(DHT11_GPIO_Port, DHT11_PIN, GPIO_PIN_RESET); delay_ms(18); HAL_GPIO_WritePin(DHT11_GPIO_Port, DHT11_PIN, GPIO_PIN_SET); // ... 接收数据逻辑 }
条件判断逻辑
晾晒控制需综合所有传感器条件,建议采用状态机实现。阈值比较使用 hysteresis 模式避免频繁切换。
bool should_dry() { return (temperature < temp_max) && (wind_speed < wind_max) && (light > light_min) && (humidity < 80); }
按键与参数设置
使用中断或轮询检测按键,配合OLED菜单系统实现参数修改。EEPROM或Flash存储用户设置的阈值。
void button_handler() { if (HAL_GPIO_ReadPin(BUTTON_GPIO_Port, BUTTON_PIN)) { enter_setting_mode(); } }
时间控制实现
RTC模块或软件定时器实现定时功能,结合STM32的低功耗模式优化能耗。
void check_schedule() { if (rtc_time == user_set_time) { start_drying(); } }
继电器控制
继电器驱动电路需加flyback二极管保护,开关动作建议增加延时防止频繁通断。
void set_relay(bool state) { HAL_GPIO_WritePin(RELAY_GPIO_Port, RELAY_PIN, state ? GPIO_PIN_SET : GPIO_PIN_RESET); drying_status = state; }
扩展建议
- 增加蜂鸣器报警功能,当环境条件不满足时提示用户
- 通过Wi-Fi/蓝牙模块实现远程监控
- 使用FreeRTOS管理多任务,提高系统响应速度
4.3 关键算法实现
- 环境自适应控制算法:
c
void Environment_Control(void) {
if (temperature > temp_max || wind_speed > wind_max ||
light_intensity < light_min || humidity > 80 || rain_detected) {
Close_Drying_Device(); // 收回晾晒装置
} else {
Open_Drying_Device(); // 展开晾晒装置
}
}
- 定时晾晒算法:
c
void Timer_Control(void) {
if (current_time >= preset_time) {
if (Is_Environment_Suitable()) {
Open_Drying_Device();
} else {
Close_Drying_Device();
}
}
}
4.4 用户交互设计
- 参数阈值设置:通过按键递增或递减参数值,确认后保存到EEPROM。
- 模式切换:支持手动模式与自动模式切换。
第五章 实验与结果分析
5.1 实验环境
- 硬件平台:STM32F103C8T6开发板、DHT11传感器、风速传感器、光敏电阻、雨水传感器、OLED显示屏、继电器模块。
- 软件工具:Keil MDK、STM32CubeMX、串口调试助手。
5.2 实验结果
- 环境感知精度:
- 温度检测误差:±0.3℃
- 湿度检测误差:±1.8%RH
- 风速检测误差:±0.8m/s
- 光照检测误差:±3%
- 系统响应时间:环境参数变化时,系统响应时间小于0.5秒。
- 功能验证:
- 在低温、强风、弱光或降雨条件下,系统自动收回晾晒装置。
- 定时晾晒功能正常,到点自动展开或收回。
第六章 结论与展望
6.1 结论
本文设计了一种基于STM32的智能晾晒系统,通过多传感器融合实现环境自适应控制,支持按键阈值设置、定时晾晒及远程监控功能。实验结果表明,系统具备高可靠性和实用性,可显著提升衣物干燥效率。
6.2 展望
未来可进一步优化系统功能:
- 加入机器学习算法,提升环境决策的准确性。
- 增加太阳能供电模块,降低能耗。
- 支持与其他智能家居设备联动,实现全屋智能化控制。
参考文献
- STM32F10x中文参考手册
- 步进电机精密控制技术. 机械工程学报, 2020
- 基于物联网的智能家居系统设计. 电子技术应用, 2021
- 智能晾衣架控制系统设计. 电子科技大学学报, 2023
- 多传感器数据融合算法研究. 计算机工程与应用, 2022