1008 RPi0 to 4B(CAT4 RS485)

来自Mcuzone Wiki

关键词

树莓派、 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.jpg

server模式270Mbps左右:

1008_RPi0_to_4B_08.jpg

注意:USB转百兆有线受Zero 2W性能和USB Hub以及Cat4 4G带宽占用影响并不能跑满,请知悉。

3.2.5 4G网络测速

因为Zero 2W性能限制,在其上运行Chromeium等浏览器进行网页测速时,系统运行会非常慢,因此我们使用轻量浏览器surf进行测速。

安装轻量浏览器surf:

sudo apt install surf

然后关闭WiFi,拔掉网线,只剩下4G网络连接,进入https://test.ustc.edu.cn/进行测速。在树莓派终端中运行

surf https://test.ustc.edu.cn

结果如下:

1008_RPi0_to_4B_09.jpg

注意:网络测速受网络环境和测试方法影响,速度请以实际为准,本测试仅供参考。

3.3 AT命令演示

3.3.1 打开AT命令串口方法

在树莓派下要对4G进行AT命令操作,首先要打开AT命令串口,打开方法如下:

首先打开ttyUSB串口:

输入命令lsusb,如下图所示:

1008_RPi0_to_4B_10.jpg

记下4G模块的ID值:1286 4e3d

使用下列命令打开ttyUSB串口,其中echo后面的值就是上面记录的ID值:

sudo modprobe option

sudo sh -c 'echo 1286 4e3d > /sys/bus/usb-serial/drivers/option1/new_id'

1008_RPi0_to_4B_11.jpg

执行上述两条命令之后执行:

ls /dev

此时应该能看到dev设备下有ttyUSB0-3四个设备:

1008_RPi0_to_4B_12.jpg

3.3.2 执行AT命令

通过minicom打开AT命令串口:

sudo minicom -D /dev/ttyUSB2

(注意:使用哪个串口,应以在进入此串口后,可输入运行AT命令,显示不乱码,不乱跳结果为准)

也可以安装CuteCom:

sudo apt install cutecom

下面以CuteCom为例,打开CuteCom:

sudo cutecom

如果需要查看回显,请键入命令:ate1,然后回车,继续键入其它命令,回车可以看到结果。

用AT+CPIN?来检查SIM是否正常插入并识别;

用AT+CSQ来检查信号强度,第一个值是0-31,需要25以上才算信号质量良好;

用AT+COPS?来检查注网情况,双引号内是运营商代码,最后一个数字是网络模式,7代表4G。

1008_RPi0_to_4B_13.jpg

常用AT命令:

1) 检查SIM卡是否识别到:

at+cpin?

返回ready表示卡已识别,返回error要检查硬件

2) 检查天线信号质量:

at+csq

返回值在26-31表示信号OK,信号满格31;返回值在20-25表示信号勉勉强强;返回值在20以下表示信号比较糟糕或者天线没接

3) 检查注网情况:

at+cops?

正常应该返回运营商代码和7,7代表4G

注意,以上命令只有at+csq不要加问号,另外两条命令需要加问号。

4) 查看4G模块的IMEI码:

at+cgsn

5) 重启4G模块(有时候如果重插SIM卡,热插拔不一定管用,可以用这个reset命令来复位模块):

at+reset

6) 关闭射频:

at+cfun=0

开启射频:

at+cfun=1

上述两条命令成对使用,可以在不重启4G模组的情况下让模组重新注网。

3.4 RS485串口测试

四、Ubuntu Sever系统下使用演示

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

Ubuntu系统(Ubuntu Server 24.04 LTS服务器版,树莓派Zero 2W因为性能关系不能用Desktop版)。镜像为ubuntu-24.04-preinstalled-server-arm64+raspi.img.xz

Ubuntu系统下载地址:

https://ubuntu.com/download/raspberry-pi

建议使用树莓派镜像烧录器烧录系统,并在烧写前在烧录器设置中设置好一些预设置参数:

1002_Zero_4G_Cat1_02.jpg

在弹出的窗口中,GENERAL页面中,可以主机名、用户名和密码、默认连接的WiFi、区域:

1002_Zero_4G_Cat1_03.jpg

在SERVICES页面中,请设置开启SSH服务:

1002_Zero_4G_Cat1_04.jpg

这样烧录完毕的系统,启动后就是预先设置的用户名和密码,并且能使用预设置的WiFi(需在该WiFi热点覆盖范围内)和SSH功能。

4.1 编辑初始化脚本

Ubuntu Server烧写完毕后,请在PC端打开TF卡系统分区根目录下的config.txt检查USB的初始化脚本,Ubuntu Server对USB初始化了两遍,前面一遍没有配置成host模式,需要确认下图中的红框的位置是否配置成完全,如果没有,请手动添加完整:

dtoverlay=dwc2,dr_mode=host

0007_Zero_4G_Cat1_32.jpg

0007_Zero_4G_Cat1_75.jpg