Skip to main content

reComputer Industrial R20xxの設定

概要

デバイスのインストール後、reComputer Industrial R20xxシリーズでハードウェアコンポーネントを設定およびテストする方法を学びます。このwikiでは、GPIOマッピング、USER LEDテスト、SPI通信、Wi-FiおよびBluetoothスキャン、LoRa®、4G、5G、Mini-PCIe経由のZigbee、RS485、RS232、DI/DOテスト、安全なシャットダウンのためのUPSなどについて説明します。

GPIOマッピングとオフセットの照会

GPIOマッピングとオフセットを照会するには、以下の手順に従ってください:

  1. 以下のコマンドをコピーして貼り付け、GPIOマッピングを照会します:
cat /sys/kernel/debug/gpio

このコマンドはGPIOマッピングとオフセットを表示し、GPIOピンのデバッグや設定に必要な情報を提供します。

USER LEDテスト

ユーザーが使用できる赤、青、緑の3色の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を消灯するには、以下を使用します:

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、信号強度、暗号化タイプを表示します。

Bluetoothスキャン

Bluetoothデバイスをスキャンするには、以下の手順に従ってください:

Bluetooth制御インターフェースを開く:

sudo bluetoothctl

このコマンドはBluetooth制御インターフェースを開きます。そこから、近くのBluetoothデバイスをスキャンするための追加コマンドを実行できます。

スキャンを有効にする:

scan on

このコマンドは近くのBluetoothデバイスのスキャンを開始します。その後、bluetoothctlインターフェース内で他のコマンドを使用して、ペアリングや接続などのBluetoothデバイスとの相互作用を行うことができます。

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. packet_forwarder/reset_lgw.shファイルを追加します:
sudo nano packet_forwarder/reset_lgw.sh

実行コードを追加します:

#!/bin/sh

# This script is intended to be used on SX1302 CoreCell platform, it performs
# the following actions:
# - export/unpexort GPIO23 and GPIO18 used to reset the SX1302 chip and to enable the LDOs
# - export/unexport GPIO22 used to reset the optional SX1261 radio used for LBT/Spectral Scan
#
# Usage examples:
# ./reset_lgw.sh stop
# ./reset_lgw.sh start

# GPIO mapping has to be adapted with HW
#

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=623 # AD5338R reset (full-duplex CN490 reference design)

WAIT_GPIO() {
sleep 0.1
}

init() {
# setup GPIOs
echo "$SX1302_RESET_PIN" > /sys/class/gpio/export; WAIT_GPIO
echo "$SX1261_RESET_PIN" > /sys/class/gpio/export; WAIT_GPIO
echo "$SX1302_POWER_EN_PIN" > /sys/class/gpio/export; WAIT_GPIO
echo "$AD5338R_RESET_PIN" > /sys/class/gpio/export; WAIT_GPIO

# set GPIOs as output
echo "out" > /sys/class/gpio/gpio$SX1302_RESET_PIN/direction; WAIT_GPIO
echo "out" > /sys/class/gpio/gpio$SX1261_RESET_PIN/direction; WAIT_GPIO
echo "out" > /sys/class/gpio/gpio$SX1302_POWER_EN_PIN/direction; WAIT_GPIO
echo "out" > /sys/class/gpio/gpio$AD5338R_RESET_PIN/direction; WAIT_GPIO
}

reset() {
echo "CoreCell reset through GPIO$SX1302_RESET_PIN..."
echo "SX1261 reset through GPIO$SX1302_RESET_PIN..."
echo "CoreCell power enable through GPIO$SX1302_POWER_EN_PIN..."
echo "CoreCell ADC reset through GPIO$AD5338R_RESET_PIN..."

# write output for SX1302 CoreCell power_enable and reset
echo "1" > /sys/class/gpio/gpio$SX1302_POWER_EN_PIN/value; WAIT_GPIO

echo "1" > /sys/class/gpio/gpio$SX1302_RESET_PIN/value; WAIT_GPIO
echo "0" > /sys/class/gpio/gpio$SX1302_RESET_PIN/value; WAIT_GPIO

echo "0" > /sys/class/gpio/gpio$SX1261_RESET_PIN/value; WAIT_GPIO
echo "1" > /sys/class/gpio/gpio$SX1261_RESET_PIN/value; WAIT_GPIO

echo "0" > /sys/class/gpio/gpio$AD5338R_RESET_PIN/value; WAIT_GPIO
echo "1" > /sys/class/gpio/gpio$AD5338R_RESET_PIN/value; WAIT_GPIO
}

