在家捣鼓了个环境监测神器,51单片机玩出花

张开发
2026/4/11 18:13:54 15 分钟阅读

分享文章

在家捣鼓了个环境监测神器,51单片机玩出花
基于51单片机的智能家居监测声光报警温湿度气体光照原 S1027-基于51单片机的智能家居监测声光报警温湿度气体光照原理图、流程图、物料清单、仿真图、源代码 功能介绍 家居环境监测 1、测量家庭温度、湿度、光照、气体浓度可以定义为任意气体比如甲烷、煤气、PM2.5等 2、通过按键设置每种物理量的报警值提示工人进行相关操作 3、如果温度、湿度、光照、气体浓度超过或低于预定值就启动报警 4、设置后的阈值可通过存储器保存下次运行保持上次设置的阈值掉电保存 有哪些资料 1、仿真工程文件 2、源代码工程文件 3、原理图工程文件 4、流程图 5、元件清单 6、报告文档7093字最近沉迷搞智能家居监控用STC89C52做了个能测温湿度、光照、有害气体的报警装置。这玩意儿成本不到一百块但功能真不怂——超标就亮灯蜂鸣器双重警告关键设置好的报警值断电也能记住贼实用。一、硬件整活指南核心板子就巴掌大传感器全用模块化设计。DHT11负责温湿度MQ-2检测可燃气体改个参数也能测PM2.5光敏电阻搭个分压电路测光照。报警阈值用四个按键设置1602液晶实时显示数据。重点说两个硬件细节ADC0832模数转换光敏和气体传感器都是模拟信号51单片机自带ADC精度不够外挂这个8位转换芯片稳如老狗。电路接法注意参考电压要稳定sbit CS P1^0; //片选 sbit CLK P1^1; //时钟 sbit DIO P1^2; //数据 uint adc_read(uchar channel){ uint dat 0; CS 0; //启动转换 //时钟时序控制... return dat; }AT24C02存储模块掉电保存报警值全靠这个EEPROM。IIC通信要注意时序实测写入周期5ms左右void eeprom_write(uchar addr, uchar dat){ IIC_Start(); IIC_SendByte(0xA0); //器件地址 IIC_WaitAck(); IIC_SendByte(addr); //存储地址 ... //写入数据流程 }二、代码里的骚操作主程序跑状态机每500ms轮询一次传感器。重点看报警逻辑处理void check_alarm(){ //温度超标 if(current_temp eeprom_data.temp_max || current_temp eeprom_data.temp_min){ led_flash(3); //红灯闪3次 buzzer_on(); //蜂鸣器响 } //气体浓度判断 if(gas_value eeprom_data.gas_threshold){ led_flash(5); //快速闪烁 buzzer_fast(); } //其他传感器类似... }按键处理用了状态机消抖组合拳长按短按都能识别if(KEY1 0){ delay_ms(10); //消抖 if(KEY1 0){ key_cnt; if(key_cnt 100){ //长按2秒 enter_set_mode(); }else{ //短按 adjust_threshold(1); //参数1 } } }三、踩坑实录DHT11时序坑这个温湿度传感器对时序要求变态必须严格遵循18ms复位信号。后来用逻辑分析仪抓波形才调通。光照校准玄学光敏电阻非线性严重解决方法是在代码里做分段线性补偿//根据ADC值分段处理 if(light_adc 50) light_lux adc*2.3; else if(adc 150) light_lux 115 (adc-50)*1.1; else light_lux 220 (adc-150)*0.7;电源干扰最初传感器数据总跳变后来在7805稳压后加了104电容模拟地和数字地分开走线才稳定。四、实战效果组装完放厨房测试燃气灶故意漏点气3秒内红灯狂闪蜂鸣器尖叫。拿到阳台测光照超过设定值立刻切换成蓝灯提醒。实测AT24C02存储的数据断电一周后依然能正确读取。基于51单片机的智能家居监测声光报警温湿度气体光照原 S1027-基于51单片机的智能家居监测声光报警温湿度气体光照原理图、流程图、物料清单、仿真图、源代码 功能介绍 家居环境监测 1、测量家庭温度、湿度、光照、气体浓度可以定义为任意气体比如甲烷、煤气、PM2.5等 2、通过按键设置每种物理量的报警值提示工人进行相关操作 3、如果温度、湿度、光照、气体浓度超过或低于预定值就启动报警 4、设置后的阈值可通过存储器保存下次运行保持上次设置的阈值掉电保存 有哪些资料 1、仿真工程文件 2、源代码工程文件 3、原理图工程文件 4、流程图 5、元件清单 6、报告文档7093字下一步打算加个ESP8266联网数据上传到手机APP。有兄弟想复刻的话注意仿真文件里光敏电阻模型要改成GL5528默认模型和实物差异挺大的。代码工程直接用Keil4打开记得在Output选项勾选生成Hex文件。

更多文章