Arduino Ethernet Shield 简介
Ethernet Shield(W5100) 主要特色是把 TCP/IP Protocols (TCP, UDP, ICMP, IPv4 ARP, IGMP, PPPoE, Ethernet) 做在硬体电路上,减轻了单晶片(MCU )的负担 (也就是 Arduino 开发板的负担)。
新的 Ethernet Shield 增加了 micro-SD card 插槽,可以用来储存档案,你可以用 Arduino 内建的 SD library 来存取板子上的 SD card。此外,Ethernet Shield 相容于 UNO 和 Mega 2560 控制板。
Arduino 程式只要使用 Ethernet Library 便可以轻易完成连至网际网路的动作,不过 W5100 也不是没有缺点,因为它有一个限制,就是最多只允许同时 4 个 socket 连线。
使用上需注意的地方
使用上,W5100 网卡跟 UNO 板子大小一样, 基本上针脚对準 UNO 排针插座直接叠上去, 插上网路线, 再送电即可;惟脚针上仍有一些需要注意的地方:
Arduino 开发板跟 W5100 以及 SD card 之间的通讯都是透过 SPI bus (通过 ICSP header)。以 UNO开发板 而言,SPI bus 脚位位于 pins 11, 12 和 13。UNO pin 10 是用来选择 W5100,而 pin 4 则是用来选择 SD card。这边提到的这几支脚位都不能拿来当 GPIO 使用,请勿必避开这两个GPIO脚位。
在使用的时候还有一件要注意,因为 W5100 和 SD card 共享 SPI bus,所以在同一个时间只能使用其中一个设备。如果你程式裏会用到 W5100 和 SD card 两种设备,那在使用对应的 library 时就要特别留意,要避免抢 SPI bus 资源的情形。
假如你确定不会用到其中一个设备的话,你可以在程式裏明白地指示 Arduino开发板,方法是: 如果不会用到 SD card,那就把 pin 4 设置成 OUTPUT并把状态改为 high,如果不会用到 W5100,那么便把 pin 10 设置成 OUTPUT并把状态改为 high。
[状态指示灯号]
PWR: 表示 Arduino 控制板和 Ethernet Shield 已经上电LINK: 网路指示灯,当灯号闪烁时代表正在传送或接收资料FULLD: 代表网路连线是全双工100M: 表示网路是 100 MB/s (相对于 10 Mb/s)RX: 接收资料时闪烁TX: 传送资料时闪烁COLL: 闪烁时代表网路上发生封包碰撞的情形 (network collisions are detected)[下载]
Ethernet Library:可到Arduino.cc的官网,下载函式库与相关範例。
[透过DHCP 取得 IP 位址]
dhcp.ino#include <SPI.h>#include <Ethernet.h>byte mac[]={0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02};//指定网路卡 MAC 位址 (可以随便设)EthernetClient client;// 建立乙太网物件 EthernetClientvoid setup() {//设定初始值 Serial.begin(115200);//初始化序列埠 //启用 Ethernet 连线,预设会以 DHCP 取得 IP 位址 if (Ethernet.begin(mac)==0) { Serial.println("Cannot get IP Address!"); for(;;);// 无法取得 IP 位址,不做任何事情 } Serial.print("IP Address ");//输出 IP 位址 Serial.println(Ethernet.localIP()); }void loop() { } //无限迴圈
开启序列阜监控视窗
参考
[1] Arduino 乙太网扩充卡测试
[2]【Maker 实战】实作 Arduino Ethernet Shield 应用,透过网路监控居家亮度