疯子。 发表于 2013-5-24 02:18:51

Arduino+乐联网平台搭建室内环境监测系统

本人接触arduino,接触开源硬件就是从乐联网(lewei50.com)开始的,今天的文章内容是基于乐联网提供的平台搭建一个室内环境监测系统。

首先,需要如下东西:

Arduino板子一块(必需)

DHT11模块一枚(可选)

LM35温度模块一枚(可选)

PPD42NS空气颗粒物传感器(可选)

除了板子,其他都是可选,你采集的空气相关数据与你的传感器相关,有了就采集数据,没有就不用了。


代码如下:
/*
Arduino+乐联网平台搭建室内环境监测系统

BH1750光照强度传感器接法:
VCC-5v
GND-GND
SCL-SCL(analog pin 5)
SDA-SDA(analog pin 4)

DHT11接法:
VCC-->5V
GND-->GND
DATA-->digital pin 2


PPD42NS接法:
针脚冲下,从右至左为1-5接口
Pin 1=> GND
Pin 3=> 5VDC
Pin 4=> Digital Pin 8
*/

#include <Wire.h>
#include <math.h>
#include <dht11.h>

dht11 DHT11;
#define DHT11PIN 2
int BH1750address = 0x23;//BH1750 I2C地址
byte buff;

int pin = 8;
unsigned long duration;
unsigned long starttime;
unsigned long sampletime_ms = 10000;
unsigned long lowpulseoccupancy = 0;
float ratio = 0;
float concentration = 0;

void setup() {
Wire.begin();
Serial.begin(9600);
pinMode(8,INPUT);
//starttime = millis();
}

void loop() {
// LM35温度传感器数据
int n = analogRead(A0);//读取A0口的电压值
float vol = n * (5.0 / 1023.0*100);//使用浮点数存储温度数据,温度数据由电压值换算得到
//Serial.print("LM35 Temperature (oC):");
Serial.print(vol);//串口输出温度数据

// DHT11传感器数据
DHT11.read(DHT11PIN);
Serial.print(",");
Serial.print((float)DHT11.humidity, 2);
Serial.print(",");
Serial.print((float)DHT11.temperature, 2);

//输出一个换行
//Serial.println("\n");

//光照传感器数据
Serial.print(",");
Serial.print(BH1750());

duration = pulseIn(pin, LOW);
lowpulseoccupancy = lowpulseoccupancy+duration;


ratio = lowpulseoccupancy/(sampletime_ms*10.0); // Integer percentage 0=>100
concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // using spec sheet curve
Serial.print(",");
Serial.println(concentration);
//Serial.println("---");
lowpulseoccupancy = 0;

delay(30000);
}

double BH1750() //BH1750设备操作
{
int i=0;
double val=0;
//开始I2C读写操作
Wire.beginTransmission(BH1750address);
Wire.write(0x10);//1lx reolution 120ms//发送命令
Wire.endTransmission();
delay(200);
//读取数据
Wire.beginTransmission(BH1750address);
Wire.requestFrom(BH1750address, 2);
while(Wire.available()) //
{
buff = Wire.read(); // receive one byte
i++;
}
Wire.endTransmission();
if(2==i)
{
val=((buff<<8)|buff)/1.2;
}
return val;
}

Dht11库文件下载:http://www.xn--7tqt52e1pef42b.cn/wp-content/uploads/2013/05/Dht111.rar

Github地址:https://github.com/hackwjfz/Arduino/blob/master/huanjing.ino



本次上传数据采用的是乐联网串口转发软件,不需要网络板,只要电脑开着就行。

关于软件的使用相关请移步http://www.lewei50.com/dev/doc/112


大家根据自己的传感器情况,稍加修改代码,按照串口软件要求的格式进行上传就行了

http://www.lewei50.com/home/gatewaystatus/528

上面是我的网关哦~



欢迎探讨交流~~
博客:http://www.xn--7tqt52e1pef42b.cn/

伯德 发表于 2013-5-24 12:59:01

乐为物联串口数据上传工具
这个串口工具需要一直连接到电脑且保持在发送状态吗?
那电脑不能关了?

疯子。 发表于 2013-5-24 14:06:55

伯德 发表于 2013-5-24 12:59
乐为物联串口数据上传工具
这个串口工具需要一直连接到电脑且保持在发送状态吗?
那电脑不能关了?

嗯,这只是其中一个途径。

伯德 发表于 2013-5-24 21:48:43

疯子。 发表于 2013-5-24 14:06 static/image/common/back.gif
嗯,这只是其中一个途径。

网站还是很多优点的,不用自己搭服务器了。 现在用的sinaapp 改天尝试一下这个。

zhanghuipz 发表于 2013-6-11 10:30:35

DHT11库文件有问题啊,编译时出现‘dht11’does not name a type?这是什么原因??
页: [1]
查看完整版本: Arduino+乐联网平台搭建室内环境监测系统