メインコンテンツまでスキップ

reComputer R1100 を設定する

概要

デバイスを取り付けた後に、reComputer R1100 シリーズ上のハードウェアコンポーネントを設定およびテストする方法を学びます。この Wiki では、GPIO マッピング、USER LED テスト、SPI 通信、Wi-Fi と Bluetooth スキャン、LoRa®、4G、RS485、RS232、DI/DO テスト、安全なシャットダウンのための UPS などを扱います。

GPIO マッピングとオフセットを確認する

GPIO のマッピングとオフセットを確認するには、次の手順に従います。

  • ターミナルで次のコマンドを実行します
cat /sys/kernel/debug/gpio

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

LED インジケータを制御する

reComputer R1100 には、赤、青、緑の 3 つの LED インジケータが用意されています。次のコマンドを使用して制御できます。

1. LED ディレクトリへ移動する

cd /sys/class/leds/
ls

これにより、利用可能な LED が一覧表示されます。

2. brightness ファイルへ書き込んで LED を有効にする
まず スーパーユーザーモード に切り替えます。

sudo su

次に、LED を点灯させます。

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 通信のテスト

SPI 通信を確認するには、TPM モジュールの MISO ピンと MOSI ピンをショートさせることでループバックテストを実行できます。この方法により、MOSI(Master Out, Slave In)から送信されたデータが、MISO(Master In, Slave Out)で受信されることを確認できます。

ステップバイステップガイド

1. インターネットに接続する
先に進む前に、デバイスがネットワークに接続されていることを確認します。

2. spidev-test リポジトリをクローンする

git clone https://github.com/rm-hull/spidev-test.git

3. ディレクトリに移動する

cd spidev-test

4. spidev_test.c プログラムをコンパイルする

gcc spidev_test.c -o spidev_test

5. SPI テストを実行する

./spidev_test -D /dev/spidev0.1 -v -p "hello"
  • -D /dev/spidev0.1 → 使用する SPI デバイスを指定します
  • -v → 冗長出力を有効にします
  • -p "hello" → 文字列 "hello" を送信します

6. ループバックテスト(任意)

  • テストを実行する前に、TPM モジュールの MISO ピンと MOSI ピンをショートさせます
  • SPI バスが正常に動作していれば、送信したデータが正しく受信されていることが出力に表示されます。

Wi-Fi スキャン

利用可能な Wi-Fi ネットワークとその詳細を一覧表示するには、次を実行します。

sudo iwlist wlan0 scan
  • このコマンドは周辺のすべての Wi-Fi ネットワークをスキャンし、その SSID、信号強度、暗号化方式を表示します。

Bluetooth スキャン

Bluetooth デバイスをスキャンするには、次の手順に従います。

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

sudo bluetoothctl

スキャンを有効にする:

scan on
  • これにより、周辺の Bluetooth デバイスのスキャンが開始されます。

Mini-PCIe 経由の LoRa®

LoRa® SPI 設定

SX1302_HAL リポジトリをクローンします。

cd ~
git clone https://github.com/Lora-net/sx1302_hal

クローンしたディレクトリに移動します。

cd sx1302_hal

設定ファイルを編集します。

I2C デバイスの設定ファイルを開きます。

sudo vim ./libloragw/inc/loragw_i2c.h

次の行を変更します。

#define I2C_DEVICE "/dev/i2c-1"

次のようにします。

#define I2C_DEVICE "/dev/i2c-3"

コードをコンパイルします。

sudo make

リセットスクリプトを編集します。

reset_lgw.sh スクリプトを開きます。

sudo vim ./tools/reset_lgw.sh

ピン設定を更新します。

SX1302_RESET_PIN=580    # SX1302 reset  
SX1302_POWER_EN_PIN=578 # SX1302 power enable
SX1261_RESET_PIN=579 # SX1261 reset (LBT/Spectral Scan)

リセットスクリプトをパケットフォワーダーディレクトリにコピーします。