term() {
# cleanup all GPIOs
if [ -d /sys/class/gpio/gpio$SX1302_RESET_PIN ]
then
echo "$SX1302_RESET_PIN" > /sys/class/gpio/unexport; WAIT_GPIO
fi
if [ -d /sys/class/gpio/gpio$SX1261_RESET_PIN ]
then
echo "$SX1261_RESET_PIN" > /sys/class/gpio/unexport; WAIT_GPIO
fi
if [ -d /sys/class/gpio/gpio$SX1302_POWER_EN_PIN ]
then
echo "$SX1302_POWER_EN_PIN" > /sys/class/gpio/unexport; WAIT_GPIO
fi
if [ -d /sys/class/gpio/gpio$AD5338R_RESET_PIN ]
then
echo "$AD5338R_RESET_PIN" > /sys/class/gpio/unexport; WAIT_GPIO
fi
}

case "$1" in
start)
term # just in case
init
reset
;;
stop)
reset
term
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac

exit 0

ctrl+xを押して終了し、yを押して変更を保存し、Enterを押してコマンドラインページに戻ります。

  1. 設定コードを変更します:
sudo vim ./tools/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)

18、29、35、42、53、54行目をそれぞれコメントアウトします:

......
# echo "$AD5338R_RESET_PIN" > /sys/class/gpio/export; WAIT_GPIO
......
# echo "out" > /sys/class/gpio/gpio$AD5338R_RESET_PIN/direction; WAIT_GPIO
......
# echo "CoreCell ADC reset through GPIO$AD5338R_RESET_PIN..."
......
# echo "0" > /sys/class/gpio/gpio$AD5338R_RESET_PIN/value; WAIT_GPIO
# echo "1" > /sys/class/gpio/gpio$AD5338R_RESET_PIN/value; WAIT_GPIO

ctrl+xを押して終了し、yを押して変更を保存し、Enterを押してコマンドラインページに戻ります。

  1. global_conf.json.sx1250.US915設定ファイル内のLoraWAN®モジュールのデフォルトSPIポートを置き換えます(設定ファイルは使用しているモジュールに基づいて選択されます):
sudo nano packet_forwarder/global_conf.json.sx1250.US915

com_pathパラメータを変更し、***"com_path": "/dev/spidev0.0""com_path": "/dev/spidev2.0"***に変更します。

  1. コードをコンパイルします:
sudo make

これらの手順により、LoRa® SPIが設定され、指定された設定ファイルでパケットフォワーダーが実行されます。

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=645
POWER_PIN=639

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 643 > export
echo out > gpio643/direction
echo 0 > gpio643/value

ファイルを実行します:

sudo ./power_4g.sh

10-15秒後(モジュールの電源投入とUSB列挙に時間がかかります)、デバイスノードが表示されるかどうかを確認します:

ls /dev/ttyUSB*

/dev/ttyUSB0が出力されます。 GPIOの実際の動作を確認します:

cat /sys/class/gpio/gpio645/value # should be 0
cat /sys/class/gpio/gpio639/value # should be 0

両方の値が0 → スクリプトが正しくプルダウンされ、モジュールが動作状態にあります。 minicomに入ってコマンドを送信します:

sudo minicom -D /dev/ttyUSB2 -b 115200

Ctrl+A,Z,Eを順番に押します。最初にATを送信して接続されているかどうかをテストします。OKが表示されれば、接続は成功です。 以下のコマンドを実行すると、モジュールが自動的に再起動します。minicomを終了しない場合、対応する設定情報を確認できます。 ECMダイヤルアップインターネットアクセス:

AT+QCFG="usbnet",1

最後の行にOKが表示されるまで、成功となります。

注意 デバイスはしばらく待つ必要があり、その後ifconfigでusb0のIPアドレスを確認できます。

ネットワーク状態と通信をテストします:

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

Mini-PCIe経由のZigbee

2つの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. ルーター(2番目のZigbeeモジュール)のシリアルポートを開きます: cutecomの別のインスタンスを開き、前と同じ設定で2番目のシリアルポート用に設定します。 以下の手順に従って2番目の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'(設定)を使用して送信電力をテストします。 各Zigbeeモジュールの正しいシリアルポートで***/dev/ttyUSB***を置き換えることを確認してください。これらの手順に注意深く従って、2つのモジュール間のZigbee通信を正常にテストしてください。

RS485テスト

reComputer Industrial R20xxには3つのRS485ポートが含まれています。以下は対応するCOMポートデバイスファイルです:

RS485ポート数COMポートシルクスクリーンラベルデバイスファイル
RS485-2COM2A2/B2/GND2/dev/ttyACM1
RS485-3COM3A3/B3/GND3/dev/ttyACM2
RS485-4COM4A4/B4/GND4/dev/ttyACM3

RS485機能をテストするには、以下の手順に従ってください(RS485_1とRS485_2を例とします):

  1. RS485_1とRS485_2のAとBを接続してください。
  2. 2つのターミナルウィンドウでそれぞれminicomを開きます:
sudo minicom -D /dev/ttyACM1
sudo minicom -D /dev/ttyACM2
note

