手把手教你用51单片机+MQ-2+DHT11做个智能烟雾报警器(附Proteus仿真和完整代码)

张开发
2026/4/18 12:56:24 15 分钟阅读

分享文章

手把手教你用51单片机+MQ-2+DHT11做个智能烟雾报警器(附Proteus仿真和完整代码)
从零打造智能烟雾报警器51单片机实战指南1. 项目背景与核心功能最近在整理工作室时发现角落里堆着几个闲置的MQ-2烟雾传感器和DHT11温湿度模块。这些原本是去年买来做实验的小器件一直没派上用场。正好家里厨房需要个烟雾报警装置于是决定用51单片机搭建一个智能报警系统。这个项目特别适合刚接触单片机的爱好者不仅能学习传感器驱动原理还能掌握实际产品开发的全流程。系统主要实现三个核心功能环境监测实时采集空气中的烟雾浓度和温湿度数据阈值报警当检测值超过预设安全范围时触发声光警报交互设置通过按键调整报警阈值LCD屏显示实时数据2. 硬件选型与电路设计2.1 元器件清单元器件型号/参数数量备注主控芯片STC89C52RC151内核8K Flash烟雾传感器MQ-2模块1带模拟输出温湿度传感器DHT111单总线数字接口显示模块LCD1602116x2字符型液晶报警模块有源蜂鸣器15V驱动状态指示灯LED灯3红/黄/绿各1个按键轻触开关4设置/加/减/确认电阻10KΩ5上拉/限流用2.2 关键电路设计要点MQ-2传感器接口电路// 模拟信号读取电路 MQ-2_AO → P1.0(ADC输入) MQ-2_DO → 悬空(本设计不使用数字输出) VCC → 5V GND → 地DHT11连接方式DHT11_DATA → P2.0 // 需接10K上拉电阻 VCC → 5V GND → 地注意DHT11对时序要求严格操作时需关闭中断3. 软件开发与核心逻辑3.1 程序框架设计整个系统采用状态机架构主要包含以下功能模块传感器驱动层DHT11温湿度采集MQ-2模拟量读取LCD1602显示控制业务逻辑层报警阈值判断按键扫描处理声光报警控制用户界面层数据显示刷新设置菜单交互状态指示灯管理3.2 关键代码解析DHT11数据读取函数uint8_t DHT11_ReadByte(void) { uint8_t i, dat 0; for(i0; i8; i) { while(!DHT11_DATA); // 等待50us低电平结束 Delay_us(30); // 判断高电平持续时间 dat 1; if(DHT11_DATA) dat | 1; while(DHT11_DATA); // 等待位周期结束 } return dat; }烟雾浓度判断逻辑void CheckSmokeLevel() { uint16_t adcValue Get_ADC_Value(0); // 读取P1.0的ADC值 float voltage adcValue * 5.0 / 1024; float ratio voltage * RL / (5 - voltage); float ppm 1000 * pow(ratio/R0, 1/-0.42); // 转换为ppm值 if(ppm AlarmThreshold) { Buzzer_On(); LED_Red_On(); } else { Buzzer_Off(); LED_Green_On(); } }4. Proteus仿真与调试技巧4.1 仿真环境搭建由于Proteus元件库中没有MQ-2传感器可以采用以下替代方案使用滑动变阻器模拟烟雾浓度变化连接至ADC输入通道阻值范围10KΩ-200KΩDHT11仿真设置添加DHT11模型元件配置温湿度参数曲线4.2 常见问题排查问题1LCD显示乱码检查初始化时序是否正确确认对比度调节电位器设置测量背光电压是否正常问题2DHT11读取超时检查上拉电阻是否连接确保时序延时精度在us级尝试降低MCU主频测试问题3误报警频繁增加软件滤波算法// 移动平均滤波示例 #define FILTER_LEN 5 uint16_t filterBuf[FILTER_LEN]; uint16_t Filter_ADC(uint16_t newVal) { static uint8_t index 0; uint32_t sum 0; filterBuf[index] newVal; if(index FILTER_LEN) index 0; for(uint8_t i0; iFILTER_LEN; i) { sum filterBuf[i]; } return sum / FILTER_LEN; }5. 实物制作与优化建议5.1 PCB布局注意事项将模拟信号走线远离数字电路MQ-2传感器应预留通风孔蜂鸣器尽量远离MCU以防干扰5.2 校准与测试方法MQ-2灵敏度校准在洁净空气中调整R0基准值使用标准气体测试响应曲线温湿度补偿对比专业温湿度计读数记录误差值建立补偿表报警响应测试使用香烟烟雾测试触发阈值测量从检测到报警的延迟时间5.3 功能扩展思路增加ESP8266实现物联网报警添加数据存储功能记录历史开发手机APP远程监控集成GSM模块发送短信预警在面包板上完成原型测试后建议使用洞洞板或自制PCB进行固化。实际部署时记得将传感器安装在离天花板20-30cm处这是烟雾聚集的最佳监测位置。调试时最耗时的部分是DHT11的时序调试后来发现用逻辑分析仪抓取波形是最有效的排查方法。

更多文章