Skip to main content

配置 reComputer Industrial R22xx

概述

在安装好设备后,了解如何在 reComputer Industrial R22xx 系列上配置和测试硬件组件。本 Wiki 涵盖 GPIO 映射、USER LED 测试、SPI 通信、Wi-Fi 与蓝牙扫描、LoRa®、4G、5G、RS485、RS232、CAN、DI/DO 测试、安全关机 UPS 等内容。

查询 GPIO 映射和偏移

要查询 GPIO 映射和偏移,请按照以下步骤操作:

  1. 复制并粘贴以下命令以查询 GPIO 映射:
cat /sys/kernel/debug/gpio

该命令会显示 GPIO 映射和偏移,为调试或配置 GPIO 引脚提供关键信息。

USER LED 测试

我们为用户提供了红、蓝、绿三种颜色的 LED。你可以进入 /sys/class/leds/ 目录查看:

1. 进入 LED 目录

cd /sys/class/leds/
ls

使用以下命令点亮对应颜色的 LED。

sudo su
echo 1 > /sys/class/leds/led-red//brightness
echo 1 > /sys/class/leds/led-blue/brightness
echo 1 > /sys/class/leds/led-green/brightness

这将点亮对应的 LED。

3. 关闭 LED(可选)
关闭某个特定 LED,请使用:

sudo su
echo 0 > /sys/class/leds/led-red/brightness
echo 0 > /sys/class/leds/led-blue/brightness
echo 0 > /sys/class/leds/led-green/brightness

测试 SPI 通信

要通过短接 TPM 模块的 MISO 和 MOSI 引脚来测试 SPI 通信,请按照以下步骤操作:

  1. 克隆 spidev-test 仓库:
# Don't forget to connect to network before running command
git clone https://github.com/rm-hull/spidev-test.git
  1. 进入 spidev-test 目录:
cd spidev-test
  1. 编译 spidev_test.c 文件:
gcc spidev_test.c -o spidev_test
  1. 使用以下命令运行 spidev_test 程序:
./spidev_test -D /dev/spidev10.0 -v -p hello

该命令会在指定的 SPI 设备(/dev/spidev10.0)上测试 SPI 通信,启用详细输出( -v ),并发送消息 "hello"(-p hello)。 通过短接 TPM 模块的 MISO 和 MOSI 引脚,你实际上创建了一个回环场景,即 MOSI 发送的数据会在 MISO 上被接收。该设置允许你在没有实际外接设备的情况下测试 SPI 通信。

Wi-Fi 扫描

要列出可用的 Wi-Fi 网络及其详细信息,请运行:

sudo iwlist wlan0 scan
  • 此命令会扫描附近所有 Wi-Fi 网络,并显示其 SSID、信号强度和加密类型。

蓝牙扫描

要扫描蓝牙设备,请按照以下步骤操作:

打开蓝牙控制界面:

sudo bluetoothctl

该命令会打开蓝牙控制界面。在此界面中,你可以运行其他命令来扫描附近的蓝牙设备。

启用扫描:

scan on

该命令会开始扫描附近的蓝牙设备。随后你可以在 bluetoothctl 界面中使用其他命令与蓝牙设备交互,例如配对或连接。

通过 Mini-PCIe 使用 LoRa®

LoRa® SPI 配置

在将 LoRa® SPI 模块安装到 Mini-PCIe 插槽 2 后,可以按以下步骤配置 LoRa® SPI:

  1. 克隆 SX1302_HAL 仓库:
cd ~/
git clone https://github.com/Lora-net/sx1302_hal
  1. 进入克隆的目录:
cd sx1302_hal
  1. 修改配置文件:

打开 I2C 设备配置文件:

sudo nano ./libloragw/inc/loragw_i2c.h

将此行修改为:

#define I2C_DEVICE "/dev/i2c-1"

修改为:

#define I2C_DEVICE "/dev/i2c-2"

#define I2C_DEVICE "/dev/i2c-1" 修改为 #define I2C_DEVICE "/dev/i2c-2"。 按下 ctrl+x 退出,按 y 保存更改,然后按 Enter 返回命令行页面。

  1. 4.添加 packet_forwarder/reset_lgw.sh 文件:
