极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: 弘毅

arduino学习笔记26 - ENC28J60以太网模块实验

  [复制链接]
发表于 2012-6-10 19:45:06 | 显示全部楼层
要从外网访问内网,请使用有虚拟服务器功能的路由器,比如TPLINK的,如果还想用域名访问,那就申请一个花生壳域名服务,免费的~
回复 支持 反对

使用道具 举报

发表于 2012-6-10 20:10:00 | 显示全部楼层
在网通的很多地区,花生壳不太好用,我家的光纤宽带算是一个,花生壳对这类用户,是要收费服务的。

不过,ADSL用户貌似会好些,因为得到的IP都是真正的外网IP,但是注意大部分端口事实上都已经被运营商封掉了,不能当服务器用。
回复 支持 反对

使用道具 举报

发表于 2012-6-11 00:29:52 | 显示全部楼层
本帖最后由 darkorigin 于 2012-6-11 00:34 编辑
erjiang 发表于 2012-6-10 19:11
很好,webserver有个小问题,就是不能完成远程的控制。

因为NAT映射的原因,我们内网的webserver是很难 ...


路由的端口映射做1个就好了(基本上99%的路由都带这个功能,直接把内网某一IP地址的某些端口映射到自己的某些端口上)
解决动态地址我用的是DDNS(花生壳)
不需要中转,更稳定。

我以前自己搞的服务器就是用这个方法,除了并发连接数量限制(毕竟家用路由处理能力还是有限的)和防火墙不够强大外,什么都还可以了。一般简单的DOS攻击都可以抵抗。

另外友情提示,用网页中转的方法很不错,很灵活,不过数据一定要做一定强度的加密,否则数据被别有居心的人获取了可能会有安全风险。
回复 支持 反对

使用道具 举报

发表于 2012-6-11 00:35:42 | 显示全部楼层
飞翔的红猪 发表于 2012-6-10 19:45
要从外网访问内网,请使用有虚拟服务器功能的路由器,比如TPLINK的,如果还想用域名访问,那就申请一个花生 ...

需要 端口映射和DDNS一起用的 基本上目前市面上的路由都带。
回复 支持 反对

使用道具 举报

发表于 2012-6-11 00:36:43 | 显示全部楼层
erjiang 发表于 2012-6-10 20:10
在网通的很多地区,花生壳不太好用,我家的光纤宽带算是一个,花生壳对这类用户,是要收费服务的。

不过 ...

80是可用的,8080也是常见的WEB端口,如果是家里的智能电器网络的接口,端口复杂点也没关系的,更安全呢。
回复 支持 反对

使用道具 举报

发表于 2012-6-11 00:38:23 | 显示全部楼层
erjiang 发表于 2012-6-10 20:10
在网通的很多地区,花生壳不太好用,我家的光纤宽带算是一个,花生壳对这类用户,是要收费服务的。

不过 ...

期待你的代码,呵呵 这是一种很好的思路(类似于早些年高端远控软件的反向连接功能)
回复 支持 反对

使用道具 举报

发表于 2012-6-11 09:18:36 | 显示全部楼层
erjiang 发表于 2012-6-10 19:11
很好,webserver有个小问题,就是不能完成远程的控制。

因为NAT映射的原因,我们内网的webserver是很难 ...

对这个很感兴趣,如果可以实现的话,我们就可以很方便的连接到网页去了。
回复 支持 反对

使用道具 举报

发表于 2012-6-11 10:51:02 | 显示全部楼层
还是w5100吧,既可以做webserver,又可以push到Cosm上去
回复 支持 反对

使用道具 举报

发表于 2012-6-11 11:24:33 | 显示全部楼层
飞翔的红猪 发表于 2012-6-11 10:51
还是w5100吧,既可以做webserver,又可以push到Cosm上去

其实COSM上我还么有什么概念,到时候要试试,不然不是很清楚,这种感觉非常不爽!呵呵!
回复 支持 反对

使用道具 举报

发表于 2012-6-11 19:13:13 | 显示全部楼层
Randy 发表于 2012-6-11 11:24
其实COSM上我还么有什么概念,到时候要试试,不然不是很清楚,这种感觉非常不爽!呵呵!

这是我的,看看哈  https://cosm.com/feeds/59928
回复 支持 反对

使用道具 举报

发表于 2012-6-12 09:00:55 | 显示全部楼层
飞翔的红猪 发表于 2012-6-11 19:13
这是我的,看看哈  https://cosm.com/feeds/59928

好的,我去看看,了解了解一下!
回复 支持 反对

使用道具 举报

发表于 2012-6-12 09:02:07 | 显示全部楼层
Randy 发表于 2012-6-12 09:00
好的,我去看看,了解了解一下!