cp ~/sx1302_hal/tools/reset_lgw.sh ~/sx1302_hal/packet_forwarder/

LoRaWAN® 設定ファイルでデフォルトの SPI ポートを更新します。

global_conf.json.sx1250.US915 ファイルを編集します。

sed -i 's/spidev0.0/spidev0.1/g' global_conf.json.sx1250.US915

LoRaWAN® モジュールを起動します。

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

LoRa® USB 設定

LoRa® SPI の代わりに LoRa® USB モジュールを使用している場合は、次の手順に従ってください。最後のステップを除き、ほとんどのコマンドは LoRa® SPI の場合と同じです。

SX1302 リセットピンをプルアップする

echo 1 > /sys/class/gpio/gpio580/value

LoRaWAN® USB モジュールを起動する

cd ~/sx1302_hal/packet_forwarder
sudo ./lora_pkt_fwd -c global_conf.json.sx1250.EU868.USB

これで LoRa® USB は reComputer R1100 上で設定され、動作しています。

Mini-PCIe 経由の 4G セルラー

minicom を介して AT コマンドを使用し 4G モジュールと通信するには、次の手順に従います。

適切なシリアルポートとボーレートで Minicom を開きます。

sudo minicom -D /dev/ttyUSB2 -b 115200

このコマンドは、指定したシリアルポート(/dev/ttyUSB2)と 115200 のボーレートで Minicom を開きます。

4G モジュールに AT コマンドを送信します。

Minicom を開いたら、4G モジュールに AT コマンド を送信し始めることができます。例えば:

AT

このコマンドは、モジュールが応答しているかどうかを確認します。モジュールが正常に動作していれば、"OK" という応答が返ってきます。

4G モジュールを使用して電話番号に発信します。

電話番号に発信するには、電話番号の前に ATD コマンドを付けて使用します。

ATD<phone_number>;
  • <phone_number> を、発信したい電話番号に置き換えてください。
  • 電話番号の終わりを示すために、コマンドの末尾に セミコロン (;) を必ず付けてください。

RS485 テスト

reComputer R1100 には 2 つの RS485 ポートが搭載されています。以下は、それぞれに対応する COM ポートデバイスファイル です。

RS485 ポートCOM ポートシルク印字ラベルデバイスファイル
RS485_1COM1A1 / B1 / GND/dev/ttyACM0
RS485_2COM2A2 / B2 / GND/dev/ttyACM1

RS485 機能テスト手順

RS485 ポートを接続する

物理的に RS485_1(A & B)RS485_2(A & B) に接続します。

RS485 テストプログラムを実行する

2 つの RS485 ポート間でのデータ送信を検証し、速度を測定するためのテストプログラムを提供しています。

次のコマンドを実行して、テストプログラムをダウンロードして実行します。

git clone https://github.com/ackPeng/R1100_TEST.git
cd R1100_TEST
gcc -o serial_test serial_test.c
./serial_test /dev/ttyACM0 /dev/ttyACM1 115200

テスト内容

  • このプログラムは、1MB のデータRS485_1 から RS485_2 へ送信します。
  • 完了時間を記録し、実際のボーレートを計算します。
  • 注意: 実際のボーレートは理論値よりわずかに低くなる場合がありますが、これは想定内です。

これらの手順に従って、reComputer R1100 上で RS485 通信を確実に検証してください。

RS232 テスト

reComputer R1100 には 2 つの RS232 ポートが搭載されています。以下は、それぞれに対応する COM ポートとデバイスファイルです。

RS232 ポートCOM ポートピンマッピングデバイスファイル
RS232_1COM3RX3/TX3/GND/dev/ttyACM2
RS232_2COM4RX4/TX4/GND/dev/ttyACM3

RS232 通信テスト

