Microduino W5500网络(二)/zh
目的本教程将教大家如何使用DHCP服务器自动配置网络参数,使你的Microduino自动获取IP地址。 设备
DHCP通常情况下,在本地网络中,你可以找到一个DHCP(Dynamic Host Configuration Protoco,动态主机配置协议,是一个局域网的网络协议,使用UDP协议工作)服务器,作用是给一个内部网络设备自动分配网络参数(IP地址、掩码、网关及DNS)。 简单意义上讲,它的工作原理是这样的: 需要一个IP地址的设备(客户端),发送一个DISCOVERY广播数据包(这个数据包将到达设备所在的整个网络),“发现”可用的DHCP服务器; 如果一个或多个DHCP服务器可用,它们应答一个OFFER包,“建议”发出请求的客户端设置可用的IP地址; 客户选择所提供的IP地址,并向对应服务器发送一个REQUEST数据包,要求允许使用该地址; 建议设置这个ip地址的服务器,发回一个ACK包来确认IP地址关联。 幸运的是我上面所说的获取IP地址的过程已经在dhcp.cpp 库文件为我们实现:在接下来的页面中,我要编写一个简单的例子来使用DHCP服务。 原理图
层层堆叠,再插上网线。 如下图所示: 程序调试步骤一:首先需要确保你的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客户端中可以找到),你将看到连接了一个新的设备 视频 |