找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2377|回复: 0
收起左侧

Arduino学习:2560+W5100试验实时室温对Pachubbe.com推送

[复制链接]
ID:113207 发表于 2016-4-10 00:43 | 显示全部楼层 |阅读模式
试验名称:2560+W5100试验实时室温对Pachubbe.com推送
试验时间:2014-02-18
控制板:arduino 2560
元器件:LM-35 DZ模拟传感器一只,正对标示,从左往右,+5V,模拟输出,GND
连接方法:接好+5V,GND,将LM35的模拟输出接2560的模拟PIN4
                W5100连接至你的路由器,路由器连接互联网,PC连接2560便于观察网络连接以及数据采集情况

结果运用 : Tep= ** C;将实时室温传感器数据推送至www.pachube.com,每10秒刷新一次
代码原型:(1)官方例程pachubeout(-使用 ERxPachube 库的实例. )
                 (2)弘毅教程--学习笔记11,
                 (3)其它结合网络资源整理
* 本实例创建于2011.04.22,作者是Jeffrey Sun
* 开源项目详见http://code.google.com/p/pachubelibrary/
所需要的库在此处下载http://code.google.com/p/pachube ... ip&can=2&q=,释放至此处:
225845vlzsc6le5vs0yc96.png
第一步:
      如果你还没有一个 Pachube 账户, 先去注册一个 (http://www.pachube.com/).注意,有一个开发账号和一个通讯组讨论账号,我们需要前者。注册成功后,我们将获得一个API key
     pahube.com是一个免费的提供给开发者的实时数据上送、展示的网站。内置API,使用者只需要调用API(给出feed的ID),就可以将传感器数据推送至你自己独享的feed数据库。然后以图形方式进行丰富展示。
2249362gvcssljc9mr4mes.png

第二步:创建一个类似http://www.pachube.com/feeds/23408这样的素材库(feed)
          为了测试,我们只需要创建一个ID为0的数据流
以下就是我建立的一个ID号码为49030的feed,需要设置项目名称、简介、关键词(便于检索)、项目的位置(经纬度、海拔、室内还是室外、移动还是固定等等)、数据表ID编号、表述、单位等。支持多数据ID。你可以在一个素材中推送多个传感器数据,数据格式有长型、字符型等。

2320377ck4c2kz77s3s721.png
第三步:
   将以太网扩展板(W5100)堆叠至2560板上。LM35接2560的模拟输入(PIN 4)
231839vvh8zvqrym3hhoyy.png

第四步:输入、编译代码
代码一共分为个部分:
1、设置MAC地址、IP地址,API KEY以及FEED ID
2、连接互联网,将温度传感器数据转换为摄氏度,然后推送至pachube.com
3、在串口助手中,监视网络连接情况,以及传感器数据,状态值为200则连接成功,否则不成功
234057tfiviyzzf7mtuwsr.png
第五步:在www.pachube.com中观察你的数据
为了引起温度波动,图中的两处波动是我用手指贴近FM35后造成的波动。

230226gq7ir1744kgpiq54.png


后记:
    本实例学习过程中,先后遇到了W5100不能稳定工作、无线路由器损坏、找不到一个实时推送数据的网站等问题,感谢弘毅、HEAVEN、小强、张丹、风的孩子等高手支持。我是以arduino为兴趣的一个软硬件基础都很薄弱的初学者,但是兴趣是最大的推动力。这个实例的学习仅仅是将一个开源项目与弘毅笔记简单的组合,即便是一个简单的尝试也感到很多困难,里面如有理解错误的地方敬请指正。

附代码:
  1.     /*项目名称:LM35温度传感器连接2560向www.pachube,cin推送数据试验
  2.     试验时间:2012-02-18
  3.     * 本实例创建于2011.04.22,作者是Jeffrey Sun
  4.     * 开源项目详见[url]http://code.google.com/p/pachubelibrary/[/url]

  5.     */
  6.     #include
  7.     #include
  8.     #include  //调用ERxPachube库
  9.     #include
  10.     #include

  11.     byte mac[] = { 0xCC, 0xAC, 0xBE, 0xEF, 0xFE, 0x91 }; // 确认这是你网络中唯一的MAC地址,用小强的话说,你就是网卡厂商,自己定一个
  12.     byte ip[] = { 192, 168, 1, 177   };                  // 设置以太网扩展板的IP地址

  13.     #define PACHUBE_API_KEY                                "Your API_KEY" // 填写你自己的 API key
  14.     #define PACHUBE_FEED_ID                                Your Feed Id // 填写你自己的素材ID( feed id)

  15.     //定义三个FM35用的变量
  16.     int potPin = 4;                     //设置模拟口4为LM35的信号输入端口
  17.     float temperature = 0;                //设置temperature为浮点变量
  18.     long val = 0;                       //设置val为长整数变量
  19.          
  20.          
  21.     ERxPachubeDataOut dataout(PACHUBE_API_KEY, PACHUBE_FEED_ID);

  22.     void PrintDataStream(const ERxPachube& pachube); //在COM口监测本地温度传感器推送情况

  23.     void setup() {
  24.             Serial.begin(9600);
  25.             Ethernet.begin(mac, ip);  //访问以太网扩展板
  26.             dataout.addData(0);       //向[url]www.pachube.com[/url]推送数据序列0(转换后的温度)
  27.     }

  28.     void loop() {
  29.             Serial.println("+++++++++++++++++++++++++++++++++++++++++++++++++");
  30.             val = analogRead(potPin);//温度传感器LM35接到模拟PIN4上;val变量为从LM35信号口读取到的数值
  31.             temperature = (val*0.0048828125*100);      
  32.             //把读取到的val转换为温度数值,系数一:0.00488125=5/1024,0~5V对应模拟口读数
  33.             //1~1024,系数二:100=1000/10,1000是毫伏与伏的转换;10是每10毫伏对应一度温升。
  34.             dataout.updateData(0, temperature);
  35.             int status = dataout.updatePachube();
  36.             Serial.print("sync status code  => ");
  37.             Serial.println(status);   //如果状态码是200,则互联网连接成功
  38.             PrintDataStream(dataout);
  39.             delay(10000);
  40.     }

  41.     void PrintDataStream(const ERxPachube& pachube)
  42.     {
  43.             unsigned int count = pachube.countDatastreams();
  44.             Serial.print("data count=> ");
  45.             Serial.println(count);
  46.             Serial.println(",");
  47.             Serial.print(pachube.getIdByIndex(0));
  48.             Serial.print(",");
  49.             Serial.print(pachube.getValueByIndex(0));
  50.             Serial.println();
  51.     }
复制代码



回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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