tag 标签: pachubbe

相关博文
  • 热度 15
    2012-12-28 15:44
    994 次阅读|
    0 个评论
      转自 极客工坊 :http://www.geek-workshop.com/forum.php?mod=viewthreadtid=544 作者:沧海笑1122 试验名称:2560+W5100试验实时室温对Pachubbe.com推送 试验时间:2012-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 … ipcan=2q=,释放至此处:                     第一步: 如果你还没有一个 Pachube 账户, 先去注册一个 (http://www.pachube.com/).注意,有一个开发账号和一个通讯组讨论账号,我们需要前者。注册成功后,我们将获得一个API key pahube.com是一个免费的提供给开发者的实时数据上送、展示的网站。内置API,使用者只需要调用API(给出feed的ID),就可以将传感器数据推送至你自己独享的feed数据库。然后以图形方式进行丰富展示。 第二步:创建一个类似http://www.pachube.com/feeds/23408这样的素材库(feed) 为了测试,我们只需要创建一个ID为0的数据流 以下就是我建立的一个ID号码为49030的feed,需要设置项目名称、简介、关键词(便于检索)、项目的位置(经纬度、海拔、室内还是室外、移动还是固定等等)、数据表ID编号、表述、单位等。支持多数据ID。你可以在一个素材中推送多个传感器数据,数据格式有长型、字符型等。 第三步: 将以太网扩展板(W5100)堆叠至2560板上。LM35接2560的模拟输入(PIN 4) 第四步:输入、编译代码 代码一共分为个部分: 1、设置MAC地址、IP地址,API KEY以及FEED ID 2、连接互联网,将温度传感器数据转换为摄氏度,然后推送至pachube.com 3、在串口助手中,监视网络连接情况,以及传感器数据,状态值为200则连接成功,否则不成功   第五步:在www.pachube.com中观察你的数据 为了引起温度波动,图中的两处波动是我用手指贴近FM35后造成的波动。 后记: 本实例学习过程中,先后遇到了W5100不能稳定工作、无线路由器损坏、找不到一个实时推送数据的网站等问题,感谢弘毅、HEAVEN、小强、张丹、风的孩子等高手支持。我是以arduino为兴趣的一个软硬件基础都很薄弱的初学者,但是兴趣是最大的推动力。这个实例的学习仅仅是将一个开源项目与弘毅笔记简单的组合,即便是一个简单的尝试也感到很多困难,里面如有理解错误的地方敬请指正。 附代码: /*项目名称:LM35温度传感器连接2560向www.pachube,cin推送数据试验 试验时间:2012-02-18 * 本实例创建于2011.04.22,作者是Jeffrey Sun * 开源项目详见http://code.google.com/p/pachubelibrary/ */ #include Arduino.h #include HardwareSerial.h #include ERxPachube.h //调用ERxPachube库 #include Ethernet.h #include SPI.h byte mac = { 192, 168, 1, 177 }; // 设置以太网扩展板的IP地址 #define PACHUBE_API_KEY “Your API_KEY” // 填写你自己的 API key #define PACHUBE_FEED_ID Your Feed Id // 填写你自己的素材ID( feed id) //定义三个FM35用的变量 int potPin = 4; //设置模拟口4为LM35的信号输入端口 float temperature = 0; //设置temperature为浮点变量 long val = 0; //设置val为长整数变量 ERxPachubeDataOut dataout(PACHUBE_API_KEY, PACHUBE_FEED_ID); void PrintDataStream(const ERxPachube pachube); //在COM口监测本地温度传感器推送情况 void setup() { Serial.begin(9600); Ethernet.begin(mac, ip); //访问以太网扩展板 dataout.addData(0); //向www.pachube.com推送数据序列0(转换后的温度) } void loop() { Serial.println(“+++++++++++++++++++++++++++++++++++++++++++++++++”); val = analogRead(potPin);//温度传感器LM35接到模拟PIN4上;val变量为从LM35信号口读取到的数值 temperature = (val*0.0048828125*100); //把读取到的val转换为温度数值,系数一:0.00488125=5/1024,0~5V对应模拟口读数 //1~1024,系数二:100=1000/10,1000是毫伏与伏的转换;10是每10毫伏对应一度温升。 dataout.updateData(0, temperature); int status = dataout.updatePachube(); Serial.print(“sync status code OK == 200 = “); Serial.println(status); //如果状态码是200,则互联网连接成功 PrintDataStream(dataout); delay(10000); } void PrintDataStream(const ERxPachube pachube) { unsigned int count = pachube.countDatastreams(); Serial.print(“data count= “); Serial.println(count); Serial.println(“Feed id,Temp value”); Serial.print(pachube.getIdByIndex(0)); Serial.print(“,”); Serial.print(pachube.getValueByIndex(0)); Serial.println(); }