sudo nano packet_forwarder/reset_lgw.sh

添加执行代码:

SX1302_RESET_PIN=632     # SX1302 reset
SX1302_POWER_EN_PIN=633 # SX1302 power enable
SX1261_RESET_PIN=634 # SX1261 reset (LBT / Spectral Scan)
# AD5338R_RESET_PIN=13 # AD5338R reset (full-duplex CN490 reference design)

固件原生支持 SPI 型号 WM1302-SPI-US915-M。若你希望使用其他型号,可以查询对应的 RESET_PIN 定义,并参考以下命令修改 RESET_PIN。

cat /sys/kernel/debug/gpio

按下 ctrl+x 退出,按 y 保存更改,然后按 Enter 返回命令行页面。

  1. 修改配置代码:
cp ./tools/reset_lgw.sh ./packet_forwarder
  1. 分别注释掉第 18、29、35、42、53 和 54 行:
nano ./packet_forwarder/global_conf.json.sx1250.US915

将 "com_path": "/dev/spidev0.0" 修改为 "com_path": "/dev/spidev2.0"。

 cd ./packet_forwarder
sudo ./lora_pkt_fwd -c global_conf.json.sx1250.US915

LoRa® USB 配置

对于 LoRa® USB,前面的命令与 LoRa® SPI 相同。但最后一条命令需要修改为:

cho  632  >  /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio632/direction
echo "1" > /sys/class/gpio/gpio632/value

sudo ./lora_pkt_fwd -c global_conf.json.sx1250.EU868.USB

该命令指定了用于 LoRa® USB 的配置文件。

通过 M.2 B-KEY 使用 5G 蜂窝网络

要通过 minicom 使用 AT 命令与 5G/4G 模块交互,请按照以下步骤操作:

  1. 新建 power_5g.sh 文件:
nano power_5g.sh

使用 sudo nano 打开并输入以下命令,然后按 ctrl+x 保存并退出。

#!/bin/bash

RESET_PIN=655
POWER_PIN=660

if [ ! -d "/sys/class/gpio/gpio$RESET_PIN" ]; then
echo $RESET_PIN > /sys/class/gpio/export
fi

if [ ! -d "/sys/class/gpio/gpio$POWER_PIN" ]; then
echo $POWER_PIN > /sys/class/gpio/export
fi

echo "out" > /sys/class/gpio/gpio$RESET_PIN/direction
echo "out" > /sys/class/gpio/gpio$POWER_PIN/direction

echo 1 > /sys/class/gpio/gpio$RESET_PIN/value
echo 1 > /sys/class/gpio/gpio$POWER_PIN/value

echo "Start to reboot 5g module"

echo 0 > /sys/class/gpio/gpio$RESET_PIN/value
sleep 0.05
echo 0 > /sys/class/gpio/gpio$POWER_PIN/value

echo "5g module reboot completed"
  1. 执行该文件:
sudo ./power_5g.sh

等待 10-15 秒(模块上电并通过 USB 枚举需要一定时间),然后检查设备节点是否出现:

ls /dev/ttyUSB*

输出 /dev/ttyUSB0 等信息:

使用合适的串口和波特率打开 minicom:

sudo apt update
sudo apt install minicom
sudo minicom -D /dev/ttyUSB2 -b 115200

该命令会使用指定串口(/dev/ttyUSB2)并以 115200 波特率打开 minicom。

  1. 打开 minicom 后,你可以开始向 4G 模块发送 AT 命令。例如:
AT

该命令用于检查模块是否有响应。如果模块工作正常,你应当收到 "OK" 的响应。

  1. 要使用 4G 模块拨打电话号码,可以使用 ATD 命令并在后面加上电话号码:
ATD<phone_number>;

phone_number 替换为你想要拨打的电话号码。 请确保在命令末尾添加分号 ;,以表示电话号码的结束。

通过 Mini-PCIe 使用 4G 蜂窝网络

新建 power_4g.sh 文件:

