极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: zcbzjx

基于18B20+enc28j60+arduino+yeelink的远程温度监控

[复制链接]
 楼主| 发表于 2012-8-31 20:07:59 | 显示全部楼层
本帖最后由 zcbzjx 于 2012-8-31 22:37 编辑

这个例子比较适合开始用enc28J60的。你最好介绍下你的网络环境,是固定ip,还是自动获取ip地址。从你的代码来看,你对网络好似一点不懂。我贴的代码只是针对我批量的嘶吼用的,所以我只要改每个设备的mac和ip地址,而你要用的话,则mac ip gateway都要根据自己的实际情况更改了。

建议你看下这2个例子:
第一个例子是固定ip地址的。
  1. // This demo does web requests via DNS lookup, using a fixed gateway.
  2. // 2010-11-27 <[email protected]> http://opensource.org/licenses/mit-license.php

  3. #include <EtherCard.h>

  4. #define REQUEST_RATE 5000 // milliseconds

  5. // ethernet interface mac address
  6. static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
  7. // ethernet interface ip address
  8. static byte myip[] = { 192,168,1,203 };
  9. // gateway ip address
  10. static byte gwip[] = { 192,168,1,1 };
  11. //dns ip address
  12. static byte mydns[] = { 192,168,1,1};
  13. // remote website name
  14. char website[] PROGMEM = "google.com";

  15. byte Ethernet::buffer[300];   // a very small tcp/ip buffer is enough here
  16. static long timer;

  17. // called when the client request is complete
  18. static void my_result_cb (byte status, word off, word len) {
  19.   Serial.print("<<< reply ");
  20.   Serial.print(millis() - timer);
  21.   Serial.println(" ms");
  22.   Serial.println((const char*) Ethernet::buffer + off);
  23. }

  24. void setup () {
  25.   Serial.begin(57600);
  26.   Serial.println("\n[getViaDNS]");
  27.   
  28.   if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
  29.     Serial.println( "Failed to access Ethernet controller");

  30.   ether.staticSetup(myip, gwip, mydns);

  31.   if (!ether.dnsLookup(website))
  32.     Serial.println("DNS failed");
  33.   ether.printIp("Server: ", ether.hisip);
  34.   
  35.   timer = - REQUEST_RATE; // start timing out right away
  36. }

  37. void loop () {
  38.   ether.packetLoop(ether.packetReceive());
  39.   
  40.   if (millis() > timer + REQUEST_RATE) {
  41.     timer = millis();
  42.     Serial.println("\n>>> REQ");
  43.     ether.browseUrl(PSTR("/foo/"), "bar", website, my_result_cb);
  44.   }
  45. }
复制代码
第二个例子是自动获取ip地址的
  1. // This demo does web requests via DHCP and DNS lookup.
  2. // 2011-07-05 <[email protected]> http://opensource.org/licenses/mit-license.php

  3. #include <EtherCard.h>

  4. #define REQUEST_RATE 5000 // milliseconds

  5. // ethernet interface mac address
  6. static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
  7. // remote website name
  8. char website[] PROGMEM = "google.com";

  9. byte Ethernet::buffer[700];
  10. static long timer;

  11. // called when the client request is complete
  12. static void my_result_cb (byte status, word off, word len) {
  13.   Serial.print("<<< reply ");
  14.   Serial.print(millis() - timer);
  15.   Serial.println(" ms");
  16.   Serial.println((const char*) Ethernet::buffer + off);
  17. }

  18. void setup () {
  19.   Serial.begin(57600);
  20.   Serial.println("\n[getDHCPandDNS]");
  21.   
  22.   if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
  23.     Serial.println( "Failed to access Ethernet controller");

  24.   if (!ether.dhcpSetup())
  25.     Serial.println("DHCP failed");
  26.   
  27.   ether.printIp("My IP: ", ether.myip);
  28.   // ether.printIp("Netmask: ", ether.mymask);
  29.   ether.printIp("GW IP: ", ether.gwip);
  30.   ether.printIp("DNS IP: ", ether.dnsip);

  31.   if (!ether.dnsLookup(website))
  32.     Serial.println("DNS failed");
  33.   ether.printIp("Server: ", ether.hisip);
  34.   
  35.   timer = - REQUEST_RATE; // start timing out right away
  36. }

  37. void loop () {
  38.   // DHCP expiration is a bit brutal, because all other ethernet activity and
  39.   // incoming packets will be ignored until a new lease has been acquired
  40.   if (!ether.dhcpValid() && !ether.dhcpSetup())
  41.     Serial.println("DHCP failed");
  42.    
  43.   ether.packetLoop(ether.packetReceive());
  44.   
  45.   if (millis() > timer + REQUEST_RATE) {
  46.     timer = millis();
  47.     Serial.println("\n>>> REQ");
  48.     ether.browseUrl(PSTR("/foo/"), "bar", website, my_result_cb);
  49.   }
  50. }
