一、项目概述
项目名称:基于STM32单片机的一氧化碳浓度监测与报警系统
项目编号:dz-895
主控芯片:STM32F103C8T6
核心功能说明:
- 采用MQ-7传感器实时采集环境中的一氧化碳(CO)浓度数据;
- 支持通过按键设定CO浓度的上限阈值,并可手动控制风扇及空气净化设备的启停;
- OLED显示屏实时显示当前CO浓度值、预设阈值以及执行机构的工作状态;
- 当检测到CO浓度超过设定最大值时,系统自动启动通风装置和净化器,并触发声光报警机制;
- 集成WiFi模块,将采集的CO浓度上传至手机端应用。用户可通过手机设置阈值、远程控制风扇与净化器开关,且在超标时接收弹窗提示与震动提醒;同时支持阿里云后台存储历史数据,生成折线图或表格形式的数据报表,便于查看与分享。
二、系统结构设计
设计工具:VISIO
本系统以STM32F103C8T6为核心控制器,整体架构划分为输入单元、输出单元与中央处理单元三大模块。
中央控制单元:使用STM32F103C8T6作为主控芯片,负责对各类输入信号进行分析处理,并据此发出相应的控制指令驱动输出设备运行。
输入部分包含以下三个子模块:
- 气体检测模块:采用MQ-7传感器检测环境中CO浓度,一旦数值超出设定阈值,则触发报警并激活继电器动作;
- 按键操作模块:提供人机交互接口,用于设置安全阈值及手动控制继电器通断;
- 电源供电模块:为整个系统提供稳定电力支持。
输出部分由四个关键组件构成:
- 显示模块:OLED屏幕实时呈现当前CO浓度、设定阈值及继电器工作状态;
- 继电器控制模块:模拟风机启停,实现自动通风功能;
- 净化执行模块:在CO浓度超标时启动空气净化装置;
- 声光报警模块:当检测值高于设定限值时,启动声音与灯光双重警示。
此外,WiFi模块兼具输入与输出双重角色:既可将现场数据上传至手机APP供用户查看与配置参数,又能接收来自移动端的控制命令,实现远程监控与操作。
三、实物展示
主控型号:STM32F103C8T6
PCB板采用绿色双层设计,厚度为1.2mm,上下层均覆铜并接地,提升抗干扰能力。元器件以插针式为主,仅个别降压芯片采用贴片封装。
供电方式:通过TYPE-C接口接入电源。
四、电路原理图说明
设计软件:Altium Designer 2013
连接方式采用网络标号进行电气连接。需注意:所绘制的原理图为各功能模块的外部引脚连接示意图,并非内部电路结构图。
五、PCB布局图说明
PCB图由原理图导出,大部分元器件封装由设计者自行绘制,不单独提供封装库文件,仅提供完整连通的源工程文件。板身为双层结构,上下覆铜并接地处理。PCB中央位置设有项目编号标识,位于单片机底座下方,安装后被芯片遮挡不可见。
六、程序代码展示
开发环境:Keil uVision5
软件架构上将逻辑控制代码与底层驱动代码分离,分别存放于main.c与其他对应的.c源文件中,提高代码可读性与维护性。
/**********************************
函数名:处理函数
传参值:无
返回值:无
**********************************/
void Manage_Function(void)
{
if(display_num == 0) //测量界面
{
if(CO_value > CO_max) //一氧化碳大于最大值
{
flag_co = 0;
RELAY_FS = 1;
RELAY_JH = 1;
if(flag_bj_tc == 0)
{
flag_bj_tc = 1;
}
if(time_num % 20 == 0)
{
ALERT = !ALERT;
}
}
else
{
if(flag_co == 0)
{
RELAY_FS = 0;
RELAY_JH = 0;
}
flag_bj_tc = 0;
ALERT = 0;
}
}
else //设置界面,关闭加热、制冷及声光报警
{
RELAY_FS = 0;
RELAY_JH = 0;
ALERT = 0;
}
if(flag_finish_5s == 1) //5秒上传一次数据
{
flag_begin_5s = 0;
Aliyun_Send_Data();
flag_begin_5s = 1;
}
}