Skip to main content

配置 reComputer Industrial R22xx

概述

在安装好设备后,了解如何在 reComputer Industrial R22xx 系列上配置和测试硬件组件。本 Wiki 涵盖 GPIO 映射、USER LED 测试、SPI 通信、Wi-Fi 和蓝牙扫描、LoRa®、4G、5G、通过 Mini-PCIe 的 Zigbee、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

基于 Mini-PCIe 的 Zigbee

要测试两个 Zigbee 模块之间的 Zigbee 通信,请按照以下步骤操作:

  1. 检查可用串口

使用以下命令检查可用串口:

cat /dev/ttyUSB*

安装串口通信工具

  1. 安装串口通信工具:
sudo apt-get install cutecom
  1. 为协调器(第一个 Zigbee 模块)打开串口:
  • 打开 cutecom 工具,并为第一个串口进行配置:
  • 波特率:115200
  • 在界面底部勾选 "Hex output" 选项。
  • 按照以下步骤配置第一个 Zigbee 模块:
  • 设置为协调器:发送命令 ‘55 04 00 05 00 05’,期望响应 ‘55 04 00 05 00 05’
  • 复位设备:按下复位按钮或发送命令 ‘55 07 00 04 00 FF FF 00 04’
  • 建立网络:发送命令 ‘55 03 00 02 02’
  1. 为路由器(第二个 Zigbee 模块)打开串口: 再打开一个 cutecom 实例,并使用与之前相同的设置为第二个串口进行配置。 按照以下步骤配置第二个 Zigbee 模块:
  • 设置为路由器:发送命令 ‘55 04 00 05 01 04’,期望响应 ‘55 04 00 05 00 05’
  • 复位设备:按下复位按钮或发送命令 ‘55 07 00 04 00 FF FF 00 04’
  • 建立网络:发送命令 ‘55 03 00 02 02’
  1. 检查设备状态: 发送命令 ‘55 03 00 00 00’ 来检查设备状态。期望收到类似 ‘55 2a 00 00 00 01 XX XX XX XX’ 的响应,其中 ‘XX’ 表示设备信息。
  2. 进入透传模式: 如果建网成功,通过发送命令 55 07 00 11 00 03 00 01 13 进入透传模式。两个模块都应处于透传模式以实现直接通信。要退出透传模式,发送 "+++"。
  3. 补充说明:
  • 如果路由器配置失败,设备可能已经是协调器。可通过命令 '55 07 00 04 02 xx xx xx' 退出网络。
  • 使用命令 '55 04 0D 00 00 0D'(查询)和 '55 04 0D 01 XX XX'(设置)测试发射功率。 请确保将 /dev/ttyUSB 替换为每个 Zigbee 模块对应的正确串口。请仔细按照这些步骤操作,以成功测试两个模块之间的 Zigbee 通信。

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
DO3GPIO590
DO4GPIO636
DO5GPIO635

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(实时时钟)测试

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

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

该命令将读取并显示存储在 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

本指南提供了通过 PoE 将 reCamera(一款基于 RISC-V 平台、面向快速边缘 AI 部署的开源模块化 AI 摄像机)连接到 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...