RS232 の機能をテストするには、次の手順に従います。

  1. ポートを接続する:

    • RS232_1 の TXRS232_2 の RX に接続します。
    • RS232_1 の RXRS232_2 の TX に接続します。
  2. テストプログラムを実行する:

    • テストプログラムのリポジトリをクローンします。

      git clone https://github.com/ackPeng/R1100_TEST.git
    • ディレクトリに移動します。

      cd R1100_TEST
    • テストプログラムをコンパイルします。

      gcc -o serial_test serial_test.c
    • テストを実行します。

      ./serial_test /dev/ttyACM2 /dev/ttyACM3 115200

このテストでは、RS232_1 から RS232_2 へ 1MB のデータを送信し、完了時間とボーレートを測定します。実際のボーレートは理論値よりわずかに低くなる場合がありますが、これは正常です。

DI(デジタル入力)テスト

reComputer R1100 には 2 つのデジタル入力(DI)ポートがあり、ユーザーの要件に応じて設定できます。

DI ポート数DI ポート対応する拡張 GPIO
2DI1GPIO530
DI2GPIO531

DI ポート仕様

  • 入力タイプ: PNP
  • 対応入力電圧: 5VDC – 24VDC
  • 電流: 最大 1000mA

DI 機能テスト手順

適切な接続を確認する

reComputer R1100 の DI ポート外部負荷に正しく接続されていること、また G_D ポート電源の GND に接続されていることを確認してください。

GPIO ステータスを確認する

DI1 に対応する GPIO530 のステータスを確認するには、次のコマンドを実行します。

echo 530 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio530/direction
cat /sys/class/gpio/gpio530/value

GPIO 値の解釈

  • 外部レベルが HIGH の場合/sys/class/gpio/gpio530/value の出力は 0 になります。
  • 外部レベルがLOWの場合/sys/class/gpio/gpio530/value の出力は 1 になります。

DO(デジタル出力)

reComputer R1100 には 2つのデジタル出力(DO)ポート が搭載されており、ユーザーの要件に応じて設定できます。

DOポート数DOポート対応する拡張GPIO
2DO1GPIO532
DO2GPIO533

DOポート仕様

  • 出力タイプ: トランジスタ
  • 対応出力電圧: 最大60VDC
  • 電流容量: 500mA

DO機能のテスト手順

正しい接続を確認する
reComputer R1100 の DOポート外部負荷 に正しく接続されていることを確認します。

DOポートはオープンコレクタ出力であり、駆動能力を持たないため、外部抵抗を使用して電源にプルアップしてください。

出力レベルを設定する
出力を HIGH または LOW に設定するには、次のコマンドを実行します。

echo 532 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio532/direction
echo 1 > /sys/class/gpio/gpio532/value # Set output to HIGH
echo 0 > /sys/class/gpio/gpio532/value # Set output to LOW

USBハブのテスト

USBハブ の動作を確認するには、次の手順に従います。

USBハブが検出されているか確認する

ハブを含む、接続されているすべてのUSBデバイスを一覧表示するには、次のコマンドを実行します。

lsusb

USBハブ検出の確認

  • このコマンドは、USBハブ を含むシステムに接続されているすべての USBデバイス の情報を表示します。
  • USBハブが 正常に動作している場合、その情報がコマンド出力に表示されます。
  • ハブが 一覧に表示されない場合ハブ自体またはシステムとの接続 に問題がある可能性があります。

トラブルシューティング(USBハブが検出されない場合)

  • USBハブの 物理的な接続 を確認します。
  • ハブを 別のUSBポート に接続してみます。
  • デバイスを再起動し、lsusb を再実行します。
  • 問題が解決しない場合、ハブが故障している可能性があります。

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

reComputer R1100 上の RTC機能 を確認するには、次の手順に従います。

自動時刻同期を無効化する

RTCをテストする前に、自動時刻同期を停止して無効化し、競合を避けます。

sudo systemctl stop systemd-timesyncd  
sudo systemctl disable systemd-timesyncd

RTC時刻を手動で設定する

RTCに特定の日付と時刻を設定します(例:2024年11月12日 12:00 PM)。

sudo hwclock --set --date "2024-11-12 12:00:00"

RTC時刻をシステムに同期する

