若该文为原创文章,转载请注明原文出处。
一、引言
(一)研究背景及意义
背景:随着智能家居概念的普及,人们对家庭安全、舒适度和节能提出了更高要求。传统安防系统功能单一、各系统独立,缺乏联动和远程管理能力。
意义:本系统集成环境监测(温湿度、烟雾、火焰、光照)、安防(人体红外入侵检测)和智能控制(灯光、风扇、水泵)于一体,通过STM32实现智能化决策,并通过WiFi实现远程监控。它有效提升了家庭安全性、舒适性和能源利用效率,是智能家居的重要组成部分。
(二)国内外研究现状
国内现状:国内智能家居市场发展迅速,有小米、华为等生态链产品,但多为独立产品(如单独的温度计、人体传感器),深度自定义和本地联动能力较弱。
国外现状:国外如SmartThings、Home Assistant等平台强调本地化集成和高度自动化,但入门门槛和成本较高。
本文创新点:本设计以STM32为本地控制核心,实现了高度集成的多参数监测和复杂的本地自动化逻辑(手动/自动模式),同时通过WiFi与手机APP通信,提供了一种高性价比、高灵活性、高可靠性的本地+远程一体化家庭安全监测解决方案。
二、系统总体设计
(一)系统架构
系统采用“感知-决策-执行-云控”架构。
感知层:由DHT11(温湿度)、MQ-2(烟雾)、火焰传感器、光敏电阻、HC-SR501(人体红外)组成。
决策层:STM32F103核心板,运行主控制逻辑。
执行层:继电器模块(控制灯、风扇、水泵)、蜂鸣器。
人机交互层:OLED显示屏、按键。
云平台层:ESP8266 WiFi模块,连接手机APP,实现数据上传和指令下发。
(二)功能模块划分
环境监测模块:负责采集温湿度、烟雾浓度、火焰、光照强度。
安防监测模块:人体红外检测,判断入侵。
核心控制模块:STM32,处理所有数据,执行模式逻辑。
设备控制模块:通过继电器控制灯、风扇、水泵。
报警模块:蜂鸣器发声报警。
交互模块:OLED显示、按键设置。
通信模块:ESP8266,负责与云平台/APP交互。
三、硬件设计与实现
(一)系统硬件框架图
(二)主控模块选型及介绍
选用STM32F103C8T6。理由:资源丰富(多路ADC、GPIO、USART),性能强大,足以同时处理多路传感器数据、驱动多个外设、进行逻辑判断和网络通信,是复杂嵌入式项目的理想选择。
(三)传感器模块选型及电路设计
DHT11温湿度传感器:单总线数字式,接3.3V,DATA脚接GPIO加上拉电阻。
MQ-2烟雾传感器:模拟输出,接5V,AOUT脚接STM32的ADC引脚。
火焰传感器:数字输出(DO)和模拟输出(AO)。DO可直接接GPIO,用于阈值报警;AO接ADC,可用于测量火焰强度。接5V。
光敏电阻:配合10KΩ电阻组成分压电路,中间点接STM32的ADC引脚,接3.3V。
HC-SR501人体红外传感器:数字输出,接5V,OUT脚接GPIO输入。
(四)通信模块选型及配置
选用ESP-01S ESP8266模块。通过AT指令与STM32的USART进行通信,连接至云平台(如OneNET、Blinker、阿里云等)。
(五)执行模块选型及驱动电路
选用3路5V继电器模块(分别控制灯、风扇、水泵)和有源蜂鸣器。
驱动电路:继电器模块可直接由STM32的IO口驱动(内置光耦隔离)。蜂鸣器通过一个NPN三极管(如S8050)驱动,基极通过1K电阻接STM32的IO口。
(六)显示与交互模块选型及接口电路
OLED显示屏:0.96寸SSD1306,I2C接口,SCL接PB6,SDA接PB7。
按键:使用3个轻触按键,一端接地,另一端分别接GPIO(设置为上拉输入),用于切换界面、模式、手动控制和设置阈值。
(七)电源模块设计
采用5V/2A直流电源适配器供电,通过AMS1117-3.3V稳压芯片为STM32、OLED、DHT11、光敏电阻提供3.3V电源。其他模块使用5V供电。
四、软件设计与实现
(一)开发环境搭建
IDE:Keil uVision 5 / STM32CubeIDE。
库:HAL库。
云平台:推荐使用Blinker或OneNET,其对APP开发支持友好,可快速搭建手机端界面。
(二)系统软件流程图
(三)系统初始化(代码片段)
int main(void) {
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_ADC1_Init();
MX_I2C1_Init();
MX_USART2_UART_Init(); // 用于ESP8266
OLED_Init();
ESP8266_Init();
Read_Threshold_From_EEPROM(); // 从EEPROM读取存储的阈值
while (1) {
Sensor_Read_Task(); // 传感器读取任务
OLED_Refresh_Task(); // 显示刷新任务
Key_Scan_Task(); // 按键扫描任务
Control_Task(); // 核心控制任务
Cloud_Comm_Task(); // 云通信任务
HAL_Delay(200);
}
}
(四)多传感器数据采集与处理(代码片段)
// 读取光照强度(ADC值 -> Lux需校准)
uint16_t Read_Light_Sensor(void) {
uint32_t adc_val = HAL_ADC_GetValue(&hadc1);
// 可根据公式或查表法转换为Lux,此处返回原始ADC值用于比较
return (uint16_t)adc_val;
}
// 读取火焰传感器
uint8_t Read_Flame_Sensor(void) {
// 如果使用数字输出,直接读取电平
return HAL_GPIO_ReadPin(FLAME_GPIO_Port, FLAME_Pin);
// 如果使用模拟输出,则进行ADC采样并与阈值比较
}
// 读取所有传感器
void Sensor_Read_Task(void) {
DHT11_Read(&temperature, &humidity);
smoke_value = HAL_ADC_GetValue(&hadc2);
light_value = Read_Light_Sensor();
flame_detected = Read_Flame_Sensor();
pir_detected = HAL_GPIO_ReadPin(PIR_GPIO_Port, PIR_Pin);
}
(五)模式切换与逻辑控制(代码片段)
void Control_Task(void) {
if (system_mode == AUTO_MODE) {
// 1. 光照控制
if (light_value > light_threshold) { // ADC值越大,光照越弱
Light_OFF();
} else {
Light_ON();
}
// 2. 温度控制
if (temperature > temp_threshold) {
Fan_ON();
} else {
Fan_OFF();
}
// 3. 安防与火灾控制(最高优先级)
if (smoke_value > smoke_threshold || flame_detected == 0) { // 火焰传感器检测到火焰时输出低电平
Buzzer_ON();
Fan_ON(); // 通风
WaterPump_ON(); // 喷水灭火
} else if (is_armed && pir_detected) { // 布防状态且有人
Buzzer_ON();
} else {
Buzzer_OFF();
WaterPump_OFF();
}
} else { // MANUAL_MODE
// 手动模式下,设备状态完全由manual_light_cmd等变量控制
// 这些变量由按键或APP设置
Light_Set(manual_light_cmd);
Fan_Set(manual_fan_cmd);
WaterPump_Set(manual_pump_cmd);
}
}
(六)人机交互实现(代码片段)
// 按键扫描状态机
void Key_Scan_Task(void) {
static uint8_t key_state = 0;
if (KEY1 == 0) { // 按键按下
HAL_Delay(20); // 消抖
if (KEY1 == 0) {
if (key_state == 0) {
key_state = 1;
current_screen = (current_screen + 1) % TOTAL_SCREENS; // 切换显示界面
}
}
} else {
key_state = 0;
}
// ... 类似处理KEY2(模式/确认)、KEY3(设置/返回)
}
// 在设置菜单中修改阈值
void Enter_Setting_Menu(void) {
// 通过按键选择要修改的项(如温度阈值)
// 按KEY2或KEY3增加/减少数值
// 按KEY1确认并保存到EEPROM
}
五、系统测试与优化
(一)测试方案
功能测试:
环境控制:用手遮挡光敏电阻,测试灯是否自动开启;用电吹风加热,测试风扇是否启动。
安防报警:在布防状态下,在红外传感器前移动,测试蜂鸣器报警。
火灾模拟:用打火机模拟火焰,用烟熏MQ-2,测试水泵、风扇、蜂鸣器是否联动。
模式切换:测试按键和APP切换模式功能。
远程通信:测试APP数据刷新和远程控制设备的功能。
性能测试:测试系统响应延迟、通信稳定性、控制精度。
(二)测试结果与分析
记录测试数据,分析是否达到预期目标。例如:从检测到火焰到水泵启动的延迟<1秒。
(三)系统优化
软件优化:为烟雾传感器ADC值加入滑动平均滤波,防止误报;设置延时触发机制(如持续3秒超阈值才触发火灾报警),避免瞬时干扰。
硬件优化:为水泵继电器增加续流二极管,保护STM32的IO口;合理布局传感器,避免相互干扰(如温度传感器远离发热元件)。
六、结论与展望
(一)结论
本项目成功设计并实现了一套高度集成、功能强大的家庭安全监测系统。系统稳定可靠,实现了环境监测、安防报警、智能联动和远程监控的所有预设功能,为智能家居提供了一个优秀的本地控制中枢方案。
(二)未来展望
增加摄像头模块:在检测到入侵时,抓拍图片并上传到手机APP,提供可视化证据。
语音提示与控制:加入语音合成模块(如SYN6288),实现中文语音报警;加入语音识别模块,实现本地语音控制。
多设备联动:通过WiFi或Zigbee与其他智能设备联动,如发生火灾时自动打开窗户。
能源管理:增加电量统计功能,优化电器使用,实现节能。
如有侵权,或需要完整代码,请及时联系博主。