极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 19392|回复: 8

跨网控制Arduino (用ENC28J60)

[复制链接]
发表于 2013-10-28 19:23:09 | 显示全部楼层 |阅读模式
本帖最后由 leo102 于 2013-10-28 19:24 编辑

硬件 Arduino UNO Pro 3, 以太网控制器 ENC28J60用网线连接到路由器, LED灯,连接在Arduino的第七个引脚。
代码来自 zcbzjx 翻译的教程:http://www.geek-workshop.com/thread-3438-1-1.html
  1. #include <EtherCard.h>
  2. #define RELAY_PIN        7

  3. static byte mymac[]  = {
  4.   0x74,0x69,0x69,0x2D,0x30,0x31};
  5. static byte myip[]   = {
  6.   192,168,0,105};
  7. byte Ethernet::buffer[700];
复制代码
定义MAC地址和ip地址。
  1. void setup () {
  2.   Serial.begin(57600);
  3.   Serial.println("WebRelay Demo");

  4.   if(!ether.begin(sizeof Ethernet::buffer, mymac, 10))
  5.     Serial.println( "Failed to access Ethernet controller");
  6.   else
  7.     Serial.println("Ethernet controller initialized");


  8.   ether.hisport = 8081; // 侦听端口:8081
  9.   if(!ether.staticSetup(myip))
  10.     Serial.println("Failed to set IP address");

  11.   pinMode(RELAY_PIN, OUTPUT);
  12.   digitalWrite(RELAY_PIN, LOW);  
  13.   relayStatus = false;
  14.   relayLabel = off;
  15.   linkLabel = on;
  16. }
复制代码
初始化。设置Arduino的侦听端口为8081.

路由器设置如附件1所示。

用与Arduino同一局域网的电脑可以控制:浏览器里输入地址:http://192.168.0.105:8081,可以访问并控制Arduino。如附件2所示。

记录当前Arduino所连路由器的外网ip地址:122.XX.157.7,如附件3所示。

使用不在同一个网段的电脑访问:http://122.XX.157.7:8081,无法连接到Arduino。如附件4所示。


看了不少教程,大多都是用这个方法,应该是可行的。可是不知道为什么,我就是无法实现。求高手不吝指教。

Yeelink不在讨论范围之内。


本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2013-10-29 08:03:21 | 显示全部楼层
外网如果没有服务器 是需要公网IP的!
回复 支持 反对

使用道具 举报

发表于 2013-10-29 09:12:25 | 显示全部楼层
他用的是公网的IP,我也遇上这个问题,还没想到解决的办法,我想应该是没有做IP指向与解析造成无法实现外网控制吧。
回复 支持 反对

使用道具 举报

发表于 2013-10-29 09:25:06 | 显示全部楼层
两点:

1. Arduino的网关没有设置,不然出外网就没有路由了。
2. 在路由器上设置端口映射,或者虚拟主机。
回复 支持 反对

使用道具 举报

发表于 2013-10-29 15:00:45 | 显示全部楼层
检测一下是不是公网IP,访问ip168等来客IP检测网站,看看是不是和自己的一样。
回复 支持 反对

使用道具 举报

发表于 2013-10-30 10:19:47 | 显示全部楼层
路由的主界面有个动态vpn服务,在里面登陆你的花生壳账户然后在设置虚拟服务就可以外网访问了,不过arduino我没有试过,在自己电脑上发布的网页到是可以访问的。
回复 支持 反对

使用道具 举报

发表于 2013-11-7 17:48:12 | 显示全部楼层
先映射下到某电脑确定外网到内网是正常再接你的设备更好, 电脑装个绿色版 的nginx就可以了
回复 支持 反对

使用道具 举报

发表于 2013-11-8 02:51:35 来自手机 | 显示全部楼层
路由器里要设置端口转发 把8081端口转发到arduino所在的内网ip
回复 支持 反对

使用道具 举报

发表于 2013-11-8 08:59:55 来自手机 | 显示全部楼层
路由器的端口映射要设置好,只想arduino设备的地址跟端口,否则是不能访问的。
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-14 19:52 , Processed in 0.060767 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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