“Microduino ENC网络(一)/zh”的版本间的差异
(→程序) |
(→原理图) |
||
(未显示2个用户的8个中间版本) | |||
第1行: | 第1行: | ||
+ | {{Language | Microduino_ENC_Network_(1)}} | ||
{| style="width: 800px;" | {| style="width: 800px;" | ||
|- | |- | ||
第5行: | 第6行: | ||
本教程将教大家如何ping通你的Microduino。 | 本教程将教大家如何ping通你的Microduino。 | ||
==设备== | ==设备== | ||
− | *'''[[Microduino-Core]]''' | + | *'''[[Microduino-Core/zh]]''' |
− | *'''[[Microduino- | + | *'''[[Microduino-USBTTL/zh]]''' |
− | *'''[[Microduino-ENC28J60]]''' | + | *'''[[Microduino-ENC28J60/zh]]''' |
− | *'''[[Microduino-RJ45]]''' | + | *'''[[Microduino-RJ45/zh]]''' |
*其他硬件设备 | *其他硬件设备 | ||
− | **USB数据连接线 一根 | + | **USB数据连接线 一根 |
− | |||
==原理图== | ==原理图== | ||
第19行: | 第19行: | ||
*Microduino-RJ45 | *Microduino-RJ45 | ||
*Microduino-Core | *Microduino-Core | ||
− | *Microduino- | + | *Microduino-USBTTL |
层层堆叠,再插上网线。 | 层层堆叠,再插上网线。 | ||
第26行: | 第26行: | ||
[[File:MicroduinoENCShow.jpg|600px|center|thumb]] | [[File:MicroduinoENCShow.jpg|600px|center|thumb]] | ||
+ | Microduino ENC28J60引脚图: | ||
+ | |||
+ | {|class="wikitable" | ||
+ | ! rowspan="1" | ENC28J60模块引脚名 || Microduino引脚 || 功能 | ||
+ | |- | ||
+ | | SCK|| D13 || SPI总线时钟 | ||
+ | |- | ||
+ | | SI || D12 || 数据输入脚 | ||
+ | |- | ||
+ | | SO || D11 || 数据输出脚 | ||
+ | |- | ||
+ | | CS || D8 || SPI片选信 (程序中需要定义) | ||
+ | |- | ||
+ | | INT || D2 || 中断功能(在此为INT0) | ||
+ | |- | ||
+ | | RST || RST || 复位功能 | ||
+ | |} | ||
==程序== | ==程序== | ||
− | https://github.com/Microduino/Microduino_Tutorials/tree/master/Microduino_ENC/ENCnetworkone | + | [https://github.com/Microduino/Microduino_Tutorials/tree/master/Microduino_ENC/ENCnetworkone ENCnetworkone] |
==调试== | ==调试== | ||
第59行: | 第76行: | ||
//首先,你需要包括以EtherCard库,并定义一些变量:MAC地址(mymac[]),IP地址(myip[])和用来存储传入和传出的数据缓冲(Ethernet::buffer[700])。 | //首先,你需要包括以EtherCard库,并定义一些变量:MAC地址(mymac[]),IP地址(myip[])和用来存储传入和传出的数据缓冲(Ethernet::buffer[700])。 | ||
− | include <EtherCard.h> | + | include <EtherCard.h> |
− | + | static byte mymac[] = {0x74,0x69,0x69,0x2D,0x30,0x31}; | |
− | static byte mymac[] = {0x74,0x69,0x69,0x2D,0x30,0x31}; | + | static byte myip[] = {192,168,1,10}; |
+ | byte Ethernet::buffer[700]; | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
ether.staticSetup(myip); | ether.staticSetup(myip); | ||
第87行: | 第87行: | ||
//用staticSetup()方法配置静态的IP地址,参数有3个,分别为ip地址、网关和DNS,IP地址是必须的,网关和DNS是可选的。大家看下这个函数的参数定义。 | //用staticSetup()方法配置静态的IP地址,参数有3个,分别为ip地址、网关和DNS,IP地址是必须的,网关和DNS是可选的。大家看下这个函数的参数定义。 | ||
− | static bool staticSetup (const uint8_t* my_ip =0, const uint8_t* gw_ip =0, const uint8_t* dns_ip =0); | + | static bool staticSetup (const uint8_t* my_ip =0, const uint8_t* gw_ip =0, const uint8_t* dns_ip =0); |
//in the loop, 你只需要2条命令: | //in the loop, 你只需要2条命令: | ||
第95行: | 第95行: | ||
//packetLoop() 方法:对具体收到的信息作出回应,包含“ping” 请求(ICMP echo 请求)。 | //packetLoop() 方法:对具体收到的信息作出回应,包含“ping” 请求(ICMP echo 请求)。 | ||
− | ether.packetLoop(ether.packetReceive()); | + | ether.packetLoop(ether.packetReceive()); |
2015年1月27日 (二) 12:31的最新版本
Language | English |
---|
目的本教程将教大家如何ping通你的Microduino。 设备
原理图
层层堆叠,再插上网线。 如下图所示: Microduino ENC28J60引脚图:
程序调试步骤一:首先需要下载EtherCard库:https://github.com/jcw/ethercard 放到你的IDE的libraries文件夹中,重启IDE。 步骤二:在连接到网络之前,你需要了解一些参数: 网络参数: MAC地址又叫物理地址,是由48比特长,12位的16进制数字组成,0到23位是厂商向IETF等机构申请用来标识厂商的代码,也称为“编制上唯一的标识符”(Organizationally Unique Identifier)。是识别LAN(局域网)结点的标志。地址的24到47位由厂商自行分派,是各个厂商制造的所有网卡的一个唯一编号; IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。按照TCP/IP协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节。例如一个采用二进制形式的IP地址是“00001010000000000000000000000001”,这么长的地址,人们处理起来也太费劲了。为了方便人们的使用,IP地址经常被写成十进制的形式,中间使用符号“.”分开不同的字节。于是,上面的IP地址可以表示为“10.0.0.1”。IP地址的这种表示法叫做“点分十进制表示法”,这显然比1和0容易记忆得多,它用于在本地网络中识别设备; 子网掩码是一个32位地址,是与IP地址结合使用的一种技术。它的主要作用有两个,一是用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。二是用于将一个大的IP网络划分为若干小的子网络。子网掩码通畅也用“点分十进制表示法”。 网关实质上是一个网络通向其他网络的IP地址,它通常是分配给一个可以到达不同网络的设备(路由器等)。 你需要编一个与你所在的网络其他设备不同的MAC地址,在这个例子中,我们通常会选择一个尚未分配的组织机构代码(如:DD-DD-DD)开头的MAC地址。 网络控制器的网络参数(地址,子网掩码,网关)与您的本地网络中的其他设备的配置相比: IP地址应该是唯一的,子网掩码和网关应该是相同的。 如果你的网络中有DHCP服务器,它会自动对新设备的网络参数进行配置。 步骤三:解释一下代码: //首先,你需要包括以EtherCard库,并定义一些变量:MAC地址(mymac[]),IP地址(myip[])和用来存储传入和传出的数据缓冲(Ethernet::buffer[700])。 include <EtherCard.h> static byte mymac[] = {0x74,0x69,0x69,0x2D,0x30,0x31}; static byte myip[] = {192,168,1,10}; byte Ethernet::buffer[700];
ether.staticSetup(myip); //用staticSetup()方法配置静态的IP地址,参数有3个,分别为ip地址、网关和DNS,IP地址是必须的,网关和DNS是可选的。大家看下这个函数的参数定义。 static bool staticSetup (const uint8_t* my_ip =0, const uint8_t* gw_ip =0, const uint8_t* dns_ip =0); //in the loop, 你只需要2条命令: //packetReceive()方法: 从网络接收一个新传入的数据包; //packetLoop() 方法:对具体收到的信息作出回应,包含“ping” 请求(ICMP echo 请求)。 ether.packetLoop(ether.packetReceive());
检查一个设备是否正确联网,最简单的方法是ping它。在一个联网的计算机上输入ping 你要查看设备的IP地址 结果出现类似上图所示画面就说明连上网了。 视频 |