sudo nano power_4g.sh

使用 sudo nano 打开并输入以下命令,然后按 ctrl+x 保存并退出。

# SIM_MUX_SEL
echo 655 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio655/direction
echo 0 > /sys/class/gpio/gpio655/value
echo 660 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio660/direction
echo 1 > /sys/class/gpio/gpio660/value

执行该文件:

sudo ./power_4g.sh

进入 minicom 发送命令:

sudo apt install minicom -y
sudo minicom -D /dev/ttyUSB2 -b 115200

依次按下 Ctrl+A、Z、E。先发送 AT 测试是否已连接。如果出现 OK,则表示连接成功。

执行以下命令后,模块会自动重启。如果你没有退出 minicom,可以看到对应的配置信息。 ECM 拨号上网:

AT+QCFG="usbnet",1

直到最后一行显示 OK,即表示成功。

Note 设备需要等待一段时间,然后你可以在 ifconfig 中查看 usb0 的 IP 地址。

测试网络状态和通信:

# Check network status
ifconfig
# Test communication
ping www.baidu.com -I usb0

RS485 测试

reComputer Industrial R21xx 包含 2 个 RS485 接口。下面是它们对应的 COM 端口设备文件

RS485 接口数量COM 端口丝印标识设备文件
RS485-2COM2A2/B2/GND3/dev/ttyACM1
RS485-3COM3A3/B3/GND4/dev/ttyACM2

要测试 RS485 功能,可以按照以下步骤进行(以 RS485_1 和 RS485_2 为例):

  1. 请将 RS485_1 和 RS485_2 的 A、B 端连接在一起。
  2. 分别在两个终端窗口中打开 minicom:
sudo minicom -D /dev/ttyACM1
sudo minicom -D /dev/ttyACM2
note

如果有扩展板,编号需要往后移一位,例如 /dev/ttyAcM2/dev/ttyAcM3

  1. 需要在两个已打开的 ACM 上执行以下操作:
  • Ctrl+A,再按 Z,会出现 Minicom Command Summary 界面:

  • 再按 O 打开配置,选择 Serial port setup,并按 Enter;打开所有与 RS485 相关的接口,依次按 H/I/J/K/L 将其打开;

  • 当全部显示为 "YES" 后,按 Enter 返回,然后选择 Exit 退出。

note

以 ACM2 和 ACM3 为例: 如果要从 ACM2 发送到 ACM3,需要重新设置 ACM2:ctrl+A,然后按 Z 再按 E,然后开始串口写命令。此时可以在 ACM2 中任意打印字符串,并且可以在 ACM3 中同时看到 ACM2 的内容; 反之,如果要从 ACM3 发送到 ACM2,需要重新设置 ACM3:ctrl+A,然后按 Z 再按 E,然后开始串口写命令。此时可以在 ACM3 中任意打印字符串,并且可以在 ACM2 中同时看到 ACM3 的内容,如图所示。

RS232 测试

reComputer Industrial R21xx 包含 2 个 RS232 接口,对应的 COM 端口设备文件 如下:

RS232 接口数量COM 端口丝印标识设备文件
RS232-1COM1RX1/TX1/GND1/dev/ttyACM0
RS232-2COM2RX2/TX2/GND2/dev/ttyACM1

由于 RS232 为全双工通信,直接将 RS232 的 TX 和 RX 短接即可进行回环测试。

需要打开两个终端,如果连接了扩展板则使用 ACM1,如果未连接扩展板则使用 ACM2: 终端 1:*

sudo minicom -D /dev/ttyACM1 -b 9600

如果未连接扩展板,需要将 /dev/ttyACM1 改为 /dev/ttyACM0

终端 2:

printf "hello seeed\r\n" > /dev/ttyACM1

终端 1 会显示终端 2 请求打印的内容。

DI(数字输入)测试

reComputer Industrial R21xx 包含 4 个 DI 接口,用户可以根据实际需求配置这些接口。

接口数量DI 接口对应扩展 GPIO
4DI1GPIO588
DI2GPIO589
DI3GPIO590
DI4GPIO595

