Microduino W5500网络(二)/zh

来自Microduino Wikipedia
Radiumray9@gmail.com讨论 | 贡献2015年1月26日 (一) 13:14的版本 原理图
跳转至: 导航搜索

目的

本教程将教大家如何使用DHCP服务器自动配置网络参数,使你的Microduino自动获取IP地址。

设备

  • 其他硬件设备
    • USB数据连接线 一根

DHCP

通常情况下,在本地网络中,你可以找到一个DHCP(Dynamic Host Configuration Protoco,动态主机配置协议,是一个局域网的网络协议,使用UDP协议工作)服务器,作用是给一个内部网络设备自动分配网络参数(IP地址、掩码、网关及DNS)。

简单意义上讲,它的工作原理是这样的:

需要一个IP地址的设备(客户端),发送一个DISCOVERY广播数据包(这个数据包将到达设备所在的整个网络),“发现”可用的DHCP服务器;

如果一个或多个DHCP服务器可用,它们应答一个OFFER包,“建议”发出请求的客户端设置可用的IP地址;

客户选择所提供的IP地址,并向对应服务器发送一个REQUEST数据包,要求允许使用该地址;

建议设置这个ip地址的服务器,发回一个ACK包来确认IP地址关联。

DHCPShow.jpg

幸运的是我上面所说的获取IP地址的过程已经在dhcp.cpp 库文件为我们实现:在接下来的页面中,我要编写一个简单的例子来使用DHCP服务。

原理图

  • Microduino-W5500
  • Microduino-RJ45
  • Microduino-Core
  • Microduino-FT232R

层层堆叠,再插上网线。

如下图所示:

MicroduinoW5500Show.png

程序

调试

步骤一:首先需要确保你的IDE中有_02_Microduino_Ethernet_WIZ库,如果没有下载放到你的IDE的libraries文件夹中,重启IDE。

步骤二:如果你的IDE的libraries文件夹中还有之前的Ethernet库的话,需要删除掉,因为之前的Ethernet是根据W5100协议编写的。

然后需要改动一下_02_Microduino_Ethernet_WIZ文件以使库函数与Microduino-W5500模块的引脚对应:

先找到_02_Microduino_Ethernet_WIZ库中的utility文件夹里的w5100.h

把代码中的 #define wiz_cs_pin 8 //CS_PIN 改为 #define wiz_cs_pin 10 //CS_PIN 就可以了。

步骤三:解释一下代码:

 // start the Ethernet connection:
 Serial.println("Trying to get an IP address using DHCP");
 if (Ethernet.begin(mac) == 0) {
   Serial.println("Failed to configure Ethernet using DHCP");
   // initialize the ethernet device not using DHCP:
 #if defined(WIZ550io_WITH_MACADDRESS)
   Ethernet.begin(ip, gateway, subnet);
 #else
   Ethernet.begin(mac, ip, gateway, subnet);
 #endif  
 }

以上代码先用DHCP分配IP地址,如果没有分配成功测按着事先定义好的IP地址进行配置


步骤四:下载代码并编译通过。

步骤四:如果没其他问题的话,你应该可以ping通你的Microduino了。

结果

如果你可以查看你的DHCP服务器(通常在我们的路由器的DHCP客户端中可以找到),你将看到连接了一个新的设备

视频