完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
所有教程实验环境为arduino UNO+Arduino1.01 IDE 从现在起,我要开始一个如何在arduino上使用ENC28J60以太网控制器的系列教程。 介绍 Arduino的官方以太网盾是基于Wiznet W5100芯片, Arduino IDE 的Ethernet库也是针对这个芯片。 一种广泛使用的以太网控制器是Microchip的ENC28J60,在互联网上你可以找到基于该芯片设计的盾或模块,通常比官方的以太网盾便宜。 Testato建议我说明这两个控制器之间的差异:主要的不同,之所以Arduino的团队选择了W5100芯片,是该芯片片集成了成熟且经过验证的TCP/IP协议栈,节省了MCU资源。 文库 很多公司和玩家开发了Arduino的Microchip enc28j60的库,我这些教程使用的库是JeeLabs Café编写的EtherCard库。 JeeLabs Café把它开源在了GitHub上,先下载一个zip文件的最新版本: 打开Arduino IDE安装主文件夹(比如 D:arduino-1.0.1),解压缩下载的文件到 libraries 子文件夹。在ZIP压缩包中,所有的库文件都在一个名为“jcw-ethercard- xxx”的文件夹中,重命名该文件夹为“EtherCard”: 运行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服务器,它会自动对新设备的网络参数进行配置。 ping! 检查一个设备是否正确联网,最简单的方法是ping它。在一个联网的计算机上输入 ping 你要查看设备的IP地址 让我们来编写一个简单例子回答ping请求: ARDUINO 代码复制打印
说明:
[color=rgb(51, 102, 153) !important]复制代码 首先,你需要包括以EtherCard库,并定义一些变量:MAC地址(mymac[]),IP地址(myip[])和用来存储传入和传出的数据缓冲(Ethernet::buffer[700])。
[color=rgb(51, 102, 153) !important]复制代码 用begin()方法开始网络连接,需要3个参数,分别为缓冲大小、MAC地址和Arduino的片选(CS)引脚(通常为10,这个参数可以不写,如果不写的话默认为8(2560默认也是8),所以要根据你的电路进行设置)。 顺便说下接线,特别是模块的,很多同学容易弄错,必要接的7根,Vcc接3.3V(电路接好通电后,一定要用万用表量一下,至少要3V以上);CS根据程序接;SI接D11;SO接D12;SCK接D13;RESET接RESET;GND接GND。 arduino 2560接线:Vcc接3.3V(电路接好通电后,一定要用万用表量一下,至少要3V以上);cs根据程序接;SI接D51;SO接D50;SCK接D52;RESET接RESET;GND接GND。有些2560可能3.3V电压不够,如果调试Vcc可接5V电压(建议不要长时间运行,芯片会比较热)。
[color=rgb(51, 102, 153) !important]复制代码 用staticSetup()方法配置静态的IP地址,参数有3个,分别为ip地址、网关和DNS,IP地址是必须的,网关和DNS是可选的。大家看下这个函数的参数定义。
[color=rgb(51, 102, 153) !important]复制代码
[color=rgb(51, 102, 153) !important]复制代码 in the loop, 你只需要2条命令: packetReceive()方法: 从网络接收一个新传入的数据包; packetLoop() 方法:对具体收到的信息作出回应,包含“ping” 请求(ICMP echo 请求)。 现在你的arduino联网了: |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
WIO Terminal +MCP2515 实现车辆OBD的速度监控
10406 浏览 0 评论
60659 浏览 77 评论
5991 浏览 3 评论
一块扩展板完成Arduino的10类37项实验(代码+图形+仿真)
36520 浏览 219 评论
10053 浏览 0 评论
520浏览 1评论
请教:esp32中用u8g2显示shtc3传感器数据到i2c液晶屏,显示不稳定的问题
1297浏览 1评论
1436浏览 1评论
642浏览 0评论
563浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 00:04 , Processed in 0.593914 second(s), Total 72, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号