Arduino Nano配合MQ-2烟雾传感器和LED灯实现烟雾报警器
二话不说先上视频
基本配件组成
Arduino Nano × 1
MQ-2烟雾传感器 × 1
LED灯 × 1
连接线若干
MicroUSB连接线一根
连接方法
将MQ-2传感器两个引脚正极接Nano 3.3伏引脚,负极接地,S引脚接模拟口0。
将LED灯正极接数字口12,负极接地。
实现效果
当烟雾浓度越大时LED闪烁频率越高,烟雾浓度降低时LED闪烁频率降低,烟雾浓度为标准浓度时LED灯关闭。
实现思路
通过digitalWrite(LED, HIGH)和digitalWrite(LED, LOW)改变对LED加电的状态控制LED打开和关闭,改变状态的速度越快闪烁的频率越高。通过analogRead(0)获取MQ-2传感器当前的读数,不断监测当前烟雾浓度,如果超过一定的阈值比如400则提高LED闪烁的频率,随着浓度值的降低同时降低LED灯闪烁的频率。
注意事项
MQ-2传感器要经过预热才能正常工作,开始接入时读数不准,经过几分钟预热后,我本地的正常环境读数为150左右。所以要根据这个读数来控制程序判断的阈值。
代码 //定义LED的高电平接入数字端口 int led = 12; void setup() { //定义当前的端口为输出端口 pinMode(led, OUTPUT); } void loop() { //获取MQ-2传感器模拟端口的读数 int val = analogRead(0); //如果大于400则以10ms的间隔闪烁 if(val > 400){ blinkLED(10); }else if(val > 300 && val < 400){ //如果大于300,小于400则以100ms的间隔闪烁 blinkLED(100); }else if(val < 300 && val > 200){ blinkLED(1000); }else{ //否则关闭 digitalWrite(led, LOW); } } //闪烁函数 unsigned int blinkLED(int period){ unsigned long time = millis(); unsigned int signal; if((time / period) % 2 == 0){ digitalWrite(led, HIGH); }else{ digitalWrite(led, LOW); } }
涉及内容
pinMode, analogRead, digitalWrite
其他
由于Arduino强大的功能,所以实现起来是非常简单的,唯一不足的地方就是晚上又多抽了半盒烟来测试:D
下一步就是要接入Yeelink平台来实现远程的检测,让这个小东西变得更加有意义,能够实现远程监测才是这个烟雾报警器真正能够起作用的时候。敬请期待:)
转载请注明原文出处《Arduino Nano配合MQ-2烟雾传感器和LED灯实现烟雾报警器》 如无特别声明,所有文章均遵守创作共用 署名-非商业-禁止演绎 3.0协议。
Apache无法启动443端口被占用解决方法
新机器配Apache的时候发现Apache死活起不来,查看了一下日志
(OS 10048)Only one usage of each socket address (protocol/network address/port) is normally permitted. : make_sock: could not bind to address [::]:443 (OS 10048)Only one usage of each socket address (protocol/network address/port) is normally permitted. : make_sock: could not bind to address 0.0.0.0:443 no listening sockets available, shutting down Unable to open logs
由于443端口被占用,导致无法启动,那个软件这么不要脸啊,命令行netstat -ano
搞一下,找到PID,发现是VMWare的一个服务在占用这个端口,弄死它,OK,启动成功。
转载请注明原文出处《Apache无法启动443端口被占用解决方法》 如无特别声明,所有文章均遵守创作共用 署名-非商业-禁止演绎 3.0协议。