能说一下您是怎么做的吗?我好想了解的,我什么模块都有!呵呵!
回复 支持 反对

使用道具 举报

发表于 2012-6-21 12:35:39 | 显示全部楼层
zhd1021 发表于 2012-3-10 17:47
为什么我用ENC28J60模块的时候无法用浏览器访问,但是能在命令窗口下PING出来

估计PING是模块自己处理的。无法用浏览器访问,线未接好,或则arduino 编程不对
回复 支持 反对

使用道具 举报

发表于 2012-8-2 18:11:16 | 显示全部楼层
yyy_zc 发表于 2012-6-21 12:35
估计PING是模块自己处理的。无法用浏览器访问,线未接好,或则arduino 编程不对

我也试了,用别的库可以正常工作,用这个库能Ping通,但是访问不了
回复 支持 反对

使用道具 举报

发表于 2012-8-30 22:11:30 | 显示全部楼层
我这个已经做成功,但想传到yeelink上面去,能帮我看看代码吗
  1. /*
  2. * Web Server
  3. *
  4. * A simple web server that shows the value of the analog input pins.
  5. */

  6. #include <Ethernet.h>
  7. #include <Wire.h>
  8. byte mac[] = { 0x00, 0x1D, 0x72, 0x82, 0x35, 0x9D};
  9. byte ip[] = {202,136,60,231};
  10. //====================================================
  11. #define APIKEY         "81c4aadea5c97b824cb5dc0d3f5a0b54" // replace your yeelink api key here
  12. #define DEVICEID       479 // replace your device ID
  13. #define SENSORID        616 // replace your sensor ID

  14. boolean ResponseBegin = false;
  15. unsigned long lastConnectionTime = 0;          // last time you connected to the server, in milliseconds
  16. boolean lastConnected = false;                 // state of the connection last time through the main loop
  17. const unsigned long postingInterval = 3*1000; // delay between 2 datapoints, 30s
  18. String returnValue = "";

  19. //IPAddress server(202,136,60,231);
  20. //char server[] = "api.yeelink.net";
  21. //==================================================
  22. Server server(80);
  23. Client client = 1;
  24. void setup()
  25. {
  26.   pinMode(7, OUTPUT);
  27.   pinMode(8, OUTPUT);
  28.   Wire.begin();
  29.   Ethernet.begin(mac, ip);
  30.   server.begin();
  31. }

  32. void loop()
  33. {
  34.       client = server.available();
  35.      
  36.       if (client.available()) {
  37.         char c = client.read();
  38.          if (c == '{')
  39.          ResponseBegin = true;
  40.          else if (c == '}')
  41.          ResponseBegin = false;
  42.        if (ResponseBegin)
  43.          returnValue += c;  
  44.         }
  45.      if (returnValue.length() !=0 && (ResponseBegin == false))
  46.      {
  47.     if (returnValue.charAt(returnValue.length() - 1) == '1') {
  48.       digitalWrite(7, HIGH);
  49.       digitalWrite(8, LOW);  
  50.        }
  51.     else if(returnValue.charAt(returnValue.length() - 1) == '0') {
  52.       digitalWrite(7, LOW);
  53.       digitalWrite(8, HIGH);
  54.        }
  55.     returnValue = "";
  56.       }
  57.       if (!client.connected() && lastConnected) {
  58.         client.stop();
  59.       }
  60.        if(!client.connected() && (millis() - lastConnectionTime > postingInterval)) {
  61.     //get data from server  
  62.    //   getData();
  63.      }
  64.        lastConnected = client.connected();
  65. }
  66. // this method makes a HTTP connection to the server and get data back
  67. void getData(void) {
  68.   // if there's a successful connection:
  69.   if (client.connected()) {
  70.     // send the HTTP GET request:

  71.     client.print("GET /v1.0/device/");
  72.     client.print(DEVICEID);
  73.     client.print("/sensor/");
  74.     client.print(SENSORID);
  75.     client.print("/datapoints");
  76.     client.println(" HTTP/1.1");
  77.     client.println("Host: api.yeelink.net");
  78.     client.print("Accept: *");
  79.     client.print("/");
  80.     client.println("*");
  81.     client.print("U-ApiKey: ");
  82.     client.println(APIKEY);
  83.     client.println("Content-Length: 0");
  84.     client.println("Connection: close");
  85.     client.println();

  86.   }
  87.   else {
  88.     client.stop();
  89.   }
  90.   // note the time that the connection was made or attempted:
  91.   lastConnectionTime = millis();
  92. }
复制代码
急!
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-4-19 02:56 , Processed in 0.044293 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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