皮零没有以太网端口。如果您的项目需要以太网,则可以使用以太网模块或USB到以太网适配器添加它。
在这一点上,有人会质疑为什么要向Pi Zero添加以太网。为什么不只使用已经包含端口的标准Pi?我猜答案是,由于功耗或尺寸方面的考虑,有些项目需要使用Pi Zero,但您还需要以太网设备的功能。一世’我已经想到了一个项目,以后我会在博客中介绍这个项目(如果成功的话)。
ENC28J60以太网SPI模块
Microchip制造的ENC28J60是具有SPI接口的独立以太网控制器。它可以作为便宜的模块提供,可以连接到Pi’s SPI 接口.

引脚输出可以变化,但是大多数模块将包含10个引脚的模块,其中包含以下信号:

- VCC& nd
- 时钟
- INT
- WOL
- 味噌& 摩西
- SCK
- CS
- RST
有些模块需要5V电压,而另一些则需要3.3V电压。购买一个时要注意细节,以便可以将其连接到正确的电压。我的模块从3.3V运行。
将ENC28J60连接到Pi接头连接器
该模块可以连接到Pi’s 通用输入输出接头,使用母-母杜邦式跨接电缆。
Pi标头 | 模组 | 模组 | Pi标头 |
---|---|---|---|
– | 时钟 | INT | 引脚22(GPIO25) |
– | WOL | 味噌 | 引脚21(GPIO9) |
引脚19(GPIO10) | 摩西 | SCK | 引脚23(GPIO11) |
引脚24(GPIO8) | CS | RST | – |
引脚17(3.3V) 针脚2(5V) | VCC | 地线 | 针脚25(接地) |
由于仅需要连接7个引脚,因此您可以使用7条电缆将模块连接至Pi Zero。
将ENC28J60连接到您的网络
显然,您应该使用以太网跳线将ENC28J60模块连接到网络。我将其连接到网络交换机,但是您可以直接连接到路由器上的备用端口。
鉴于Pi Zero和模块的亮度,您可能需要将电缆绑在表面上,以防止电缆将您的设置拖到地板上。

您可能会在这张照片中注意到,我没有使用引脚25接地,而是使用了引脚39。这是由于我的Pi Zero接头上的焊接有问题。
Pi零以太网软件设置
软件设置非常简单。您只需要编辑config.txt文件并进行两个可能的更改。我建议从使用新镜像的SD卡开始 最新版本的Raspbian.
可以在可以读取SD卡上启动分区的任何计算机上编辑config.txt文件。或者,如果您连接了键盘和显示器,则可以直接在Pi上对其进行编辑。
sudo nano /boot/config.txt
找到这行:
#dtparam=spi=on
并删除#个字符以离开:
dtparam=spi=on
然后添加以下行:
dtoverlay=enc28j60
您应该在config.txt中以如下部分结尾:

使用CTRL-X,Y和ENTER保存并退出。
开机或重启
如果您直接在Pi上工作,则可以重新启动:
sudo reboot
如果在PC上配置了SD卡,则可以将其插入Pi并加电。
您的Pi应该会自动连接到您的网络。
设置MAC地址
与过去可能使用过的大多数其他网络设备不同,ENC28J60没有预设的MAC地址。这意味着它是在每次启动设备时随机生成的。这可能不会打扰您,但可能导致路由器继续分配其他IP地址。如果需要一致的MAC地址,则必须在软件中进行设置。
在以下示例中,我使用“b8:27:eb:00:00:01”. 如果您有多个使用此技术的设备,则应确保它们都是唯一的,并且不要与网络上的其他设备冲突。
首先创建以下文件:
sudo nano /lib/systemd/system/setmac.service
添加以下内容:
[Unit] Description=Set MAC address for ENC28J60 module Wants=network-pre.target Before=network-pre.target BindsTo=sys-subsystem-net-devices-eth0.device After=sys-subsystem-net-devices-eth0.device [Service] Type=oneshot ExecStart=/sbin/ip link set dev eth0 address b8:27:eb:00:00:01 ExecStart=/sbin/ip link set dev eth0 up [Install] WantedBy=multi-user.target
使用CTRL-X,Y和ENTER保存并退出。
sudo chmod 644 /lib/systemd/system/setmac.service sudo systemctl daemon-reload sudo systemctl enable setmac.service
重启
完成所有配置后,您现在可以使用以下方法重新启动Pi:
sudo reboot
返回命令行后,您可以通过以下方式检查Pi使用的IP和MAC地址:
ifconfig
哪个应该给您输出看起来像:

