使用ENC28J60模块实现单片机联网

在这个万物都可以联网的IoT时代,我们必须掌握单片机访问互联网的技术。

Arduino有一个官方的Ethernet Shield,使用的是W5100方案,这个方案造价比较高,在淘宝网上,国产的仿制品价格在30元左右。我今天介绍的是另外一个廉价的解决方案,这个方案使用的是Microchip的ENC28J60芯片,在淘宝网上,国产的价格基本在10元钱左右。

ENC28J60 Datasheet

ENC28J60通过SPI接口提供了10BASE-T以太网的功能:

ENC28J60 SPI电路原理图

我拿到的模块:

ENC28J60模块图片 ENC28J60 图片

在GitHub上,有一个很好用的Arduino Library来驱动这个模块:

https://github.com/jcw/ethercard

使用这个Library的步骤如下:

1,下载这个模块的zip包。

2,打开Arduino IDE,选择Sketch  — Include Library — Add .ZIP Library,然后选择刚才下载的zip包。

3,在Arduino IDE中,选择File — Examples — ethercard-master ,然后选择一个示例,按照自己的需求修改即可。

我选择的是udpListener这个示例,做了一些修改,可以正常编译运行。

电路的连接方法如下:

更多的API可以参考EtherCard.h文件,里面的注释很丰富和清晰。

我用PHP写了一个简单的客户端程序,用于向Arduino发送数据,来控制Arduino上面的LED,代码如下:

实际连接效果:

ENC28J60 Arduino 连接图

插上网线加电实际运行效果:

ENC28J60 加电

参考资料:

https://github.com/jcw/ethercard

http://www.microchip.com/wwwproducts/devices.aspx?ddocname=en022889

Published by

Meng Guang

thinking ahead of what's possible