基于STM32的智能自动遮阳伞控制系统
- 智能自动遮阳伞控制系统
智能自动遮阳伞控制系统
绪论
传统户外遮阳伞需要人工操作,遇到突发降雨或强光时往往来不及收伞,造成伞面损伤或用户淋雨。本设计提出一种智能自动遮阳伞控制系统,将雨滴、光强、温度多源感知与步进电机驱动结合,STM32 主控根据环境条件自动控制伞面开收,并支持手动干预与OLED状态显示,能够在阳台、露台、景区摊位等场景连续工作,为户外空间提供"感知-决策-执行"完整的智能化体验。
系统方案设计
系统总体方案
系统由环境感知、单片机主控、电机驱动、人机交互、电源五部分构成。感知层包括雨滴传感器、光敏电阻和DS18B20;执行层采用ULN2003驱动步进电机实现伞面展开与收回;OLED12864 显示当前模式、光强等级与状态;3个独立按键切换模式与手动控制。
系统功能
| 功能 | 描述 |
|---|---|
| 自动感知 | 雨滴、光强、温度综合判定 |
| 自动收伞 | 雨/强光/高温收伞 |
| 自动展开 | 正常天气展开 |
| 手动模式 | 按键精确控制 |
| 状态显示 | OLED 显示当前模式与传感器值 |
| 异常保护 | 电机堵转检测+继电器切断 |
主要模块选型
| 模块 | 方案对比 | 本设计选择 |
|---|---|---|
| 主控 | STM32F103C8T6 / Arduino | STM32F103C8T6 |
| 雨滴 | 电容式雨滴 / 湿度计 | 电容式雨滴开关 |
| 光强 | 光敏电阻 / 数字照度 | 光敏电阻分压 |
| 温度 | DS18B20 / 热敏电阻 | DS18B20 |
| 执行 | ULN2003+28BYJ-48 | ULN2003+28BYJ-48 |
| 显示 | OLED12864 / LCD1602 | OLED12864 |
硬件设计
主控与传感器接口
主控使用 STM32F103C8T6 的 PA0(DS18B20 单总线)、PA1(光敏电阻 ADC)、PA2(雨滴传感器 DO)、PB0~PB3(步进电机四相)。
雨滴与光强电路
雨滴传感器 AO 输出经 1kΩ 限流送到 PA1;光敏电阻与 10kΩ 分压后送 PA0,电压越大代表光照越弱。
电机驱动与保护
ULN2003 输入为 PB0~PB3,输出经限流电阻接 28BYJ-48 四相绕组;电机堵转通过监测相电流实现,过流时通过 PA4 触发的继电器切断总电源。
电源
220V 交流输入经 AC-DC 模块转换为 12V 直流,驱动电机;再经 DC-DC 转换为 5V 给 MCU 和传感器使用。
系统接线总表
| 序号 | 单片机引脚 | 外设/功能 |
|---|---|---|
| 1 | PA0 | DS18B20-DQ |
| 2 | PA1 | 光敏电阻AO |
| 3 | PA2 | 雨滴传感器DO |
| 4 | PA4 | 电流检测(堵转保护) |
| 5 | PB0~PB3 | ULN2003四相 |
| 6 | PB6/PB7 | OLED-I2C |
| 7 | PA5/PA6/PA7 | 三个独立按键 |
软件设计
主程序流程
主程序在自动模式与手动模式之间切换。自动模式下按"光强+雨滴+温度"三个判据生成目标状态,再由状态机驱动电机。
int main(void)
{
SystemInit();
DS18B20_Init();
ADC1_Init();
GPIO_Init_Rain();
GPIO_Init_Motor();
OLED_Init();
Key_Init();
while (1) {
KeyEvent ev = Key_Scan();
static Mode mode = MODE_AUTO;
if (ev == EV_MODE) mode = (mode == MODE_AUTO) ? MODE_MANUAL : MODE_AUTO;
if (mode == MODE_AUTO) {
float t = DS18B20_ReadTemp();
uint16_t light = ADC_Read(1);
uint8_t rain = Rain_Read();
Umbrella_State target = Decide_Auto(t, light, rain);
Apply_Umbrella(target);
} else {
if (ev == EV_OPEN) Apply_Umbrella(UMB_OPEN);
if (ev == EV_CLOSE) Apply_Umbrella(UMB_CLOSE);
}
OLED_Update(mode, t, light, rain);
Motor_Protect_Check();
delay_ms(100);
}
}
自动判定策略
- 雨滴传感器 DO 为高电平(检测到雨)→ 收伞。
- 光强 ADC < 阈值 1(强光)→ 收伞。
- 温度 > 38℃ → 收伞。
- 其他情况 → 展开伞。
电机驱动与保护
电机采用八拍序列,每拍 2ms 切换一相。打开与关闭过程使用行程限位开关进行限位,电流检测到骤增时立即停止并报警。
模式切换
按键 1 长按 1 秒切换模式;按键 2 短按开/收;按键 3 长按紧急切断电源。
系统实现与测试
测试方法
- 用手电筒模拟不同光照强度。
- 用滴水管模拟不同雨量。
- 热风枪加热验证高温判定。
- 户外连续运行 7 天,记录稳定性和功耗。
测试结果
- 雨滴响应 2.5 秒内收伞。
- 强光判定响应 1 秒;分级阈值切换稳定。
- 高温判定误差 ±0.3℃。
- 电机驱动 24 小时累计耗能 < 0.05kWh。
- 户外 7 天未出现误动作或卡死。
总结
本系统将多种环境传感器与步进电机结合,形成了多功能、多场景适用的自动遮阳伞控制系统。整体逻辑清晰,硬件稳定,软件可扩展,已经在实验室阳台场景连续运行验证。后续可将电机驱动改为静音版步进+减速箱,并加入风速传感器实现大风预警收伞,进一步提升户外适应性。
更多推荐


所有评论(0)