当前位置:首页  <  应用教程  <  【创客学堂】基于Arduino与各种传感器的家庭环境信息采集器...
【创客学堂】基于Arduino与各种传感器的家庭环境信息采集器
编辑:Peter 2013-09-04 浏览次数:1068

    Arduino已经流行了很长时间了,学习Arduino的各种套件也已经推出了很长时间了,里面包括了大部分的传感器。当我们按照学习、实验目录表做完所有的Arduino利用各种传感器采集信息的实验之后,还应该如何利用这些套件里的各种传感器Arduino控制器呢?在这里小编就帮大家整合一下Arduino和它的这些小伙伴们,复习一下之前学习的知识,利用Arduino和这些常用的传感器一起制作一款简单实用的家庭用具——家庭环境信息探测仪。

 

    我们在套件当中会发现很多实用的传感器模块,像温度传感器湿度传感器气体传感器光线传感器与继电器模块等,更重要的是我们还有操作它们的代码,这使得整合变得更简单了。

 

    Now let us do it!

 

    小编在这里就不啰嗦Arduino控制器与它的那些小伙伴了,直接上图告诉大家需要什么,正所谓有图有真相。

 

Arduino UNO R3Arduino传感器扩展板v5.0LM35温度传感器

温度传感器DS18B20MQ-2气体传感器MQ-3气体传感器

 蜂鸣器模块LED发光模块继电器模块

 

 

   我们的预期功能是利用Arduino控制器与各种常见的传感器检测室内环境的部分信息,如温度湿度、有害气体浓度、光照强度及明火等功能,检测到以上包含危险项的信息后,Arduino控制器将控制蜂鸣器长鸣,LED(红色和黄色)交替快闪,从而产生声光报警信号,同时会控制相应的继电器做出反应,采取必要的补救措施;若情况安全,则蜂鸣器、LED及继电器无动作,并且设计有显示模块,能够将实时数据显示出来,做到一目了然。

Arduino电子积木学习套件

 Arduino电子积木套件

 

部分代码如下:

const int gas   = 0;
const int air     = 1;
const int ctr_0 = 2;
const int ctr_1 = 3;
const int ctr_2 = 4;
const int ctr_3 = 5;
const int ctr_4 = 6;
const int ctr_5 = 7;
const int fire   = 9;
const int tem  = 10;
const int beep = 11;
const int led_r = 12;
const int led_y = 13;
int TemVal[8];
int loop_1;
int temval;
//NoWarn
void NoWarn()
{
  digitalWrite(beep,LOW);
  digitalWrite(led_r,LOW);
  digitalWrite(led_y,LOW);
}
//Warn
void Warn()
{
  digitalWrite(beep,HIGH);
 
  digitalWrite(led_r,HIGH);
  digitalWrite(led_y,LOW);
  delay(100);
  digitalWrite(led_r,LOW);
  digitalWrite(led_y,HIGH);
  delay(100);
}
//fire
int FireRead()
{
  return analogRead(fire);
}
//MQ-2
int GasRead()
{
  return analogRead(gas);
}
//MQ-3
int AirRead()
{
  return analogRead(air);
}
//LM35
int TemRead()
{
  for(loop_1 = 0;loop_1 < 8;loop_1++)
  {
    TemVal[loop_1] = (5.0 * analogRead(tem) *100.0) / 1024;
    temval = temval + TemVal[loop_1];
    delay(100);
  }
  temval = temval / 8.0;
  return temval;
}

void setup()
{
  Serial.begin(9600);
  pinMode(gas,INPUT);
  pinMode(air,INPUT);
  pinMode(fire,INPUT);
  pinMode(tem,INPUT);
 
  pinMode(beep,OUTPUT);
  pinMode(led_r,OUTPUT);
  pinMode(led_y,OUTPUT);
 
  pinMode(ctr_0,OUTPUT);
  pinMode(ctr_1,OUTPUT);
  pinMode(ctr_2,OUTPUT);
  pinMode(ctr_3,OUTPUT);
  pinMode(ctr_4,OUTPUT);
  pinMode(ctr_5,OUTPUT);
}

void loop()
{
  int FireVal = FireRead();
  Serial.println(FireVal);
  if(FireVal >= 600)
    Warn();
 
  int GasVal = GasRead();
  Serial.println(GasVal);
  if(GasVal >= 600)
    Warn();
 
  int AirVal = AirRead();
  Serial.println(AirVal);
  if(AirVal >= 600)
    Warn();
   
  int Temperature = TemRead();
  Serial.println(Temperature);

    对于高手这篇文章真的是太简单了,可是对于Arduino初学者而言,小编觉得这篇文章还是有些必要的,因为通过这个简单而实用的制作,不仅可以锻炼我们的动手能力,更重要的是我们又复习了一下之前分节学习Arduino的内容,并作出了整合,使这些知识不再零散、琐碎,做到了有机的结合在了一起。

 

    Arduino上去就是一个简单的最小系统,其实不然,为了让它易学易用,很多人付出了艰巨的努力。当我们越来越深入的学习它的时候,就会发现在它简单的背后其实隐藏着很多内在的潜能!

 

    让我们来彻底了解Arduino吧!当然了,不要忘了它的那些小伙伴们——传感器

 

Arduino UNO

http://www.alsrobot.cn/goods-141.html

 

Arduino传感器扩展板v5.0

http://www.alsrobot.cn/goods-147.html

 

LM35温度传感器器

http://www.alsrobot.cn/goods-71.html

 

蜂鸣器模块

http://www.alsrobot.cn/goods-169.html

 

LED发光模块

http://www.alsrobot.cn/goods-133.html

 

继电器模块

http://www.alsrobot.cn/goods-137.html

 

Arduino电子积木学习套件

http://www.alsrobot.cn/goods-36.html