DI 接口的输入类型为 PNP。支持的输入电压为 5VDC~24VDC,电流 - 1000mA。 要测试 DI 的功能,可以按照以下步骤进行测试:

  1. 已完成 reComputer Industrial R21xx 的 DI 接口与外部负载之间的连接。
  2. 输入以下命令获取 GPIO 状态:
echo 588 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio588/direction
cat /sys/class/gpio/gpio588/value
  1. 当外部电平为高电平时,/sys/class/gpio/gpio588/value 的值为 0;当外部电平为低电平时,/sys/class/gpio/gpio588/value 的值为 1。

DO(数字输出)

reComputer Industrial R21xx 包含 4 个 DO 接口,用户可以根据实际需求配置这些接口。

接口数量DI 接口对应扩展 GPIO
4DO1GPIO638
DO2GPIO637
DO3GPIO636
DO4GPIO635

DO 接口的输出类型为晶体管。支持的输出电压:小于 60 VDC,电流能力:500 mA。 要测试 DO 的功能,可以按照以下步骤进行测试:

  1. 已完成 reComputer Industrial R21xx 的 DO 接口与外部负载之间的连接。
  2. 输入以下命令将输出设置为高电平或低电平:
echo 638 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio638/direction
echo 1 > /sys/class/gpio/gpio638/value
echo 0 > /sys/class/gpio/gpio638/value
  1. 当外部电平为高电平时,/sys/class/gpio/gpio638/value 的值为 0;当外部电平为低电平时,/sys/class/gpio/gpio638/value 的值为 1。

CAN 测试

回环测试

接口数量DI 接口对应扩展 GPIO
2CAN_H/CAN_Lcan0

由于 reComputer Industiral R22xx 仅配备单路 CAN 接口,无法进行独立回环测试。要验证其通信功能,需要外部对端设备或 USB 转 CAN 适配器。在本次测试中,将使用配备双路 CAN 接口的 reComputer Industiral R21xx 作为对端节点,与 reComputer Industiral R22xx 建立连接。具体连接方案和配置步骤请参考以下教程:

  1. 使用两根杜邦线将 can0 和 can1 的 H-H、L-L 短接,形成最小回环测试。
CAN_H─────●───── CAN-H
CAN_L─────●───── CAN-L
G_CAN_H─────●───── G_CAN
  1. 确认系统中确实出现了 can0 和 can1 两个网络接口,以防驱动未加载:
# should print can0 can1
ls /sys/class/net | grep can
# should see "successfully initialized"
dmesg | grep -i can
  1. 将两个 CAN 接口设置为 500 kbit/s 并上线,准备收发数据(为安全起见,将其设置为低电平): R22xx:
sudo ip link set can0 down
sudo ip link set can0 up type can bitrate 500000

R21xx:

sudo ip link set can1 down
sudo ip link set can1 up type can bitrate 500000
  1. 通信测试(单向) 使用 can-utils 发送和接收数据。

步骤 A:R21xx(CAN1)发送 → R22xx(CAN0)接收

  • R22xx:candump can0

  • R21xx:cansend can1 123#DE.AD.BE.EF.CA.FE.00.11

步骤 B:R22xx(CAN0)发送 → R21xx(CAN1)接收

  • R21xx:candump can1

  • R22xx:cansend can0 555#1122334455667788

USB Hub 测试

要测试 USB Hub,可以按照以下步骤进行:

  1. 运行 lsusb 命令检查是否检测到 USB Hub。该命令会列出所有已连接的 USB 设备,包括 Hub。
lsusb

运行该命令后,应会显示系统中已连接 USB 设备的信息,包括存在的 USB Hub。 如果 USB Hub 工作正常,你应当能在 lsusb 命令的输出中看到它的详细信息。如果未列出,可能是 Hub 或其与系统连接存在问题。在这种情况下,你可能需要对 USB Hub 或其连接进行排查。

RTC(实时时钟)测试

note

由于 reComputer 设备搭载了 CM5 芯片,设备上有两个 RTC 单元:① CM5 内置 RTC(rtc0);② reComputer 上组装的 RTC(rtc1)。

