Microduino ENC网络(四)/zh

来自Microduino Wikipedia
跳转至: 导航搜索
Language English

目的

本教程将演示给大家如何用Microduino网络唤醒你的电脑。

设备

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

关于网络唤醒的准备工作

几乎所有的网络适配器都有网络唤醒功能。他通过在网络上发送一个特殊指令唤醒你的电脑。

使用此功能的两个主要要求:

如果您的网络适配器没有嵌入在主板上,你必须将电缆连接到主板:

NetCardConnetMotherBoard.jpg

在BIOS中启用WOL功能:

BIOSSetup1.jpg

有些主板如果网络适配器关闭了WOL After Power Loss(断电后是否启用WOL)功能将无法唤醒的PC。事实上,新的主板可以启用WOL功能,即使断电后,你可以配置此功能,在主板的BIOS:

BIOSSetup2.jpg

Magic Packet:

唤醒命令是在网络上发送的一个特殊数据包,称为Magic Packet,详情参见:http://en.wikipedia.org/wiki/Wake-on-LAN#Magic_packet

这个数据包被本地网络所有设备接收,因为他的目标MAC地址为广播地址(FF:FF:FF:FF:FF:FF),后面为要唤醒电脑的MAC地址重复16次。

并不需要选择高级别的协议,一般约定用UDP协议,目标端口为7或者9。


原理图

  • Microduino-ENC28J60
  • Microduino-RJ45
  • Microduino-Core
  • Microduino-USBTTL

层层堆叠,再插上网线。

如下图所示:

MicroduinoENCShow.jpg

程序

ENCnetworkfour

调试

步骤一:首先需要下载EtherCard库:https://github.com/jcw/ethercard

放到你的IDE的libraries文件夹中,重启IDE。

步骤二:解释一下代码:

注意:EtherCard库在这个应用有一个bug,现在已经做了修正,请确保下载最新的库。

你可以用sendWol()方法发送Magic Packet;这个方法需要目标电脑MAC地址作为参数:

   static byte targetmac[] = {0x00,0x1A,0x4B,0x38,0x0F,0x5C};
   ...
   ether.sendWol(targetmac);

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

步骤四:如果没其他问题的话,利用网络分析工具如Wireshark( http://www.wireshark.org/ ),你可以查看Microduino发送的数据包,你会发现数据包是正常的:

Wireshark.jpg

红色圈中 MAC地址的广播,发送到网络中的所有设备

绿色圈中 IP和UDP协议的选择

蓝色圈中 目标PC的MAC地址重复16次

结果

你的电脑被Microduino唤醒了。

视频