本人接触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[2];
- 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[i] = Wire.read(); // receive one byte
- i++;
- }
- Wire.endTransmission();
- if(2==i)
- {
- val=((buff[0]<<8)|buff[1])/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/ |