rtc0 无法保持时间数据。因此,要使用 RTC 功能,在设置时间时需要手动指定设备号 rtc1。

要测试实时时钟(RTC)功能,请按照以下步骤操作:

  1. 禁用自动时间同步:
sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd
  1. 设置时间: 将 RTC 设置为特定的日期和时间:
sudo hwclock --set --date "2025-7-17 12:00:00" -f /dev/rtc1
  1. 将 RTC 时间同步到系统 将系统时间更新为与 RTC 时间一致:
sudo hwclock --hctosys -f /dev/rtc1
  1. 检查 RTC 时间:
sudo hwclock -r -f /dev/rtc1

此命令将读取并显示存储在 RTC 中的时间。

  1. 断开 RTC 的电源,等待几分钟,然后重新接通电源并再次检查 RTC 时间,以确认它是否保持了正确的时间。

看门狗定时器测试

要执行看门狗测试,请按照以下步骤操作:

  1. 安装看门狗软件:
sudo apt install watchdog
  1. 编辑看门狗配置文件:
# make sure you install vim already, if haven't, can install by the command below
sudo apt-get install vim
sudo vim /etc/watchdog.conf

按如下方式修改配置:

watchdog-device = /dev/watchdog
# Uncomment and edit this line for hardware timeout values that differ
# from the default of one minute.
watchdog-timeout = 120
# If your watchdog trips by itself when the first timeout interval
# elapses then try uncommenting the line below and changing the
# value to 'yes'.
#watchdog-refresh-use-settimeout = auto
# If you have a buggy watchdog device (e.g. some IPMI implementations)
# try uncommenting this line and setting it to 'yes'.
#watchdog-refresh-ignore-errors = no
# ====================== Other system settings ========================
#
# Interval between tests. Should be a couple of seconds shorter than
# the hardware time-out value.
interval = 15
max-load-1 = 24
#max-load-5 = 18
#max-load-15 = 12
realtime = yes
priority = 1

你可以根据需要调整其他设置。

  1. 确保看门狗服务正在运行:
sudo systemctl start watchdog
  1. 要测试看门狗功能,执行以下命令来模拟系统死机:
sudo su

echo 1 > /proc/sys/kernel/sysrq
echo "c" > /proc/sysrq-trigger

此命令会触发内核崩溃,并应使看门狗重启系统。

  1. 监控系统,以确认其在指定的超时时间后重新启动。 这些步骤将帮助你测试并确保系统上看门狗定时器的功能正常。

通过 GPIO 控制蜂鸣器

与蜂鸣器对应的 GPIO 为 gpio627。输入以下脚本来打开/关闭蜂鸣器:

  1. 打开蜂鸣器:
echo 627 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio627/direction
echo 1 > /sys/class/gpio/gpio627/value
  1. 关闭蜂鸣器:关闭蜂鸣器:
echo 627 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio627/direction
echo 0 > /sys/class/gpio/gpio627/value

TPM 2.0

如果你将 TPM 2.0 模块连接到设备,以下代码可以帮助检查 TPM 连接情况。

ls /dev | grep tpm

输出结果说明:

如果你在输出中看到 tpm0tpmrm0,这意味着系统已检测到 TPM(可信平台模块)设备并可用。这表明 TPM 硬件已被识别且可访问,这是一个良好的信号。你可以在确认设备存在且可访问的前提下,继续使用与 TPM 相关的功能或应用程序。

ATECC608A

要与 ATECC608A 设备交互并生成随机序列号,请按照以下步骤操作:

  1. 克隆 atecc-util 仓库:
curl -LJO https://github.com/wirenboard/atecc-util/releases/download/v0.4.12/atecc-util_0.4.12_arm64.deb
  1. 将 .deb 软件包的内容解压到当前目录:
dpkg -x ./atecc-util_0.4.12_arm64.deb .
  1. 进入 atecc 目录:
cd usr/bin
  1. 生成随机序列号:
./atecc -b 10 -s 192 -c 'serial'

