虽然Arduino官方已经停止了对W5100以太网扩展板的更新和支持,但由于其国产化之后有很高的性价比,因此在物联网项目应用中还有着很大的市场空间。
标准的W5100扩展板集成了RJ45标准接口的百兆以太网口,通过SPI接口和Arduino通讯,可以实现各种标准的以太网协议(基于TCP或者UDP)。同时,该卡还集成了TF卡(micro-SD)接口,可以TF卡来进行数据存储,通过Arduino实现数据的持久化保存。
Arduino Ethernet扩展板使用注意事项
按照官方文档介绍,在扩展板上标有“INT”标志的焊点可以连接起来,从而可以接受从W5100发出的中断事件信号,但是Ethernet
库不支持此功能,该焊点将W5100的INT中断引脚连接到了Arduino的引脚2上。
Arduino W5100以太网扩展板通过ICSP接口的SPI总线和Arduino进行通讯,这需要占用Arduino的部分引脚。
- Arduino UNO 的引脚10,11,12和13被占用
- Arduino Mega的50,51,52和53引脚被占用
- 由于扩展板的SD卡模块和以太网模块公用总线,在UNO和Mega上,引脚10(以太网)和4(SD卡)被用来进行模块选择。因此引脚4和10不能再被定义为常规IO引脚使用。
- Mega的引脚53作为硬件SS引脚,必须被定义为输出端口,否则扩展板可能不能正常工作。
注意因为SD模块和W5100公用SPI总线,因此如果要同时使用两者,在程序设计时必须非常小心地控制应答和时序,否则容易出现冲突和错误。如果仅使用其中一个,可以通过信号引脚显式指定。
- 如果仅仅使用SD卡,那么需要把引脚4配置为输出并写入高电平
- 如果仅使用W5100则需要把引脚10配置为输出并写入高电平
Arduino Ethernet扩展板按钮和信号
扩展板的Reset按钮同时复位扩展板和Arduino,板载LED信号灯含义如下:
- PWR: 红色指示灯,电源上电即亮
- LINK: 亮起表示设备已连接,有信号传输时闪烁
- FULLD: 工作在百兆全双工模式下时亮起
- RX: 收到数据时闪烁
- TX:发出数据时闪烁
Arduino Ethernet扩展板上电无法启动的问题解决
由于Ethernet板启动时间比Arduino稍晚一点点,因此在系统上电的时候可能存在由于Arduino无法找到W5100而导致W5100无法启动的情况,需要通过Reset按钮手动启动或者通过串口连接Arduino来重新激活W5100。按照官方文档介绍,扩展板内置了一个Reset的控制器来保证W5100在上电时可以正常重启,但这一控制器仅支持Uno主板而不支持Mega主板。在实际使用中,采用Mega主板和W5100共同工作时,确实存在上述问题。
这一问题可通过外接一个RC震荡回路解决。参考Some Fun with a Cloned Arduino and W5100 Ethernet Shield和Arduino and w5100 Ethernet shield issues两篇文章给出的解决方案,在W5100的Reset键和地之间连接一个220欧姆的电阻和一个220微法的电解电容,在系统上电时W5100会重置一次,从而保证可以可靠上电和工作,该方法实测有效。
在以上文章和相关资料中还列出了一些其他解决方案,但实测时均未能解决该问题。这些方法包括在Reset引脚和地之间连接10纳法电容,在Arduino Setup
函数开始增加一个delay(50)
的延时,以及将Arduino
和W5100
的reset引脚手工折弯分开,通过一个引脚来复位W5100等等。