极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10049|回复: 4

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

[复制链接]
发表于 2013-5-24 02:18:51 | 显示全部楼层 |阅读模式
本人接触arduino,接触开源硬件就是从乐联网(lewei50.com)开始的,今天的文章内容是基于乐联网提供的平台搭建一个室内环境监测系统。

首先,需要如下东西:

Arduino板子一块(必需)

DHT11模块一枚(可选)

LM35温度模块一枚(可选)

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

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


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

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

  8. DHT11接法:
  9. VCC-->5V
  10. GND-->GND
  11. DATA-->digital pin 2


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

  18. #include <Wire.h>
  19. #include <math.h>
  20. #include <dht11.h>

  21. dht11 DHT11;
  22. #define DHT11PIN 2
  23. int BH1750address = 0x23;//BH1750 I2C地址
  24. byte buff[2];

  25. int pin = 8;
  26. unsigned long duration;
  27. unsigned long starttime;
  28. unsigned long sampletime_ms = 10000;
  29. unsigned long lowpulseoccupancy = 0;
  30. float ratio = 0;
  31. float concentration = 0;

  32. void setup() {
  33. Wire.begin();
  34. Serial.begin(9600);
  35. pinMode(8,INPUT);
  36. //starttime = millis();
  37. }

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

  44. // DHT11传感器数据
  45. DHT11.read(DHT11PIN);
  46. Serial.print(",");
  47. Serial.print((float)DHT11.humidity, 2);
  48. Serial.print(",");
  49. Serial.print((float)DHT11.temperature, 2);

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

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

  55. duration = pulseIn(pin, LOW);
  56. lowpulseoccupancy = lowpulseoccupancy+duration;


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

  63. delay(30000);
  64. }

  65. double BH1750() //BH1750设备操作
  66. {
  67. int i=0;
  68. double val=0;
  69. //开始I2C读写操作
  70. Wire.beginTransmission(BH1750address);
  71. Wire.write(0x10);//1lx reolution 120ms//发送命令
  72. Wire.endTransmission();
  73. delay(200);
  74. //读取数据
  75. Wire.beginTransmission(BH1750address);
  76. Wire.requestFrom(BH1750address, 2);
  77. while(Wire.available()) //
  78. {
  79. buff[i] = Wire.read(); // receive one byte
  80. i++;
  81. }
  82. Wire.endTransmission();
  83. if(2==i)
  84. {
  85. val=((buff[0]<<8)|buff[1])/1.2;
  86. }
  87. return val;
  88. }
复制代码


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
嗯,这只是其中一个途径。

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

使用道具 举报

发表于 2013-6-11 10:30:35 | 显示全部楼层
DHT11库文件有问题啊,编译时出现‘dht11’does not name a type?这是什么原因??
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-7 05:01 , Processed in 0.056738 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表