此命令指示 ATECC 工具使用插槽 10(-b 10),将序列号大小设置为 192 位 ( -s 192 ),并生成一个随机序列号 ( -c 'serial' )。输出将是生成的序列号,例如 "01235595d3d621f0ee"。 此过程使你能够与 ATECC608A 设备交互并执行各种操作,例如生成随机序列号。

与 EEPROM 交互

以下是与 EEPROM(电可擦可编程只读存储器)交互的命令:

  1. 为 EEPROM 设备文件授予完全权限(读、写和执行):
 sudo chmod 777 /sys/bus/i2c/devices/10-0050/eeprom
  1. 将字符串 "This is a test string" 写入 EEPROM 设备:
echo "This is a test string" > /sys/bus/i2c/devices/10-0050/eeprom
  1. 读取 EEPROM 设备的内容,并使用 hexdump 工具以 十六进制 格式显示:
cat /sys/bus/i2c/devices/6-0050/eeprom | hexdump -C

检查 SSD 检测情况

要列出包括 SSD 在内的磁盘,你可以使用 fdisk -l 命令。操作如下:

sudo fdisk -l

此命令将显示系统中连接的所有磁盘列表,如果 SSD 被正确检测到,也会包含在内。查找代表 SSD 的条目,它们通常以 /dev/sd 开头,后面跟一个字母(例如 /dev/sda, /dev/sdb, 等)。 确定与 SSD 对应的条目后,你就可以根据需要对其进行分区或格式化。

用于安全关机的 UPS

CPU 与直流电源输入之间的 GPIO6 用于在电源掉电时向 CPU 报警。然后 CPU 应该在超级电容能量耗尽前,通过脚本执行一些紧急操作并运行“$ shutdown”。 使用此功能的另一种方式是:当 GPIO 引脚状态变化时发起关机。给定的 GPIO 引脚被配置为输入按键,用于产生 KEY_POWER 事件。systemd-logind 通过处理该事件来发起关机。

  1. 硬件连接。

请确保 UPS 设备的 “CM5_UPS_DET” 引脚连接到 R21xx 设备的 GPIO16 引脚。

  1. 修改配置文件。
  • 打开终端。
  • 执行以下命令编辑配置文件:
sudo nano /boot/firmware/config.txt
  1. 在文件末尾添加以下内容:
dtoverlay=gpio-shutdown,gpio_pin=GPIO16,active_low=1

保存并退出编辑器(按 Ctrl+O 保存,Enter 确认,然后按 Ctrl+X 退出)。

  1. 准备 Python 脚本
  • 新建一个 Python 脚本文件:
cd ~
sudo nano ups_shutdown.py
  • 将以下代码复制并粘贴到该文件中:
import RPi.GPIO as GPIO
import time, os

num = 0

GPIO.setmode(GPIO.BCM)

# Set GPIO16 to input mode
# Add 500ms anti-shake time to stabilize the software
GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.add_event_detect(16, GPIO.FALLING, bouncetime=500)

while True:
if GPIO.event_detected(16):
print("...External power off...")
print("")

# Sync data to disk
os.system('sync')
print("...Data saving...")
print("")

# Sleep for 3 seconds
time.sleep(3)

# Synchronize data again
os.system('sync')

# Countdown 5 seconds
while num < 5:
print('----------')
s = 5 - num
print('---' + str(s) + '---')
num = num + 1
time.sleep(1)
print('----------')

# Execute shutdown command
os.system('sudo shutdown -h now')

保存并退出编辑器(按 Ctrl+O 保存,Enter 确认,然后按 Ctrl+X 退出)。

  1. 运行脚本。
  • 打开终端。
  • 执行以下命令来运行脚本:
sudo python3 ups_shutdown.py
note

使用 sudo 以确保脚本具有执行关机命令的足够权限。

  1. 模拟断电测试
  • 切断外部电源。
  • 观察系统是否会自动保存数据并关机。
  1. 验证结果
  • 重新接通电源。
  • 检查系统数据是否完整且能正常启动。
note
  1. 关于 UPS 功能,请联系我们获取更多信息。
  2. 报警信号为低电平有效。

AI 加速器