拡張ボードがある場合、番号を1つ後ろにずらす必要があります。例えば***/dev/ttyAcM2***、/dev/ttyAcM3

  1. 開いた両方のACMで以下の操作を実行する必要があります:
  • Ctrl+Aを押してからZを押すと、Minicomコマンドサマリーインターフェースが表示されます:

  • 再度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 R20xxには1つのRS232ポートが含まれており、対応するCOMポートとデバイスファイルは以下のとおりです:

RS232ポート数COMポートシルクスクリーンラベルデバイスファイル
RS232-1COM1RX1/TX1/GND1/dev/ttyACM0

RS232は全二重通信であるため、RS232のTXとRXを直接短絡してループバックテストを実行します。

2つのターミナルを開く必要があります。拡張ボードが接続されている場合は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 R20xxには8つのDIポートが含まれており、ユーザーは実際のニーズに応じてこれらのポートを設定できます。

ポート数DIポート対応する拡張GPIO
8DI1GPIO588
DI2GPIO589
DI3GPIO590
DI4GPIO595
DI5GPIO573
DI6GPIO574
DI7GPIO575
DI8GPIO576

DIポートの入力タイプはPNPです。入力電圧5VDC~24VDC、電流1000mAをサポートします。 DIの機能をテストするには、以下の手順に従ってテストできます:

  1. reComputer Industrial R20xxの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 R20xxには8つのDOポートが含まれており、ユーザーは実際のニーズに応じてこれらのポートを設定できます。

ポート数DIポート対応する拡張GPIO
8DO1GPIO638
DO2GPIO637
DO3GPIO590
DO4GPIO636
DO5GPIO635
DO6GPIO577
DO7GPIO594
DO8GPIO596

DOポートの出力タイプはトランジスタです。出力電圧60VDC未満、電流容量500mAをサポートします。 DOの機能をテストするには、以下の手順に従ってテストできます:

  1. reComputer Industrial R20xxの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になります。

USBハブテスト

USBハブをテストするには、以下の手順を使用できます:

  1. lsusbコマンドを実行してUSBハブが検出されているかを確認します。このコマンドは、ハブを含むすべての接続されたUSBデバイスをリストします。
lsusb

このコマンドを実行すると、存在するUSBハブを含む、システムに接続されたUSBデバイスに関する情報が表示されます。 USBハブが正常に機能している場合、lsusbコマンドの出力にその詳細がリストされているはずです。リストされていない場合、ハブまたはシステムへの接続に問題がある可能性があります。そのような場合は、USBハブまたはその接続のトラブルシューティングが必要になる場合があります。

RTC(リアルタイムクロック)テスト

リアルタイムクロック(RTC)機能をテストするには、以下の手順に従います:

  1. 自動時刻同期を無効にします:
sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd
  1. 時刻を設定します: RTCを特定の日付と時刻に設定します:
sudo hwclock --set --date "2025-7-17 12:00:00"
  1. RTC時刻をシステムに同期します システム時刻をRTC時刻に合わせて更新します:
sudo hwclock --hctosys
  1. RTC時刻を確認します:
sudo hwclock -r

このコマンドは、RTCに保存されている時刻を読み取って表示します。

  1. RTCから電源を切断し、数分待ってから再接続し、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(Trusted Platform Module)デバイスが検出され、システムで利用可能であることを意味します。これは、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ユーティリティを使用して16進数形式で表示します:
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とDC電源入力の間のGPIO6は、電源が落ちたときにCPUに警告するために使用されます。その後、CPUはスーパーキャパシタのエネルギーが枯渇する前にスクリプト内で緊急の処理を行い、「$ shutdown」を実行する必要があります。 この機能を使用する別の方法は、GPIOピンが変化したときにシャットダウンを開始することです。指定されたGPIOピンは、KEY_POWERイベントを生成する入力キーとして設定されます。このイベントは、systemd-logindによってシャットダウンを開始することで処理されます。

  1. ハードウェア接続。

UPSデバイスの***'CM5_UPS_DET'***ピンがR20xxデバイスの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. アラーム信号はアクティブLOWです。

AIアクセラレータ

reComputer Industrial R20xxのM.2 M-KEY 2280スロットは、PCIE M.2 AIアクセラレータに対応するよう設計されています。R20xx-12シリーズには、最大26TOPSのHailo-8 M.2 AIアクセラレーションが事前にインストールされています。 R20xx-10シリーズ製品をご購入の場合、AI機能を有効にするためにHailoのNPUモジュールを購入する必要があります。 デバイスには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)を参照してファームウェアと環境を設定し、例を実行してデバイスが正常に使用できることを確認してください。

技術サポート&製品ディスカッション

弊社製品をお選びいただき、ありがとうございます!弊社製品での体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。さまざまな好みやニーズに対応するため、複数のコミュニケーションチャネルを提供しています。

Loading Comments...