步骤1:您需要做的事情:
Arduino开发板(我正在使用Uno)。
Arduino以太网屏蔽板(检查与arduino板的兼容性)
外部电源(9-12v)。
路由器(可以来自任何制造商)。
RJ45电缆。
步骤2:入门。..(理论上的一点)
每个连接到Internet的设备必须具有一个地址,可以通过网络使用该地址进行标识,以便可以将数据包传输/接收到特定设备。现在,每个设备都有两种类型的地址。
1)MAC地址-》这对于每个设备都是唯一的。
2)IP地址-》可能是静态(不更改)或动态(频繁更改)。
我们不会在这里处理MAC,因此,如果您有兴趣搜索网络。
无论何时连接您的arduino到您的本地网络(将在后续步骤中处理),您的家庭路由器会使用DHCP自动为其分配IP地址。现在您的路由器在这里起着重要的作用,因为它充当了arduino和Internet之间的接口。
每个路由器都有两个IP地址
1)外部IP-》这是与外部网络(例如:Internet)交互时使用
2)本地IP-》与私有/本地网络(例如:连接到路由器的设备)交互时使用
因此您的arduino获得了本地IP。因此,无论何时您想通过互联网与您的arduino通信/发送消息。您访问家用路由器并向其发送消息,然后依次将消息重定向到您的arduino。
如果您想了解路由器的详细工作原理及其机制,请搜索以下术语和尝试了解它们。
DHCP(动态主机配置协议)
NAT(网络地址转换器)
动态/静态IP
步骤3:了解代码:)
我附上了示例代码(.ino文件),在解释过程中将用作参考。我不会解释代码的每一行,如果您有任何疑问,请将其张贴在注释部分。好的,让我们开始吧。
我们首先包含程序执行所需的 h eader文件。
头文件
Ethernet.h-》该库包含用于处理客户端连接,连接服务器以及获取/获取信息的功能。发送请求以及许多其他内容。
SPI.h-》这是一个重要的头文件,它定义了arduino如何控制以太网屏蔽。以及SD卡插槽。 SPI是一种通信协议。有关更多详细信息,请参阅arduino网站提供的文档。 SPI文档。
以太网库功能
mac-通常,如果您具有最新版EthernetShield的正版或原始版本,则它应该具有MAC地址印在其背面。但是,如果您具有克隆版本,则必须为其分配用户定义的MAC,这适用于原始版本的EthernetShield。
您也可以对IP地址进行相同的操作,但是我不建议这样做,因为当您的arduino具有预定义的IP并尝试连接到路由器时,如果路由器已经分配了其他具有相同IP的设备让DHCP处理IP地址分配。
EthernetServer-它创建一个服务器来侦听指定端口上的传入连接。在给定的示例中,我分配了端口号12345。您可以使用可能需要的任何端口号,但请确保该端口上当前没有其他服务正在运行。
EthernetServer.begin()- -它尝试使用用户定义的MAC地址与路由器建立连接。尽管根据情况需要其他参数。请检查链接Ethernet.begin
Serial.begin()---这将以指定的波特率打开arduino上的串行端口。
客户端处理机制
所有的初始化只需要执行一次,因此它会在出错时调试代码。进入setup()块。而服务器需要检查是否每隔一段时间都在等待连接的客户端,因此该部分代码进入了loop()块。
查看下面给出的这些链接以了解代码的工作原理
Client.available()
Server.available()
我们的服务器每2秒检查一次客户端连接,以及客户端是否尝试连接然后它将请求打印到串行终端,并返回HTML页面。
步骤4:将Arduino连接到家庭路由器
现在,您使用IDE将程序刷新/上传到arduino,然后从PC/笔记本电脑上拔下arduino。现在,将Ethernet Shield连接到arduino板的顶部。然后将RJ45电缆的一端插入屏蔽层,另一端插入arduino。如果要查看在arduino的串行端口上发送的消息,请确保您的笔记本电脑/电脑位于路由器附近,以便可以将整个设置连接到笔记本电脑/电脑。如有任何疑问,请查看图片。
第5步:配置路由器
现在,我们将转到在此处配置路由器,以便我们可以将arduino连接到路由器以访问本地网络及其他区域。
第一步是登录到路由器,为此,您需要找到以下路由器的本地IP:您的路由器。
1)在Windows中打开命令提示符(cmd)。键入以下命令。 “ ipconfig”
2)现在尝试查找“默认网关”属性,该属性旁边的值是路由器的本地IP。通常,路由器将本地网络内的第一个地址分配给与其相连的设备。 (例如:192.168.4.1)。
3)完成此步骤后,打开浏览器并在URL栏中键入路由器的IP地址。
4)您将看到路由器的登录页面。
5)输入密码。如果您不知道密码,请尝试在Internet上轻松找到的默认密码。(我正在使用Zyxel路由器,默认密码为:admin)
6)即使默认密码也是如此不起作用,请尝试重置路由器,但是请注意,重置路由器可能会使路由器擦除ISP(Internet服务提供商)所做的配置,并破坏整个网络。(我把网络弄乱了)。
步骤6:保留您的IP地址
转到路由器页面中的“局域网设置”,然后尝试保留您的IP地址。您当前连接的arduino,您可以使用我们先前定义的MAC地址进行识别。对于不同的路由器,保留IP地址将有所不同。在互联网上搜索参考。保留IP地址将有助于端口转发,因为您将要求服务器具有恒定的IP地址。
步骤7:端口转发路由器
在此步骤中,我们将路由器上存在的端口转发到arduino正在侦听的端口。现在尝试创建用户定义的服务名称。为起始端口分配范围在0到65000之间的任何端口号,但请确保不要转发已分配给80、8080、443之类的服务的端口,请避免使用此类端口号。对于End端口,您需要提供与启动服务器相同的端口(在我的示例中为12345)。为什么需要端口转发?
当从客户端(Web浏览器)向服务器发送请求时,请求数据包包括目标IP,服务请求的端口号。通常,此端口为80,该端口保留给HTTP请求。现在,我们正在基于arduino创建服务器,该服务器不断侦听本地网络中路由器内部的端口。现在,当我们想从本地网络(互联网)外部与arduino通信时,我们将http请求发送到已转发端口上的路由器,以便路由器可以将http消息重定向到正在监听的arduino到我们本地网络中的那个端口。
步骤8:禁用防火墙
禁用防火墙,以便可以将请求发送到保留端口以外的其他端口。完成工作后,请不要忘记再次启用防火墙。
第9步:快到了。..
现在尝试使用显示在下面的地址从本地网络访问arduino URL栏。`
http://“您的保留IP”:“端口”
如果一切正常,那么您几乎可以通过Internet访问arduino。如果没有,请再次仔细阅读所有步骤,并检查所有连接是否正常。
步骤10:从本地网络外部访问Arduino
现在,如果要测试是否可以在本地网络之外运行。您可以通过两种方式完成操作
1)尝试从本地网络(朋友网络)外部访问arduino。
2)尝试从PC/笔记本电脑通过Internet访问arduino
在这两个步骤中,通常要做的是找出路由器的全局/外部IP。您可以通过在Google中键入“我的IP”来找到您的全局IP。
现在,如果您要从本地网络进行外部访问,请键入
http://“全局IP” :“港口”。它应该工作。如果出现错误,请检查端口是否打开。我已经在网站上附上了屏幕截图,该网站可以帮助您找到您的roter上的哪些端口是打开的。如果您的端口关闭,则说明您的防火墙已启用,或者您的arduino没有正确连接到路由器。
但是,如果您尝试使用步骤2进行访问,请检查下一步
第11步:
所以,这是针对第2步的人,
你们需要启用ip nat回送。为此,您需要使用telnet连接到路由器。
打开cmd并键入
telnet {默认网关}
例如:telnet 192.168.3.1
,然后输入屏幕快照中显示的命令。
现在尝试按上一步所示访问它。如果您在连接时遇到问题,请查看我在上一步中提供的提示。
如果您成功了,请尝试在我们的arduino上附加一些东西,例如传感器,电机,并尝试控制或收集它们的数据。
责任编辑:wv
-
互联网
+关注
关注
54文章
11148浏览量
103190 -
Arduino
+关注
关注
188文章
6468浏览量
186922
发布评论请先 登录
相关推荐
评论