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协议。