极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 53666|回复: 37

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

  [复制链接]
发表于 2012-2-19 23:02:58 | 显示全部楼层 |阅读模式
本帖最后由 沧海笑1122 于 2012-2-20 01:10 编辑

试验名称: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 ... ip&can=2&q=,释放至此处:
pic3.png
第一步:
      如果你还没有一个 Pachube 账户, 先去注册一个 (http://www.pachube.com/).注意,有一个开发账号和一个通讯组讨论账号,我们需要前者。注册成功后,我们将获得一个API key
     pahube.com是一个免费的提供给开发者的实时数据上送、展示的网站。内置API,使用者只需要调用API(给出feed的ID),就可以将传感器数据推送至你自己独享的feed数据库。然后以图形方式进行丰富展示。
pic01.png

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

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

第四步:输入、编译代码
代码一共分为个部分:
1、设置MAC地址、IP地址,API KEY以及FEED ID
2、连接互联网,将温度传感器数据转换为摄氏度,然后推送至pachube.com
3、在串口助手中,监视网络连接情况,以及传感器数据,状态值为200则连接成功,否则不成功

串口助手

串口助手

第五步:在www.pachube.com中观察你的数据
为了引起温度波动,图中的两处波动是我用手指贴近FM35后造成的波动。

上传至pachube的情况

上传至pachube的情况



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

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

  5. */
  6. #include <Arduino.h>
  7. #include <HardwareSerial.h>
  8. #include <ERxPachube.h> //调用ERxPachube库
  9. #include <Ethernet.h>
  10. #include <SPI.h>

  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);       //向www.pachube.com推送数据序列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 <OK == 200> => ");
  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("<Feed id>,<Temp value>");
  47.         Serial.print(pachube.getIdByIndex(0));
  48.         Serial.print(",");
  49.         Serial.print(pachube.getValueByIndex(0));
  50.         Serial.println();
  51. }
复制代码
回复

使用道具 举报

发表于 2012-2-20 22:24:44 | 显示全部楼层
看起来挺容易的,ERxPachubeDataOut dataout把啥事情都做了
回复 支持 反对

使用道具 举报

发表于 2012-2-21 22:26:24 | 显示全部楼层
我的是ENC28J60,您的代码能使用吗!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-21 22:40:18 | 显示全部楼层
普创通享 发表于 2012-2-21 22:26
我的是ENC28J60,您的代码能使用吗!

我使用的是W5100,ENC28J60我没有测试过。
回复 支持 反对

使用道具 举报

发表于 2012-2-23 10:56:10 | 显示全部楼层
楼主,能把Arduino.h、HardwareSerial.h、ERxPachube.h、Ethernet.h、SPI.h完整库发给我吗,我的邮箱:dakeqiwang@163.com 学生参加比赛参考急用,谢谢。
回复 支持 反对

使用道具 举报

发表于 2012-3-5 10:02:23 | 显示全部楼层
ENC28J60 和W5100好像不讷讷感互用代码的吧?
回复 支持 反对

使用道具 举报

发表于 2012-3-11 20:55:18 | 显示全部楼层
我完全用的是您的硬件配置和代码,总是显示状态值为403,是怎么回事,求助!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-3-12 12:02:30 | 显示全部楼层
本帖最后由 沧海笑1122 于 2012-3-12 12:04 编辑

状态值是403,含义如下:
----------------------------------------
Forbidden 403
The request is for something forbidden. Authorization will not help. (请求被禁止,授权问题)
------------------------------------------
从你收到的信息看,有可能是授权问题,所以请你确认你是否已经正确注册了Pachube,并且获取了API key,每个注册账户对应一个或多个API key(注册成功后你可以添加多个,但是都对应一个注册账户,不能直接用代码里面的demo噢)。
其次就是正确建立一个你自己专属的feed(素材库)。

关于收到的各类状态信息的含义,请参考这个网址:
http://www.w3.org/Protocols/HTTP/HTRESP.html

别灰心,一个一个环节查。你在浏览器访问https://pachube.com/没问题吧。

祝你好运。
回复 支持 反对

使用道具 举报

发表于 2012-4-18 23:34:01 | 显示全部楼层
LZ的实验很有意义。
LZ是否可进一步,加一个控制,即从pachube网页对 arduino进行设置,如就按你现有的器材,设置一个报警温度,到给定值就喇叭响,而这个给定值可由远程控制。
初步看了pachube介绍,应该可行的。这里关注的是pachube怎么要求本地网址的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-4-19 00:18:14 | 显示全部楼层
通过互联网控本地三色LED,已经试过,没有问题。你的意思是,通过网页设定告警定值,这个也没有问题,倒不需要通过pachube了。如感兴趣论坛里我有一篇webduino的试验,可以一起研究交流下。
回复 支持 反对

使用道具 举报

发表于 2012-4-19 15:27:14 | 显示全部楼层
本帖最后由 debian123 于 2012-4-19 15:29 编辑

试了下很好用,要1.0的IDE,谢谢楼主
360截图20120419152520709.jpg
回复 支持 反对

使用道具 举报

发表于 2012-9-14 17:38:03 | 显示全部楼层
我用uno+w5100按你的方法显示为401,这个是什么情况,该怎么弄啊
回复 支持 反对

使用道具 举报

发表于 2012-9-14 17:51:35 | 显示全部楼层
解决了,楼主好人啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-9-16 22:13:11 | 显示全部楼层
,建议还可以试试yeelink的推送,也很有趣。具体搜搜论坛吧。
回复 支持 反对

使用道具 举报

发表于 2012-9-16 22:36:08 | 显示全部楼层
沧海笑1122 发表于 2012-9-16 22:13
,建议还可以试试yeelink的推送,也很有趣。具体搜搜论坛吧。

我先简单的来,yeelink我也在研究
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号-2 )

GMT+8, 2021-9-24 04:46 , Processed in 0.105423 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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