将以太网添加到Pi Zero

7

皮零没有以太网端口。如果您的项目需要以太网,则可以使用以太网模块或USB到以太网适配器添加它。

在这一点上,有人会质疑为什么要向Pi Zero添加以太网。为什么不只使用已经包含端口的标准Pi?我猜答案是,由于功耗或尺寸方面的考虑,有些项目需要使用Pi Zero,但您还需要以太网设备的功能。一世’我已经想到了一个项目,以后我会在博客中介绍这个项目(如果成功的话)。

ENC28J60以太网SPI模块

Microchip制造的ENC28J60是具有SPI接口的独立以太网控制器。它可以作为便宜的模块提供,可以连接到Pi’s SPI 接口.

ENC28J60以太网模块

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

ENC28J60模块引脚连接器
  • 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)CSRST
引脚17(3.3V)
针脚2(5V)
VCC地线针脚25(接地)

由于仅需要连接7个引脚,因此您可以使用7条电缆将模块连接至Pi Zero。

将ENC28J60连接到您的网络

显然,您应该使用以太网跳线将ENC28J60模块连接到网络。我将其连接到网络交换机,但是您可以直接连接到路由器上的备用端口。

鉴于Pi Zero和模块的亮度,您可能需要将电缆绑在表面上,以防止电缆将您的设置拖到地板上。

Pi零连接到ENC28J60以太网模块

您可能会在这张照片中注意到,我没有使用引脚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中以如下部分结尾:

在config.txt中启用ENC28J60覆盖

使用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零ifconfig示例输出

在这里,我们可以看到Pi正在使用我们设置的MAC地址,并且我的路由器已将其分配为IP地址192.168.001.131。

性能

使用 速度测试 实用程序我测量的网络链接速度在3.15和3.7 Mbits / s之间。是否足够,将完全取决于您正在构建的项目。

Pi零ENC28J60速度测试结果。

功率&当前要求

这些人直接使用Pi供电的设备感到非常高兴 ’的3.3V引脚。但是,ENC28J60的数据表指出,它在传输时可能需要180mA的电流,这超出了Pi的50mA限制’板载3.3V稳压器。

因此,我决定确保我的ENC28J60不会出现电流不足的情况,并向3.3V稳压器(HK1117)添加了一个5V小电压。这个小型的3针模块易于连接,并为以太网设备提供了可能需要的所有电流。

Pi标头HK1117ENC28J60
针脚2(5V)
引脚6(接地)nd
VoutVcc(3.3V)

Pi零以太网故障排除

在设置模块和撰写本文时,我遇到了一些问题。通过注意以下几点解决了这些问题:

  • 仔细检查您的所有连接
  • 检查连接是否松动
  • 注意不要混淆CLK和SCK
  • 注意不要混淆MISO(SO)和MOSI(SI)
  • 考虑使用单独的3.3V稳压器提供足够的电流

购买以太网模块

ENC28J60可从许多零售商处购买,包括:

我的设备被描述为“Mini ENC28J60” and cost £4.

分享。

7条留言

  1. 辉煌!我对此唯一的否定是,没有一个单位可以将它们围起来。有人’进入3D打印领域,也许应该尝试设计一种能够并排或首尾相接,甚至首尾相接的Raspberry 皮零和ENC28J60模块的盒子,而这一切都将阻止它们相对于彼此可能短路!

    • 我想到的项目肯定会要求将组件固定在外壳中。电缆的重量超过零和模块,因此我用胶带将其绑在桌子上,以避免整个设置被拖到地板上。一旦我确切地知道我的项目需要什么物品,’我们必须决定要使用哪种机箱,以及如何最好地装入其中的所有内容。

  2. 有趣的帖子—欢迎回来!我已经准备放弃这个网站了。给您的一个快速问题:表面上看,这似乎有点过头了;有什么理由不能’只需使用以太网->USB端口?这些在市场上都可以买到,并且运行良好。在我看来,这将是一种更为简单的方法。

    • I’我们已经有了一个以太网USB适配器,并计划尝试一下。我认为ENC模块之所以有用的原因是,您可以将其包装到更小的空间中,’需要USB插头伸出Pi的侧面。尽管可以断开USB插头,并将导线直接焊接到Pi 印刷电路板的背面。 ENC模块还便宜一些,因此,如果您需要大量模块,则可能会降低总成本。

      • 很公平…尽管有90度USB连接器可能会大大降低连接配置文件。以我的经验,Eth-USB适配器是完全即插即用的—没有配置,不需要任何故障排除,因此这将是我书中的一大胜利。

        期待未来的帖子!

  3. 您可以使用模块上包含的5v稳压器获得那些SPI到以太网模块,我在eBay上买到的那对夫妇在板子底部还有AMS1117 3.3稳压器,而插头上则有一个3.3v电源和一个5v电源,为稳压器供电,然后由稳压器为模块供电。

发表评论

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.