システム時刻をRTC時刻に合わせて更新します。

sudo hwclock --hctosys

RTC時刻を確認する
RTCに保存されている現在時刻を確認します。

sudo hwclock -r

このコマンドはRTC時刻を表示します。

RTC保持のテスト

  • RTCから 電源を切り離します

  • 数分待ちます

  • 電源を再接続 し、次のコマンドでRTC時刻を再度確認します。

    sudo hwclock -r
  • 時刻が正しいままであれば、RTCは正常に動作しています。

ウォッチドッグタイマーのテスト

reComputer R1100 上の ウォッチドッグタイマー をテストするには、次の手順に従います。

ウォッチドッグソフトウェアをインストールする

ウォッチドッグパッケージがインストールされていることを確認します。

sudo apt install watchdog

ウォッチドッグを設定する

ウォッチドッグ設定ファイル を編集します。

sudo apt-get install vim  # Install Vim if not already installed  
sudo vim /etc/watchdog.conf

設定を次のように変更します。

watchdog-device = /dev/watchdog  

# Set the hardware timeout (default is 1 minute)
watchdog-timeout = 120

# Set the interval between tests (should be shorter than watchdog-timeout)
interval = 15

# Set system load limits
max-load-1 = 24
# max-load-5 = 18
# max-load-15 = 12

# Enable real-time priority
realtime = yes
priority = 1

ウォッチドッグサービスを開始する
ウォッチドッグサービスを有効化して開始します。

sudo systemctl start watchdog

システムハングを模擬してウォッチドッグをテストする

カーネルクラッシュ を発生させ、ウォッチドッグがシステムを 自動的に再起動 するか確認します。

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

システムを監視する
指定した タイムアウト時間 の後にシステムが 自動的に再起動 するか確認します。

期待どおりに再起動が行われれば、ウォッチドッグは正常に動作しています。

GPIOによるブザー制御

ブザーはGPIO 587にマッピングされています。次のコマンドを使用して、ブザーをオン/オフにします。

ブザーをオンにする:

echo 587 > /sys/class/gpio/export  
echo out > /sys/class/gpio/gpio587/direction
echo 1 > /sys/class/gpio/gpio587/value

ブザーをオフにする:

echo 587 > /sys/class/gpio/export  
echo out > /sys/class/gpio/gpio587/direction
echo 0 > /sys/class/gpio/gpio587/value

CSIカメラのテスト

reComputer R1100 上の CSIカメラ をテストするには、次の手順に従います。

設定ファイルを変更する

カメラモジュールを有効にするために config.txt ファイルを編集します。

sudo nano /boot/firmware/config.txt

ファイルの 末尾 に次の行を追加します。

dtoverlay=imx219,cam0

システムを再起動する

変更を反映させるために再起動します。

sudo reboot

カメラ検出の確認

再起動後、カメラが検出されているか確認します。

libcamera-jpeg --list-cameras

カメラのテスト

カメラを起動するには、次のコマンドを実行します。

rpicam-hello --timeout 0

カメラプレビューが正常に開始されれば、セットアップは完了です!

TPM 2.0 接続確認

デバイスに TPM 2.0モジュール を接続している場合、次のコマンドを使用して検出状況を確認できます。

ls /dev | grep tpm

出力の解釈:

  • 出力に tpm0 および tpmrm0 が表示されていれば、TPM(Trusted Platform Module) が正常に検出され、利用可能であることが確認できます。
  • これは、TPMハードウェアが認識されアクセス可能であり、TPM関連の機能やアプリケーションを続行できることを示します。

デバイスが一覧に表示されていれば、TPMモジュールは正しく接続され、使用準備が整っています。

ATECC608Aとの連携とランダムシリアル番号の生成

ATECC608A デバイスと通信し、ランダムなシリアル番号を生成するには、次の手順に従います。

atecc-util リポジトリをクローンする:

git clone https://github.com/wirenboard/atecc-util.git

atecc-util ディレクトリに移動する:

