Skip to main content

reComputer R1100の設定

概要

デバイスのインストール後にreComputer R1100シリーズのハードウェアコンポーネントを設定およびテストする方法を学習します。このwikiでは、GPIOマッピング、USER LEDテスト、SPI通信、Wi-FiおよびBluetoothスキャン、LoRa®、4G、Mini-PCIe経由のZigbee、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

Then, turn on the LEDs:

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. Compile the spidev_test.c program

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デバイスのスキャンが開始されます。

LoRa® over Mini-PCIe

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

Modify the reset script:

Open the reset_lgw.sh script:

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モジュールと通信するには、以下の手順に従ってください:

適切なシリアルポートとボーレートでMinicamを開く:

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> を、ダイヤルしたい電話番号に置き換えてください。
  • コマンドの最後に セミコロン (;) を含めて、電話番号の終了を示すようにしてください。

Zigbee over Mini-PCIe

2つの Zigbee モジュール間で Zigbee 通信 をテストするには、以下の手順に従ってください:

利用可能なシリアルポートの確認

以下のコマンドを実行して、利用可能なシリアルポートを確認してください:

cat /dev/ttyUSB*

シリアル通信ツールのインストール

グラフィカルなシリアルターミナルである CuteCom を以下のコマンドでインストールします:

sudo apt-get install cutecom

最初のZigbeeモジュール(コーディネーター)を設定する

  • CuteComを開き、最初のシリアルポート用に設定します。
  • 設定:
    • ボーレート: 115200
    • インターフェースの下部で**「Hex output」を有効にする**。

コーディネーターとして設定する手順:

  1. コーディネーターとして設定: コマンドを送信:

    55 04 00 05 00 05  
    • 期待される応答:
    55 04 00 05 00 05  
  2. デバイスのリセット:

    • リセットボタンを押すか、または

    • コマンドを送信:

      55 07 00 04 00 FF FF 00 04  
  3. ネットワーク形成:

    • コマンドを送信:
    55 03 00 02 02  

2番目のZigbeeモジュール(ルーター)を設定する

  • CuteComの別のインスタンスを開き、同じ設定を使用して2番目のシリアルポート用に設定します。

ルーターとして設定する手順:

  1. ルーターとして設定: コマンドを送信:

    55 04 00 05 01 04  
    • 期待される応答:
    55 04 00 05 00 05  
  2. デバイスのリセット:

    • リセットボタンを押すか、または

    • コマンドを送信:

      55 07 00 04 00 FF FF 00 04  
  3. ネットワーク形成: コマンドを送信:

    55 03 00 02 02  

デバイスステータスの確認
デバイスステータスを確認するには、以下を送信します:

55 03 00 00 00  

期待される応答:

55 2A 00 00 00 01 XX XX XX XX  
  • XX はデバイス固有の情報を表します。

透過モードに入る

ネットワーク形成が成功した場合、以下を送信して透過モードを有効にします:

55 07 00 11 00 03 00 01 13  

直接通信を行うには、両方のモジュールが透過モードである必要があります。
透過モードを終了するには、以下を送信してください:

+++  

追加注意事項

  • ルーター設定が失敗した場合、デバイスはすでにコーディネーターである可能性があります。ネットワークから離脱するには、以下を送信してください:

    55 07 00 04 02 XXXX XX  
  • 送信電力をテストするには、以下を使用してください:

    • 電力クエリ:

      55 04 0D 00 00 0D
    • 電力設定:

      55 04 0D 01 XXXX

各Zigbeeモジュールに対して、/dev/ttyUSB*正しいシリアルポートに置き換えることを確認してください。 これらの手順を慎重に従って、2つのモジュール間で成功したZigbee通信を確立してください。

以下は、文法、可読性、フォーマットを改善した修正版と適切に構造化されたバージョンです:


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

テスト説明

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

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

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

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

reComputer R1100には2つのデジタル入力(DI)ポートが含まれており、ユーザーの要件に基づいて設定できます。

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

DI ポート仕様

  • 入力タイプ: PNP
  • サポート入力電圧: 5VDC – 24VDC
  • 電流: 最大 1000mA

DI 機能をテストする手順

適切な接続を確認

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

GPIO ステータスを確認

以下のコマンドを実行して GPIO530(DI1 に対応)のステータスを確認してください:

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 R1100RTC機能を確認するには、以下の手順に従ってください:

自動時刻同期の無効化

RTCをテストする前に、競合を避けるために自動時刻同期を停止し、無効化してください:

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

手動でRTC時刻を設定する

RTCを特定の日時に設定します(例:2024年11月12日午後12時):

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 R1100CSI カメラ をテストするには、以下の手順に従ってください:

設定ファイルの変更

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

sudo nano /boot/firmware/config.txt

ファイルの末尾に以下の行を追加してください:

dtoverlay=imx219,cam0

システムを再起動する

変更を適用するために再起動します:

sudo reboot

Check Camera Detection

再起動後、カメラが検出されているかを確認してください:

libcamera-jpeg --list-cameras

Test the Camera

次のコマンドを実行してカメラを有効にしてください:

rpicam-hello --timeout 0

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

TPM 2.0 接続確認

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

ls /dev | grep tpm

出力の解釈:

  • 出力に tpm0tpmrm0 が表示される場合、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(電気的消去可能プログラマブル読み取り専用メモリ)にデータを読み書きするには、以下の手順に従ってください:

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
note
  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...