极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16694|回复: 3

machtalk.net上的arduinoYun[甲醛/温度/湿度]

[复制链接]
发表于 2014-5-31 22:58:14 | 显示全部楼层 |阅读模式
本帖最后由 futuremeng 于 2014-5-31 23:00 编辑

数据地址:http://www.machtalk.net/device/dataview/b0af42ac5acc4b639d28fdcaad25640e

设备:Arduino Yun

传感器:
1.甲醛/有机气体:MS1100

http://item.taobao.com/item.htm?spm=a1z09.2.9.79.caH6XU&id=18451419906

取值有两个,一个是根据读数算出来的ppm,一个是直接的读数,因为前者变化不大,为了显示的更清晰,所有把

2. DH11数字温湿度

http://item.taobao.com/item.htm?spm=a1z10.3.w4002-3141887416.10.pY0Ps0&id=6031644481

这个比较简单,不解释了,直接用库中的例子就行。但我去掉了不相干的一些代码。



  1. #include <Process.h>
  2. #include <dht.h>
  3. dht DHT;
  4. #define GAS_PIN 0
  5. #define DHT11_PIN 8
  6. #define ledPin 13

  7. void setup() {
  8.   // Initialize Bridge
  9.   pinMode(GAS_PIN,INPUT);
  10.   pinMode(DHT11_PIN,INPUT);
  11.   pinMode(ledPin, OUTPUT);
  12.   Bridge.begin();

  13.   // Initialize Serial
  14.   //Serial.begin(9600);

  15.   // Wait until a Serial Monitor is connected.
  16.   //while (!Serial);

  17. }

  18. void loop() {
  19.   digitalWrite(ledPin, HIGH);
  20.   
  21.   int GAS_Valt = analogRead(GAS_PIN);
  22.   int GAS_PPM=Valt2PPM(GAS_Valt);


  23.   //String cmdValt = "curl --request POST -F params={"value":"+String(GAS_Valt)+"}  --header "APIKey:aee3bff8c9ad40db926c5be12a0a21b4"  http://api.machtalk.net/v1.0/device/b0af42ac5acc4b639d38fdcaad15640e/2/1/datapoints/add";
  24.   runProcess(String(GAS_Valt),2);   
  25.   //String cmdPPM = "curl --request POST -F params={"value":"+String(GAS_PPM)+"}  --header "APIKey:aee3bff8c9ad40db926c1be12a0a11b4"  http://api.machtalk.net/v1.0/device/b0af42ac5acc4b639d28fdcaad15640e/1/1/datapoints/add";
  26.   runProcess(String(GAS_PPM),1);  
  27.   int chk = DHT.read11(DHT11_PIN);
  28.   switch (chk)
  29.   {
  30.     case DHTLIB_OK:  
  31.                 //Serial.print("OK,\t");
  32.                 break;
  33.     case DHTLIB_ERROR_CHECKSUM:
  34.                 //Serial.print("Checksum error,\t");
  35.                 break;
  36.     case DHTLIB_ERROR_TIMEOUT:
  37.                 //Serial.print("Time out error,\t");
  38.                 break;
  39.     default:
  40.                 //Serial.print("Unknown error,\t");
  41.                 break;
  42.   }
  43.   //String cmdTemperature="curl --request POST -F params={"value":"+String(DHT.temperature)+"}  --header "APIKey:aee3bff8c9ad40db926c5be13a0a11b4"  http://api.machtalk.net/v1.0/device/b0af42ac5acc4b639d28fdcaad35640e/4/1/datapoints/add";
  44.   runProcess(String(DHT.temperature),3);
  45.   //String cmdHumidity="curl --request POST -F params={"value":"+String(DHT.humidity)+"}  --header "APIKey:aee3bff8c9ad40db926c5be13a0a11b4"  http://api.machtalk.net/v1.0/device/b0af42ac5acc4b639d38fdcaad25640e/3/1/datapoints/add";
  46.   runProcess(String(DHT.humidity),4);  

  47.   
  48.   digitalWrite(ledPin, LOW);
  49.   delay(5000);
  50. }

  51. int Valt2PPM(int valt)
  52. {
  53.   double ya=valt/204.8;
  54.   int value=0;
  55.   if(ya>0.64)
  56.   {
  57.     value=1;
  58.   }
  59.   if(ya>2.10)
  60.   {
  61.     value=2;
  62.   }
  63.   if(ya>2.38)
  64.    {
  65.     value=3;
  66.   }
  67.   if(ya>2.57)
  68.   {
  69.     value=4;
  70.   }
  71.   if(ya>2.71)
  72.   {
  73.     value=5;
  74.   }
  75.   if(ya>2.82)
  76.   {
  77.     value=6;
  78.   }
  79.   if(ya>2.92)
  80.   {
  81.     value=7;
  82.   }
  83.   if(ya>3.01)
  84.   {
  85.     value=8;
  86.   }
  87.   if(ya>3.09)
  88.   {
  89.     value=9;
  90.   }
  91.   if(ya>3.16)
  92.   {
  93.     value=10;
  94.   }
  95.   
  96.   if(ya>3.22)
  97.   {
  98.     value=15;
  99.   }
  100.   if(ya>3.49)
  101.   {
  102.     value=20;
  103.   }
  104.   if(ya>3.69)
  105.   {
  106.     value=25;
  107.   }
  108.   if(ya>3.87)
  109.   {
  110.     value=30;
  111.   }
  112.   if(ya>4.02)
  113.   {
  114.     value=35;
  115.   }
  116.   if(ya>4.15)
  117.   {
  118.     value=40;
  119.   }
  120.   if(ya>4.27)
  121.   {
  122.     value=45;
  123.   }
  124.   if(ya>4.38)
  125.   {
  126.     value=50;
  127.   }
  128.   if(ya>4.48)
  129.   {
  130.     value=55;
  131.   }
  132.   if(ya>4.57)
  133.   {
  134.     value=60;
  135.   }
  136.   if(ya>4.66)
  137.   {
  138.     value=65;
  139.   }
  140.   if(ya>4.74)
  141.   {
  142.     value=70;
  143.   }
  144.   if(ya>4.82)
  145.   {
  146.     value=75;
  147.   }
  148.   
  149.   return value;
  150. }

  151. void  runProcess(String value,int type)
  152. {
  153.    String cmd = "curl --request POST -F params={"value":"+value+"}  --header "APIKey:aee3bff8c9ad40db926c3be12a0a11b5"  http://api.machtalk.net/v1.0/device/b0af42ac5acc4b639d28fdcaad25630f/"+String(type)+"/1/datapoints/add";
  154.   
  155.   Process p;               
  156.   p.runShellCommand(cmd);
  157.   
  158.   while(p.running());
  159.   
  160. // while (p.available()>0) {
  161.     //char c = p.read();
  162.     //Serial.print(c);
  163.   //}
  164.   // Ensure the last bit of data is sent.
  165.   //Serial.flush();

  166. }
复制代码



说一下调试中遇到的问题:

1. 一开始想用Progress的例程,但添加参数的方式没有成功,貌似分开加可以,但后来在网上找到了用runShellCommand,如此一来一句就搞定了;

2. 还有就是一开始我把cmd分别用String cmd1 ,String cmd2这样的方式赋值,后来发现到第四个就传不上去,猜测可能是占用内存太多,改成了现在这个方式,已经可以用了,但不知道是否还有优化的方式。

回复

使用道具 举报

发表于 2014-7-30 20:46:19 | 显示全部楼层
接在0管脚的线在MS1100模块上接那个引脚?NC还是SIG?
回复 支持 反对

使用道具 举报

发表于 2014-12-15 22:21:01 | 显示全部楼层
请问。。你这个电压转ppm是根据什么公式 或表做的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-20 10:14:54 | 显示全部楼层
爱卡溜 发表于 2014-12-15 22:21
请问。。你这个电压转ppm是根据什么公式 或表做的?

根据对照表写的
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-18 23:23 , Processed in 0.047987 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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