复制代码
主要看setup和前面的变量定义部分。
回复 支持 反对

使用道具 举报

发表于 2012-8-31 21:05:32 | 显示全部楼层

网络环境

本帖最后由 JUST_DO_IT 于 2012-8-31 21:16 编辑

rt..............

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-31 23:35:23 | 显示全部楼层
本帖最后由 zcbzjx 于 2012-8-31 23:40 编辑

更新一楼代码为自动获取ip地址和用dns访问服务器,郝老板能不能做个和github功能一样的东西啊,让我们可以开源并更新代码啊,那个维基是不是有这个功能呢,能不能开放点权限嘞,我把沙盒更改了,郝老板记得去看看哦,有好东西看哦!
回复 支持 反对

使用道具 举报

发表于 2012-8-31 23:44:26 | 显示全部楼层
zcbzjx 发表于 2012-8-31 23:35
更新一楼代码为自动获取ip地址和用dns访问服务器,郝老板能不能做个和github功能一样的东西啊,让我们可以开 ...


WIKI就可以实现部分要求。。。我看看WIKI怎么逐步开放编辑权限哈
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-9-4 13:33:51 | 显示全部楼层
1楼更新几张实物图片
回复 支持 反对

使用道具 举报

发表于 2012-9-15 21:19:57 | 显示全部楼层
好好学习一下
回复 支持 反对

使用道具 举报

发表于 2012-9-18 21:46:24 | 显示全部楼层
那怎么获取上面的开关的数据来控制LED灯呢
回复 支持 反对

使用道具 举报

发表于 2012-9-23 15:57:21 | 显示全部楼层
楼主的MAC地址是随意输入的吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-9-24 01:53:40 | 显示全部楼层
zhangdeyue1 发表于 2012-9-23 15:57
楼主的MAC地址是随意输入的吗

对的,随便输入。
回复 支持 反对

使用道具 举报

发表于 2012-9-24 17:48:56 | 显示全部楼层
请问dataLength = sprintf(sensorData,"{\"value\":%d.%d}",whole,fract);  
这一句是什么意思啊?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-9-25 07:37:49 | 显示全部楼层
就是一个sprintf函数,你可以百度下。它的返回值是sensorData的长度。
回复 支持 反对

使用道具 举报

发表于 2012-11-13 17:13:58 | 显示全部楼层
用LM35的话,是不是直接改你下面传感器数据采集函数就好?
我已经去掉了你上面的传感器IIC口定义和库文件
回复 支持 反对

使用道具 举报

发表于 2012-11-13 17:33:41 | 显示全部楼层
提问下语法方面
代码1的 40行 Stash stash;
按我理解应该是定义一个 Stash 型的变量(或实例)stash 但是好像没看到哪里定义了这个变量(或实例)?求教。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-13 21:29:19 | 显示全部楼层
darkorigin 发表于 2012-11-13 17:13
用LM35的话,是不是直接改你下面传感器数据采集函数就好?
我已经去掉了你上面的传感器IIC口定义和库文件

恩,去掉就行,不过lm35属于模拟传感器,受电源影响比较大,鉴于和18b20价格差不多,建议还是用18b20,我开始也选择了lm35,后来果断放弃了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-11-13 21:31:07 | 显示全部楼层
darkorigin 发表于 2012-11-13 17:33
提问下语法方面
代码1的 40行 Stash stash;
按我理解应该是定义一个 Stash 型的变量(或实例)stash 但是 ...

stash是在库函数中声明的,主要用于构建数据包。建议不要用stash,用httppost比较好。我有个例子,你看看。不过最近没研究这个库了,好似又更新了不少。
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-5-20 01:20 , Processed in 0.045066 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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