cd atecc-util

cryptoauthlib リポジトリをクローンする:

git clone https://github.com/wirenboard/cryptoauthlib.git

ATECCユーティリティをコンパイルする:

make

ランダムシリアル番号を生成する:

./atecc -b 1 -s 192 -c 'serial'
  • -b 1 → スロット1を使用します。
  • -s 192 → シリアル番号のサイズを 192ビット に設定します。
  • -c 'serial' → ランダムなシリアル番号を生成します。

期待される出力:

生成されたシリアル番号が、次のように表示されます。

01235595d3d621f0ee

この方法により、ATECC608A デバイスと連携し、ランダムシリアル番号の生成などの操作を効率的に行うことができます。

EEPROMとの連携

EEPROM(Electrically Erasable Programmable Read-Only Memory)にデータを読み書きするには、次の手順に従います。

EEPROMデバイスファイルにフルパーミッションを付与する:

sudo chmod 777 /sys/bus/i2c/devices/6-0050/eeprom

EEPROMにデータを書き込む:

echo "This is a test string" > /sys/bus/i2c/devices/6-0050/eeprom

EEPROMの内容を16進数形式で読み出す:

cat /sys/bus/i2c/devices/6-0050/eeprom | hexdump -C

SSD検出の確認

SSDを含む、接続されているすべてのディスクを一覧表示するには、次のコマンドを使用します。

sudo fdisk -l

このコマンドは、検出されたすべてのストレージデバイスの一覧を表示します。通常、SSDを表すエントリは次のように表示されます。

  • /dev/sda
  • /dev/sdb
  • /dev/sdc など

正しいSSDエントリを特定したら、必要に応じて パーティション作成、フォーマット、その他のディスク管理作業 を実行できます。

安全なシャットダウンのためのUPS

CPUとDC電源入力 間の GPIO6 接続は、電源が落ちたことをCPUに通知するために使用されます。CPUは、スーパーキャパシタのエネルギーが尽きる前に スクリプトを介して緊急タスクを実行 し、その後 安全なシャットダウン($shutdown を開始する必要があります。

代替シャットダウン方法
この機能を使用する別の方法として、GPIOピンの状態変化をトリガとしてシャットダウンを実行 することができます。指定したGPIOピンは 入力キー として設定され、KEY_POWERイベント を生成します。これらのイベントは systemd-logind によって処理され、自動的にシステムシャットダウンが開始されます。

この機能を有効にするには、まず /boot/overlays/README を参照し、その後 /boot/firmware/config.txt を編集して次の行を追加します。

dtoverlay=gpio-shutdown,gpio_pin=6,active_low=1
注記
  1. UPS機能の詳細 については、弊社までお問い合わせください。
  2. アラーム信号はアクティブLOW です。

安全なシャットダウンのためのPythonコード

次のPythonスクリプトは、GPIO6を介してスーパーキャパシタUPSの動作モードを検出する方法 を示しています。システムが電源オフイベントを検出すると、自動的にデータを保存し、安全にシャットダウン します。

import RPi.GPIO as GPIO
import time
import os

num = 0

GPIO.setmode(GPIO.BCM) # Set GPIO numbering mode
GPIO.setup(6, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Set GPIO6 as input with pull-up resistor
GPIO.add_event_detect(6, GPIO.FALLING, bouncetime=500) # Add debounce time for stabilization

while True:
if GPIO.event_detected(6):
print("...External power off detected...")
os.system("sync") # Ensure data is written to disk
print("...Saving data...")
time.sleep(3)
os.system("sync") # Save data again

while num < 5:
print(f"--- {5 - num} seconds remaining ---")
num += 1
time.sleep(1)

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

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

弊社製品をお選びいただきありがとうございます。私たちは、製品をできるだけスムーズにご利用いただけるよう、さまざまなサポートを提供しています。お好みやニーズに合わせてお選びいただけるよう、複数のコミュニケーションチャネルをご用意しています。

Loading Comments...