分享

【arduino】常见的几个传感器的使用

 billzs 2018-06-16

因为要用arduino做报警器,学了几个常用的传感器使用,与大家分享。

1、人体红外线感应模块HC-SR501
HC-SR501
产品参数

1.工作电压:DC5V至20V
2.静态功耗:65微安
3.电平输出:高3.3V,低0V
4.延时时间:可调(0.3秒~18秒)
5.封锁时间:0.2秒
6.触发方式:L不可重复,H可重复,默认值为H(跳帽选择)
7.感应范围:小于120度锥角,7米以内
8.工作温度:-15~+70度

简介:HC-SR501是一个红外线感应模块,它依靠特定温度(36-38)的物体运动来判断人体。因此可以作为报警器的关键模块。在关键的地方,如门口,放上这么一个传感器,可以起到防盗的作用。它有两个调节旋钮,一个调节最远探测距离,一个调节延时时间,具体参数如上。当人走过或停留在感应范围中,模块通过D0发送高电平信号。

示例程序:

#define hc-sr 2

void setup()  {
  Serial.begin(9600);
  pinMode(hc-sr,INPUT);

}
void loop()  {
    if(digitalRead(hc-sr)==HIGH)
    {
      Serial.println("Someone here!");
    }
    else
    {
      Serial.println("Nobody");
    }
    delay(1000);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

2、烟雾及可燃气体检测模块MQ-2
MQ-2,图片来自网络
产品参数

1、敏感气体 液化气,丙烷,氢气
2、升压芯片 PT1301
3、工作电压 2.5V-5.0V
4、产品尺寸 40.0mm*21.0mm
5、固定孔尺寸 2.0mm

简介:MQ-2是一个烟雾感应模块,原理是用针对特殊气体或微粒敏感的电阻来判断是否存在可燃气体或烟雾颗粒。输出有两种方式,A0口输出当前特殊气体含量参考值(0-1023),基本上100以下的示数为正常。D0口根据预先设定的参考值的阈值输出高电平或低电平信号。可以作为液化气泄漏的预警装置,也可以作为判断火灾的辅助。

示例程序:

#define MQ-D 2
#define MQ-A A0

void setup()  {
  Serial.begin(9600);
  pinMode(MQ-D,INPUT);
  pinMode(MQ-A.INPUT);
}

void loop()  {
    if(digitalRead(MQ-D)==HIGH)
    {
      Serial.println("There are something smell not good...!");
      Serial.print("value:");
      Serial.println(analogRead(MQ-A));
    }
    else
    {
      Serial.println("Nothing");
    }
    delay(1000);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

2、温湿度检测模块DHT-11
DHT-11,图片来自网络
产品参数

1 湿度测量范围:20%-95%(0度-50度范围)湿度测量误差:+-5%
2 温度测量范围:0度-50度 温度测量误差:+-2度
3 工作电压3.3V-5V
4 输出形式 数字输出
5 设有固定螺栓孔,方便安装
6 小板PCB尺寸:3.2cm * 1.4cm

简介:DHT-11模块是常用的温湿度检测模块,常被用于空调,汽车内,使用方便。输出不同于其他模块,它的输出需要arduino给两个电平信号,然后将数据以高低电平的形式发送位的形式发送。但幸运的是arduino有相关的库,所以我们除非探究,不需要了解这个过程的具体实现。dht11的库文件可以从百度下载,放在在arduino的IDE下libraries文件下就可以使用了。

示例程序:

#include <dht11.h>
dht11 DHT11;
#define DHT11PIN 2

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  Serial.println("\n");

  DHT11.read(DHT11PIN);//这里只需要读取一次即可,下面需要相应数据直接调用。
  Serial.print("Humidity (%): ");
  Serial.println((float)DHT11.humidity, 2);

  Serial.print("Temperature (oC): ");
  Serial.println((float)DHT11.temperature, 2);

  delay(1000);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多