reComputer Industrial R21xx 上的 M.2 M-KEY 2240 插槽用于安装 PCIE M.2 AI 加速器。而 R21xx-12 系列已预装一块 Hailo-8 M.2 AI 加速卡,性能最高可达 26TOPS。 如果你购买的是 R21xx-10 系列产品,则需要另行购买 Hailo 的 NPU 模块以启用 AI 功能。 设备已预装 Hailo 加速器驱动,因此你可以直接使用并运行测试用例:

  1. 进入测试用例目录
cd /mnt/hailo-rpi5-examples/
  1. 启动虚拟环境
source ./setup_env.sh
  1. 运行简单检测示例
python basic_pipelines/detection_simple.py

要关闭应用程序,请按 Ctrl+C。 这是检测示例的轻量级版本,主要侧重于在尽量减小 CPU 负载的同时展示 Hailo 的性能。通过尽量减少视频处理任务,简化了内部 GStreamer 视频处理管线,并使用 YOLOv6 Nano 模型。

note

如果你购买的 reComputer 不包含 Hailo-8,并且正在考虑购买 Hailo 设备进行集成,请参考官方 Hailo 文档 (https://github.com/hailo-ai) 来配置固件和环境,并运行示例以验证设备可以正常使用。

PoE IP 摄像机

reComputer Industrial R22xx 系列专为高密度 IP 视频流和工业自动化而设计。它具有 5 个物理千兆以太网端口,采用混合总线架构,以确保最大带宽和稳定性。

内部总线分布:

  • eth0(原生):直接连接到 SoC。它提供最低延迟,推荐用作主上行链路(WAN)管理端口
  • eth1(USB 扩展):位于原生端口旁边的独立端口。通过 USB 3.0 总线扩展,并支持 PoE 输出
  • eth2、eth3、eth4(PCIe 扩展):三个连续的端口。通过 PCIe 总线扩展,并支持 PoE 输出
  1. 技术规格
类别规格备注
端口总数1(原生)+ 4(扩展)5x RJ45 千兆以太网
PoE 模式Alternative A(模式 A)通过数据线对(1/2, 3/6)供电
每端口 PoE 输出12W(最大)针对标准 IP 摄像机优化
并行 PoE 输出所有 4 个端口同时支持 12W需要足够的系统电源输入
电源输入范围9V - 36V DC内部升压电路将电压升至 48V 以用于 PoE
安全特性过流和欠压保护严禁热插拔
  1. 关键安全指南
  • 禁止热插拔

    警告:在 PoE 供电处于激活状态(GPIO 为高电平)时插拔以太网线,可能会导致瞬态浪涌,从而损坏 LAN7800 或 PCIe 桥接芯片。务必遵循“先连接,再上电”原则。

  • 电源推荐

    虽然设备支持 9V 输入,但我们建议使用 24V、至少 72W(3A)能力的工业电源,以确保在 4 个 PoE 端口全部满载(4 × 12W)时具有较高的转换效率。

  1. 配置步骤
  • 步骤 1:禁用冲突服务 为防止桌面级网络管理器覆盖工业静态 IP 设置,请禁用 NetworkManager
# Switch to systemd-networkd
sudo systemctl disable --now NetworkManager
sudo systemctl mask NetworkManager
sudo systemctl enable --now systemd-networkd
  • 步骤 2:启用 PoE 自动供电(GPIO) 在 /etc/rc.localexit 0 行之前添加以下命令,以确保开机时启用 PoE 供电。
# Export and set PoE Enable Pin (Example: GPIO 532)
echo 652 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio652/direction
echo 1 > /sys/class/gpio/gpio652/value
  • 步骤 3:多接口 IP 部署 为每个端口分配独立子网,并使用 RouteMetric 确保 eth0 仍然是访问互联网的默认网关。
# Configure eth0 (WAN/DHCP) - Highest Priority
sudo bash -c 'cat > /etc/systemd/network/10-eth0.network <<EOF
[Match]
Name=eth0
[Network]
DHCP=yes
[DHCPv4]
RouteMetric=10
EOF'

# Configure eth1-eth4 (Static IP Segments)
for i in {1..4}; do
sudo bash -c "cat > /etc/systemd/network/20-eth$i.network <<EOF
[Match]
Name=eth$i
[Network]
Address=10.0.$((i+2)).10/24
[IPv4]
RouteMetric=$((100+i))
EOF"
done
  1. 验证与故障排查
  • 检查总线连通性 使用 lspcilsusb 来验证系统是否识别到所有控制器:
  • PCIe 扩展端口(eth2-4):运行 lspci | grep Ethernet
  • USB 扩展端口(eth1):运行 lsusb -t 并查找 lan78xx 驱动。
  1. 常见问题
  • 问:为什么我的摄像机一直在重启?
    • 答:检查摄像机的功耗是否超过 12W。高功率云台摄像机或带有强红外补光灯的摄像机可能会超过此限制。
  • 问:我可以使用 12V DC 输入来供 PoE 吗?
    • 答:可以。内部电路会将 12V 升压到 48V。但请确保你的 12V 电源能够承受较大的电流,因为在较低输入电压下转换损耗更高。
  • 问:接口名称不是 eth1-4。
    • 答:使用 ip link 查找实际的内核名称(例如 enp1s0),并在 .network 文件中更新 Name= 字段。
  1. 4 通道 PoE 摄像机支持状态:

reComputer R22 与 reCamera

本指南提供了将 reCamera(基于 RISC-V 平台、面向快速边缘 AI 部署的开源模块化 AI 摄像机)通过 PoE 连接到 reComputer R22 的分步说明。内容涵盖使用 Node-RED 部署 RTSP 流,以及在 R22 上预览实时画面。

  1. 硬件连接与初始化
  • 兼容型号: reCamera 系列(PoE 版本,例如 LH-AR01)。
  • 物理连接: 使用标准以太网线将 reCamera 连接到 R22 上任意一个 PoE 端口(eth1-eth4)。
  • 启用 PoE 供电: 在 R22 终端中运行以下命令以启用 48V 输出:
    # Enable GPIO 652
    echo 652 > /sys/class/gpio/export
    echo out > /sys/class/gpio/652/direction
    echo 1 > /sys/class/gpio/652/value
  1. reCamera 配置(一键 Node-RED 导入)

使用预配置的 flows.json 快速部署带身份验证的 RTSP 流。

  • 访问仪表盘: 打开浏览器并访问 http://10.0.3.200:1880(reCamera 默认 IP)。
  • 导入配置:
    • 点击右上角的菜单图标 -> Import
    • 上传 flows.json 文件并点击 Import
  • 自定义身份验证(必需):
    • 双击流程中的 RTSP Output 节点。
    • Authentication 部分设置你的凭据:
      • Username: seeed
      • Password: seeed
  • 部署: 点击右上角红色的 Deploy 按钮。
  1. 在 R22 上预览视频流

由于 R22(基于 CM4/CM5)支持硬件解码,我们推荐使用 VLC 或 FFplay 进行验证。

  1. 方案 A:使用 VLC 图形界面(推荐)
  • 在 R22 终端中输入 vlc 打开播放器。
  • 进入 Media -> Open Network Stream
  • 输入带身份验证的 RTSP URL:
    rtsp://seeed:[email protected]:554/live
  • 点击 Play
  1. 方案 B:使用命令行(快速测试)

直接复制并运行以下命令:

ffplay -fflags nobuffer -flags low_delay rtsp://seeed:[email protected]:554/live

  1. 故障排查
问题可能原因解决方案
无法 Ping 通 10.0.3.200R22 内部 IP 冲突检查 eth3/eth4 是否都使用 10.0.3.10。手动修改其中一个。
reCamera 无法启动未启用 PoE 供电确保 GPIO 652 被设置为 1,且输入电源大于 12V/3A。
视频卡顿/延迟网络或 MTU 问题确保在 R22 与 reCamera 之间没有大量广播流量。

技术支持与产品讨论

感谢你选择我们的产品!我们将为你提供多种支持,以确保你在使用我们产品的过程中尽可能顺利。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...