1008 RPi0 to 4B(CAT4 RS485)

来自Mcuzone Wiki
Mcuadm留言 | 贡献2024年11月20日 (三) 13:22的版本 →‎3.2.4 iperf3测速

关键词

树莓派、 Raspberry Pi Zero、Cat4 4G 、4B、USB2.0-A、以太网、扩展板、USB HUB 集线器、RS485、串口、顶针连接

一、简介

树莓派Zero 2W作为第一代Zero的垂直替换产品,不仅保持了接口类型和接口位置不变,而且大幅升级了CPU,使得总体性能有了2-10倍的提升。而目前3B/3B+/4B缺货比较严重,价格也比较高,所以我们设计了这款Zero 2W转4B形态的扩展板,目的是为了提供4B缺货的替代方案(当然性能和4B还是差很多,另有3B形态的扩展板可选),同时也是作为Zero 2 W的功能扩展。

Zero 2W转4B形态扩展板具备四路USB2.0主机接口,一路USB2.0转干兆以太网(可以跑到300Mbps)。同时还扩展了4G LTE Cat4模组和带隔离的RS485。整个系统采用USB-C供电,扩展板通过镀金顶针和Zero 2连接,提供电源供应和USB2.0扩展,不占用Zero 2W的40pin扩展接口。

带隔离模块的RS485速度可达737Kbps。

二、硬件资源

1. 顶针通讯与供电:

pogopin顶针连接,供电和通讯,简洁可靠;不占用树莓派的GPIO引脚;

板载USB Type-C供电接口,可通过此Type-C供电,树莓派Zero无需再供电;

2. CAT4 4G:

4G LTE免驱

3. 千兆以太网

高速以太网实测可达300Mbps;

4. RS485:

采用USB转串口再加外挂带隔离的RS485模块的方案;

自动流控型高速RS485隔离模块,2500V隔离耐压保护;

波特率稳定可靠支持500Kbps,实测高达737000bps传输速率,128个节点;

可作为从机介入RS485总线,也可作为主机,接收处理各从机信息。

三、树莓派系统下使用演示

本文档使用基于树莓派Zero 2W的硬件,

树莓派OS(Raspberry Pi OS with desktop),镜像为2024-07-04-raspios-bookworm-arm64.img.xz。

(若使用树莓派Zero一代系列的板子,只支持32位系统,请注意下载版本。)

树莓派OS下载地址:

https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-64-bit

3.1 查看硬件设备

3.1.1 查看USB设备

打开树莓派OS的终端,输入命令lsusb,如下图所示:

1008_RPi0_to_4B_01.jpg

可以看到系统识别到了USB HUB和4G模组等外设。其中:

Device 002:外挂USB Hub;

Device 003:USB转RS485;

Device 004:外挂USB Hub;

Device 005:USB转千兆网卡;

Device 006:USB2.0-A接口;

Device 007:USB2.0-A接口;

Device 008:4G模组;

Device 009:USB2.0-A接口;

Device 011:USB2.0-A接口。

如果系统卡在树莓派logo处无法启动:

0007_Zero_4G_Cat1_58.jpg

或者启动后键盘鼠标及4G模组都无法使用,请仔细观察顶针是否对准了镀金触点,并请在PC端打开TF卡系统分区根目录下的config.txt检查USB的初始化脚本:

0007_Zero_4G_Cat1_41.jpg

需要确认下图中的三处红框的位置是否都配置成完全,如果没有,请手动添加完整并保存文件:

# otg_mode=1(建议按此注释掉)

dtoverlay=dwc2,dr_mode=host(两处必须确保加上)

0007_Zero_4G_Cat1_57.jpg

3.1.2 查看网络设备

打开树莓派OS的终端,输入命令ifconfig -a,如下图所示:

1008_RPi0_to_4B_02.jpg

可以看到eth0为USB转千兆以太网,eth1为Cat4 4G,wlan0为Zero 2W的无线网卡。

为了操作方便,建议使用PC端的SSH软件连接系统并进行终端操作,我们使用与树莓派的无线网卡的IP地址在同一网段内的PC,通过MobaXterm进行连接:

1008_RPi0_to_4B_03.jpg

连接后,大部分操作都可以通过PC端的MobaXterm进行,使得整套硬件系统可以脱离显示器运作。以下测试操作将通过MobaXterm在PC端进行演示。

3.2 测试网络设备

3.2.1 ping包测试

测试的时候有优先级,优先级可以通过可以执行route命令来查看,哪个网卡的metric值小就从优先从哪个网卡通讯,如有内外网特殊优先级需要请调整各网络的metric值以及DNS服务器设置。

1008_RPi0_to_4B_04.jpg

可以用-I参数指定从哪个网卡开始ping包,如下所示:

ping www.mcuzone.com -I eth0

ping www.mcuzone.com -I eth1

ping www.mcuzone.com -I wlan0

1008_RPi0_to_4B_05.jpg

我们也可以通过关闭某个网卡,达到强制指定通过另一个网络进行通讯,如需关闭eth0,可执行下面的命令:

sudo ifconfig eth0 down

以及通过执行下面的命令来开启eth0:

sudo ifconfig eth0 up

3.2.2 设置网卡优先级与指定DNS服务器

关于该部分的知识,可参阅以下链接:

1. 设置网卡优先级

2. 利用udhcpc指定DNS服务器

3. udhcpc应用场景举例

建议通过udhcpc软件,而不是编辑resolv.conf文件来指定DNS服务器,这样会比较稳定。

3.2.3 固定MAC地址

千兆网口为RTL8153网卡,在使用过程中的MAC地址是不固定的,每次重新上电后MAC地址都会随机改变。下面讲解如何为RTL8153网卡设置固定MAC地址。

本讲解也适用于Ubuntu系统。

首先在树莓派终端中,执行ifconfig -a,查看RTL8153网卡的识别信息,之前已经确认RTL8153网卡的识别名称为eth0。

然后输入:

sudo mousepad /etc/systemd/system/macspoof@eth0.service

或:

sudo nano /etc/systemd/system/macspoof@eth0.service

eth0为上面显示的网卡识别名称。

运行上面的命令后会新建一个文档,输入以下文本:

[Unit]

Description=MAC Address Change %I

Wants=network-pre.target

Before=network-pre.target

BindsTo=sys-subsystem-net-devices-%i.device

After=sys-subsystem-net-devices-%i.device

[Service]

Type=oneshot

ExecStart=/usr/bin/ip link set dev %i address xx:xx:xx:xx:xx:xx

ExecStart=/usr/bin/ip link set dev %i up

[Install]

WantedBy=multi-user.target

其中“xx:xx:xx:xx:xx:xx”为想要指定的MAC地址,可以按MAC地址格式自行确定(不要和其它网络设备重复),例如这里我们改为“e6:b8:37:f7:22:93”。设置完成后保存并退出。

随后输入下面的命令使能服务:

sudo systemctl enable macspoof@eth0.service

这样就完成了对eth0的固定MAC地址。

全部操作完毕后重启系统,系统重启完毕后,执行ipconfig -a即可看到MAC地址更改成功:

1008_RPi0_to_4B_06.jpg

这样即使重新上电,MAC地址也不会改变了。

3.2.4 iperf3测速

Windows版iperf3下载:

http://www.mcuzone.com/down/Software.asp?ID=10000634

Linux下iperf3安装:

sudo apt-get install iperf3

千兆以太网测速结果,client模式282Mbps左右:

1008_RPi0_to_4B_07.jpgserver模式270Mbps左右:

1008_RPi0_to_4B_08.jpg