在这里,我们可以看到Pi正在使用我们设置的MAC地址,并且我的路由器已将其分配为IP地址192.168.001.131。
性能
使用 速度测试 实用程序我测量的网络链接速度在3.15和3.7 Mbits / s之间。是否足够,将完全取决于您正在构建的项目。

功率&当前要求
这些人直接使用Pi供电的设备感到非常高兴 ’的3.3V引脚。但是,ENC28J60的数据表指出,它在传输时可能需要180mA的电流,这超出了Pi的50mA限制’板载3.3V稳压器。
因此,我决定确保我的ENC28J60不会出现电流不足的情况,并向3.3V稳压器(HK1117)添加了一个5V小电压。这个小型的3针模块易于连接,并为以太网设备提供了可能需要的所有电流。
Pi标头 | HK1117 | ENC28J60 |
---|---|---|
针脚2(5V) | 文 | – |
引脚6(接地) | nd | – |
– | Vout | Vcc(3.3V) |
Pi零以太网故障排除
在设置模块和撰写本文时,我遇到了一些问题。通过注意以下几点解决了这些问题:
- 仔细检查您的所有连接
- 检查连接是否松动
- 注意不要混淆CLK和SCK
- 注意不要混淆MISO(SO)和MOSI(SI)
- 考虑使用单独的3.3V稳压器提供足够的电流
购买以太网模块
ENC28J60可从许多零售商处购买,包括:
我的设备被描述为“Mini ENC28J60” and cost £4.
7条留言
辉煌!我对此唯一的否定是,没有一个单位可以将它们围起来。有人’进入3D打印领域,也许应该尝试设计一种能够并排或首尾相接,甚至首尾相接的Raspberry 皮零和ENC28J60模块的盒子,而这一切都将阻止它们相对于彼此可能短路!
我想到的项目肯定会要求将组件固定在外壳中。电缆的重量超过零和模块,因此我用胶带将其绑在桌子上,以避免整个设置被拖到地板上。一旦我确切地知道我的项目需要什么物品,’我们必须决定要使用哪种机箱,以及如何最好地装入其中的所有内容。
有趣的帖子—欢迎回来!我已经准备放弃这个网站了。给您的一个快速问题:表面上看,这似乎有点过头了;有什么理由不能’只需使用以太网->USB端口?这些在市场上都可以买到,并且运行良好。在我看来,这将是一种更为简单的方法。
I’我们已经有了一个以太网USB适配器,并计划尝试一下。我认为ENC模块之所以有用的原因是,您可以将其包装到更小的空间中,’需要USB插头伸出Pi的侧面。尽管可以断开USB插头,并将导线直接焊接到Pi 印刷电路板的背面。 ENC模块还便宜一些,因此,如果您需要大量模块,则可能会降低总成本。
很公平…尽管有90度USB连接器可能会大大降低连接配置文件。以我的经验,Eth-USB适配器是完全即插即用的—没有配置,不需要任何故障排除,因此这将是我书中的一大胜利。
期待未来的帖子!
您可以使用模块上包含的5v稳压器获得那些SPI到以太网模块,我在eBay上买到的那对夫妇在板子底部还有AMS1117 3.3稳压器,而插头上则有一个用于3.3v的稳压器。电源和一个5v电源,为稳压器供电,然后由稳压器为模块供电。
非常感谢您的指导。从第一次尝试开始。