Arduino实现基本环境监测(1:实现传感器数值反馈)

  前面几篇文章分别测试了火焰传感器烟雾传感器(MQ-2)和温湿度传感器,对这几类传感器的使用方法和输出规律有了基本认识。这三类传感器监测的都是环境中的一些数据,包括可燃气体、火焰、温度及湿度,本文及后续相关文章想基于这三类传感器实现周期性的检测、反馈、记录及分析周围环境中的可燃气体、火焰、温度及湿度信息。
  本文实现第一步功能,即设置好Arduino与火焰传感器、烟雾传感器(MQ-2)和温湿度传感器的连接关系、定义信息反馈格式、编写并测试Arduino代码。
  本文使用的硬件如下图所示:Arduino UNO R3、面包板、火焰传感器、烟雾传感器(MQ-2)和温湿度传感器。
在这里插入图片描述
  硬件连接实物图如下所示:
在这里插入图片描述
  硬件连接完成后,还需要定义反馈数据的格式,便于上位机接收、解析和处理。这里就简单地定义如下:
  温湿度(1,错误信息|0,湿度,温度);火焰(int);烟雾(int);

  接着编写Arduino程序,主要是将三类传感器的处理程序合并到一起,并将结果整理为上述数据格式。详细的代码如下所示:

//温湿度
#include <dht11.h>
#define DHT11PIN 2
dht11 DHT11;
int dhtResult=0;//记录温湿度读取结果,0为正常,1为错误
String errorMsg="";

//火焰传感器
const int flameAnalogPin = A0; //定义火焰传感器接口
int flameValue=0;

//烟雾传感器
const int mqAnalogPin=A1;
int mqValue=0;

String result="";

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

void loop() 
{
  result="";
  
  // 读取温湿度数据
  int chk = DHT11.read(DHT11PIN);
  dhtResult=1;

  switch (chk)
  {
    case DHTLIB_OK: 
                dhtResult=0;
                break;
    case DHTLIB_ERROR_CHECKSUM: 
                errorMsg="Checksum error"; 
                break;
    case DHTLIB_ERROR_TIMEOUT: 
                errorMsg="Time out error"; 
                break;
    default: 
                errorMsg="Unknown error"; 
                break;
  }

  result+=dhtResult;
  result+=",";
  if(dhtResult==0)
  {
     result+=DHT11.humidity;
     result+=",";
     result+=DHT11.temperature;
  }
  else
  {
     result+=errorMsg;
  }

  result+=";";
  
  //读取火焰传感器
  int flameValue=analogRead(flameAnalogPin);
  result+=flameValue;
  result+=";";

  //烟雾传感器
  mqValue=analogRead(mqAnalogPin);
  result+=mqValue;
  result+=";";

  Serial.println(result);

  delay(2000);  
}

  程序下载到Arduino后进行测试,测试结果如下所示。从下面的数据可以看出程序正常运转,当打火机打火后,火焰传感器的检测值急剧减小,其它传感器的检测值比较稳定,而当打火机的火被吹灭,打火机释放可燃气体时,烟雾传感器的检测值快速增加,此时温湿度传感器和火焰传感器则保持稳定。
在这里插入图片描述
  后续会使用C#语言编写上位机程序接收并处理Arduino上传的检测值。

参考文献
[1]基于传感器开发套件玩转Arduino编程

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值