reTerminal DM 入門ガイド

reTerminal DM は 10.1 インチのオープンソース堅牢 HMI であり、データフローを統合し、現場デバイスを管理するための統合デバイスマスターです。
Raspberry Pi CM4 をベースにした、パネル PC、HMI、PLC、IIoT ゲートウェイが一体となったデバイスとして、reTerminal DM は IP65 等級の堅牢な大型スクリーンを備えた新世代のインタラクティブセンシングハブです。
CAN バス、RS485、RS232、ギガビット Ethernet ポートなどのインターフェースに対応した豊富な拡張性とハイブリッド接続性を備え、4G、LoRa®、WiFi、BLE などの強力な無線通信機能もサポートします。
購入に関する注意: 4G および LoRa® モジュールは、標準では reTerminal DM に同梱されません。4G bundle など、必要に応じて関連モジュールを別途ご購入ください。
カスタマイズ可能なオプション:ロゴブランディング、パッケージング、ファームウェア書き込み。
特長
- HMI、PLC、パネル PC、ゲートウェイを 1 台に統合:分散型ハブデバイスに最適
- イベント駆動アプリケーション向けローコードプログラミング:フローベース編集とワンクリックデプロイに対応した Node-RED をネイティブ統合し、Raspberry Pi 上で動作するすべてのソフトウェアと互換
- 過酷な動作環境向けの堅牢設計:IP65 フロントパネル、-10~50°C の動作温度
- ハイブリッド接続性:4G LTE、LoRaWAN®、WiFi、BLE、RS485/RS232、CAN バス、1000M Ethernet、USB、HDMI をサポート
- ソフトウェアおよびハードウェアのオープンソース設計:Raspberry Pi CM4 搭載で、カスタマイズや派生製品にも対応
- 製品保証:2 年保証
*4G および LoRa® モジュールは標準では reTerminal DM に同梱されません。必要に応じて関連モジュールを別途ご購入ください。
仕様
| 基本仕様 | |
| CPU | CM4 |
| クアッドコア [email protected] | |
| メモリ | 8GB |
| ストレージ | 32GB eMMC |
| M.2 SATA SSD スロット 2280-B Key(オプション) | |
| OS サポート | Raspbian SenseCraft Edge OS |
| ディスプレイ | |
| サイズ | 10.1'' |
| 最大解像度 | 1280 x 800 |
| 最大表示色 | 16.7M (8-bit) |
| 輝度 | 400 nit |
| 視野角 | 170/170 H/V° |
| バックライト寿命 | 30000 時間 |
| タッチ方式 | 10 点マルチタッチ静電容量方式 |
| 鉛筆硬度 | 7H |
| ビデオ & オーディオ | |
| ビデオ | HDMI 2.0 |
| オーディオ | マイク x 2 |
| ブザー | |
| 3.5mm オーディオジャック | |
| カメラ | CSI(オプション) |
| インターフェース | |
| Ethernet | 1 x 10/100/1000 Mbps |
| 1 x 10/100/1000 Mbps(オプション) | |
| USB | 2 x USB-A 2.0 ホスト |
| 2 x USB 3.0(オプション) | |
| RS485 | 1 x RS-485 > 端子台 1 x RS-485 > DB9(オプション) |
| RS232 | 1 x RS-232 > 端子台 1 x RS-232 > DB9(オプション) |
| CAN | 1 x CAN-BUS > 端子台 |
| DI | 4 x DI > 端子台 |
| DO | 4 x DO > 端子台 |
| 40pin GPIO | 内部 |
| 無線通信 | |
| WiFi | オンチップ WiFi |
| BLE | オンチップ BLE |
| LoRa® | LoRaWAN® 用 Mini-PCIe(オプション) |
| Cellular | 4G 用 Mini-PCIe(オプション) |
| 電源 | |
| Input | 2 ピン端子台 |
| PoE | 12W PoE(オプション) |
| Power Range | 12~24 DC |
| 環境 | |
| 防塵・防水保護 | IP65 フロントパネル |
| 動作温度 | -10~50 °C |
| 保存温度 | -20~70 °C |
| 湿度(動作時) | 10~90% RH |
| 機構 | |
| 寸法 | 259.4 x 191 x 42.2 mm |
| 筐体 | ダイカストアルミニウム合金 |
| 取り付け方法 | パネル、VESA、DIN レール |
| 重量(正味) | 1.8Kg |
| 認証 | |
| CE, FCC, RoHS, Telec, REACH | |
| その他 | |
| RTC | 高精度 RTC |
| セキュリティ | ATECC608A |
| 保証 | 2 年 |
| 放熱 | ファンレス |
ハードウェア概要

メインボード概要

電源構成図

reTerminal DM は、DC 端子と PoE ポートの 2 つの電源オプションをサポートします。デフォルトでは reTerminal DM は DC 端子から給電され、PoE 電源はオプションです。これにより、電源選択の柔軟性が提供され、さまざまな電源との容易な統合が可能になります。
電源端子

reTerminal DM は、公称電圧 12~24 V で給電されます。電源は 2 ピンの電源端子台コネクタを介して接続されます。
POE(オプション)
標準製品にはデフォルトで PoE モジュールは含まれていません。Seeed は、要望に応じてバッチカスタマイズ注文向けに PoE のはんだ付けおよび組立サービスを提供できます。詳しくは [email protected] までお問い合わせください。
PoE モジュールが搭載されている場合、reTerminal DM の LAN1 ポートは PoE 給電をサポートし、Ethernet 経由でデバイスに電源を供給する便利で効率的な方法を提供します。このオプションにより、設置プロセスが簡素化され、必要な配線量が削減されるため、電源が限られている、または電源コンセントが容易に利用できないアプリケーションに最適なソリューションとなります。
- PoE 入力:範囲 44~57V、標準 48V
- PoE 出力:12V、最大 1.1A
消費電力
reTerminal DM の消費電力については、Seeed Studio のラボで測定した下記の表を参照してください。なお、この値はあくまで参考値であり、テスト方法や環境によって結果が変動する可能性があります。
| 状態 | 電圧 | 電流 | 消費電力 | 説明 |
|---|---|---|---|---|
| シャットダウン | 0.6mA | シャットダウンおよび電源オフ状態での静的消費電力テスト。 | ||
| アイドル | 24V | 0.165A | 3.96W | デフォルトの Seeed Studio システムを実行し、テストプログラムを一切動作させない状態で、端子ソケットから reTerminal DM デバイスに 24V 電源を供給したときの入力電流をテストします。 |
| フルロード | 24V | 0.37A | 8.88W | "stress -c 4" コマンドを使用して CPU をフルロードで動作させながら、動画を再生し、CAN および RS485 通信を実行します。外部デバイスは接続していません。 |
電源オン/オフ
reTerminal DM にはデフォルトで電源ボタンは搭載されておらず、電源を接続するとシステムは自動的に起動します。シャットダウンする際は、オペレーティングシステム上でシャットダウンオプションを選択し、システムが完全にシャットダウンするまで待ってから電源を切ってください。システムを再起動するには、電源を再接続するだけです。
シャットダウン後は、内部コンデンサが完全に放電されるよう、システムを再起動する前に少なくとも 10 秒間お待ちください。
ブロック図

I2C ブロック

インターフェース
マイク
reTerminal DM には、画面下の左右に 2 つの MEMS マイクが搭載されています。これらのマイクはデュアルマイクアレイとして構成でき、優れた集音性能を提供します。マイクは I2S インターフェースを介してオーディオコーデックチップと通信し、コーデックチップは PCM インターフェースを介して CM4 と通信します。reTerminal DM に採用されているオーディオコーデックチップは、TI 社の TLV320AIC3104 低消費電力ステレオオーディオコーデックです。
フロントパネルで IP65 等級を実現するため、マイク開口部は防水音響メンブレンで覆われていることに注意してください。マイク開口部には鋭利な物を触れないようにしてください。
マイクを使用するには:
デバイス上で Terminal アプリを開き、arecord -l と入力してマイクドライバを確認してください:

音声を録音するには audacity アプリを使用できます。sudo apt install audacity を使用して audacity アプリをインストールしてください:
audacity を開いてアプリを起動し、録音ボタンをクリックして内蔵マイクから音声を録音してください:

LED インジケータ

reTerminal DM には 3 つの LED インジケータが搭載されており、機器の動作状態を示します。各 LED の具体的な機能と状態については、以下の表を参照してください。
LED ピン割り当て
| ラベル | 信号 | 信号ソース | 色 | 説明 |
|---|---|---|---|---|
| PWR | LED_nPWR | CM4 | 黄 | CM4 の電源供給を示すために使用されます。CM4 が正常に電源オンされると、LED が点灯します。 |
| USER | PCA9535 - GPIO | 赤 | ユーザー定義機能 | |
| ACT | LED_nACT | CM4 | 緑 | システムのさまざまな状態を示すために使用されます。下記の表を参照してください。 |
ACT ステータステーブル
| 長い点滅 | 短い点滅 | 状態 |
|---|---|---|
| 0 | 3 | 一般的な起動失敗 |
| 0 | 4 | start*.elf が見つかりません |
| 0 | 7 | カーネルイメージが見つかりません |
| 0 | 8 | SDRAM 障害 |
| 0 | 9 | SDRAM 不足 |
| 0 | 10 | HALT 状態 |
| 2 | 1 | パーティションが FAT ではありません |
| 2 | 2 | パーティションからの読み取りに失敗しました |
| 2 | 3 | 拡張パーティションが FAT ではありません |
| 2 | 4 | ファイル署名/ハッシュ不一致 - Pi 4 |
| 4 | 4 | 非対応のボードタイプ |
| 4 | 5 | 致命的なファームウェアエラー |
| 4 | 6 | 電源障害タイプ A |
| 4 | 7 | 電源障害タイプ B |
ACT LED が規則的な 4 回点滅パターンで点滅する場合、ブートコード(start.elf)を見つけられていません。
ACT LED が不規則なパターンで点滅する場合は、ブート処理が開始されています。
ACT LED が点滅しない場合、EEPROM コードが破損している可能性があります。何も接続せずに再度試して確認してください。
詳細については Raspberry Pi フォーラムを参照してください。
STICKY: Is your Pi not booting? (The Boot Problems Sticky) - Raspberry Pi Forums
詳細については Raspberry Pi フォーラムを参照してください: https://forums.raspberrypi.com//viewtopic.php?f=28&t=58151
USER LED を有効にするには、次のコマンドを使用してください:
sudo -i
echo 0 > /sys/class/leds/usr-led/brightness
echo 1 > /sys/class/leds/usr-led/brightness
USER LED が赤色に点灯するのが確認できるはずです。
照度センサ

画面右下に配置された照度センサは、周囲の光の強さを検出し、画面の明るさを自動的に調整して、最適な視認性を提供しつつ省エネルギーを実現します。照度センサは I2C プロトコルを介して CM4 と通信します。
I2C アドレスは 0x29 です。
照度センサを使用するには:
- Step 1. 次のディレクトリに移動します
cd /sys/bus/iio/devices/iio:device0
- Step 2. 次を入力して、Lux 単位の照度値を取得します
cat in_illuminance_input

ブザー

reTerminal DM には、画面右下にアクティブブザーが搭載されており、アラームやイベント通知などさまざまな用途に使用できます。ブザーは PCA9535 GPIO 拡張 IC を介して制御され、この IC によりデバイスに追加のデジタル I/O チャンネルが提供されます。
ブザーをテストおよび制御するには、1 または 0 を /sys/class/leds/usr-buzzer/brightness ファイルに設定するだけです:

多機能端子

端子と信号の比較表
| CANH | CANL | GND_ISO | RS485A | RS485B | GND_ISO | RS232_TX | RS232_RX | GND | GND |
|---|---|---|---|---|---|---|---|---|---|
| DI1 | DI2 | DI3 | DI4 | GND_DI | DO1 | DO2 | DO3 | DO4 | GND_DO |
端子ピン割り当て表
| ピン | シルク印刷 | 信号 | 説明 |
|---|---|---|---|
| 1 | CH | CANH | 差動 CAN 信号 High |
| 2 | CL | CANL | 差動 CAN 信号 Low |
| 3 | GS | GND_ISO | 絶縁グランド信号 |
| 4 | RA | RS485A | 差動 RS485 信号 A |
| 5 | RB | RS485B | 差動 RS485 信号 B |
| 6 | GS | GND_ISO | 絶縁グランド信号 |
| 7 | RT | RS232_TX | RS232 信号送信端 |
| 8 | RX | RS232_RX | RS232 信号受信端 |
| 9 | GD | GND | メインボードグランド |
| 10 | GD | GND | メインボードグランド |
| 11 | I1 | DI1 | デジタル入力 1 |
| 12 | I2 | DI2 | デジタル入力 2 |
| 13 | I3 | DI3 | デジタル入力 3 |
| 14 | I4 | DI4 | デジタル入力 4 |
| 15 | GI | GND_DI | 入力グランド信号、1MΩ を介して GND に接続 |
| 16 | D1 | DO1 | デジタル出力 1 |
| 17 | D2 | DO2 | デジタル出力 2 |
| 18 | D3 | DO3 | デジタル出力 3 |
| 19 | D4 | DO4 | デジタル出力 4 |
| 20 | GO | GND_DO | 出力グランド信号、0Ω を介して GND に接続 |
DI/DO
reTerminal DM は 4 チャンネルのデジタル入力と 4 チャンネルのデジタル出力をサポートしており、すべて光学的に絶縁されているため、電圧スパイクやその他の電気的ノイズからメインボードを効果的に保護します。

DI/DO ピン割り当て表
| ピン | CM4 信号 | 代表的な電圧範囲 | 最大電圧 | 定格電流容量 |
|---|---|---|---|---|
| DI1 | GPIO16 | 5-24V DC | 30V DC | |
| DI2 | GPIO17 | 5-24V DC | 30V DC | |
| DI3 | GPIO22 | 5-24V DC | 30V DC | |
| DI4 | GPIO23 | 5-24V DC | 30V DC | |
| GND_DI | ||||
| DO1 | GPIO24 | 5-24V DC | 30V DC | 500mA |
| DO2 | GPIO25 | 5-24V DC | 30V DC | 500mA |
| DO3 | GPIO26 | 5-24V DC | 30V DC | 500mA |
| DO4 | GPIO6 | 5-24V DC | 30V DC | 500mA |
| GND_DO |
入力信号用のグラウンドと出力信号用のグラウンドは異なります。入力信号用のグラウンドは GND_DI ピンに、出力信号用のグラウンドは GND_DO ピンに接続する必要があります。
reTerminal DM のデジタル入力および出力には負論理が使用されており、Terminal IO と CM4 GPIO 間の論理レベルの関係は以下の表のとおりです。
| Terminal Digital Input | CM4 GPIO 検出信号 |
|---|---|
| Low | High |
| High | Low |
| CM4 GPIO 出力 | Terminal Digital Output |
|---|---|
| High | Low |
| Low | High |
このセクションでは raspi-gpio ツールを使用して GPIO をテストします。マニュアルを表示するには raspi-gpio help を使用できます:

すべての GPIO の現在の状態を取得するには、Terminal に次のコマンドを入力してください:
raspi-gpio get

デジタル入力
センサーを DI に配線する方法を示した回路図は次のとおりです:

特定の GPIO ステータスを取得するには、Terminal に次のコマンドを入力してください:
raspi-gpio get 16

ここで、GPIO16 の現在の状態は INPUT で pulling Down に設定されており、現在のピンレベルは 1 です。これは High を意味し、上記の表によると現在の Terminal Digital Input DI1 が Low であることも意味します。
次に、DI1 端子を 5V source の Positive ピンに接続し、5V source の Ground を GND_DI に接続することで、DI1 に High 信号を印加してみましょう。
raspi-gpio get 16

ここでは、GPIO16 の現在のピンレベルは 0 で、これは Low を意味し、上記の表によると現在の Terminal Digital Input DI1 が High であることも意味します。
デジタル出力
負荷を DO に配線する方法を示した回路図は次のとおりです:

デジタル出力の状態値を制御するには、まずピン状態を Output および pulling Down に設定する必要があります:
#set current pin state
raspi-gpio set 24 op pd dh
#get the pin state after set
raspi-gpio get 24

ここでは、DO1 に対応する GPIO24 が Output および pulling down 状態に設定されており、GPIO24 レベルは High に設定されています。
次に、GPIO24 を Low に設定します。これは DO1 出力が High で駆動されることを意味します。
#set current pin state
raspi-gpio set 24 dh
#get the pin state after set
raspi-gpio get 24

RS485

reTerminal DM は 20 ピンコネクタを介して RS485 インターフェースを備えており、信号と電源の両方が絶縁されているため、過酷な環境やオートメーション用途でも安全かつ信頼性の高い動作が可能です。RS485 A および RS485 B 信号は容量結合によるアイソレーションで絶縁されており、優れた EMI 耐性を提供し、RS485 インターフェースの高速通信要件を満たします。
終端抵抗 120Ω がデフォルトで実装されています。 RS485 インターフェースはアイソレートされた電源を使用しているため、RS485 インターフェースに接続される外部デバイスのグラウンド信号は GND_ISO ピンに接続する必要があります。
RS485 をテストしてインターフェースするには、USB–RS485 アダプタを用意し、以下と同じ接続になっていることを確認してください:

RS485 ポートは、実行している OS によって /dev/ttyACM1 または /dev/ttyCH340USB1 であることに注意してください。
以下のテストを実行するために、ホストコンピュータ上でお好みのシリアル通信ツールを使用してください。 reTerminal DM 上で Python コードを実行して RS485 シリアル接続をテストします。このコードでは RS485 シリアルポートを次のように設定します。
Baudrate -> 9600 Bytesize -> 8 bits Parity -> None Stopbits -> 1 Hardware flow control -> disabled
import serial, time
import os
ser = serial.Serial()
if os.path.exists('/dev/ttyACM1'):
ser.port = "/dev/ttyACM1"
elif os.path.exists('/dev/ttyCH340USB1'):
ser.port = "/dev/ttyCH340USB1"
else:
print('Neither /dev/ttyACM1 nor /dev/ttyCH340USB1 is present')
#9600,N,8,1
ser.baudrate = 9600
ser.bytesize = serial.EIGHTBITS #number of bits per bytes
ser.parity = serial.PARITY_NONE #set parity check
ser.stopbits = serial.STOPBITS_ONE #number of stop bits
ser.timeout = 0.5 #non-block read 0.5s
ser.writeTimeout = 0.5 #timeout for write 0.5s
ser.xonxoff = False #disable software flow control
ser.rtscts = False #disable hardware (RTS/CTS) flow control
ser.dsrdtr = False #disable hardware (DSR/DTR) flow control
try:
ser.open()
except Exception as ex:
print ("open serial port error " + str(ex))
exit()
if ser.isOpen():
try:
ser.flushInput() #flush input buffer
ser.flushOutput() #flush output buffer
time.sleep(0.1)
#write data
ser.write("rs485 communication is on, you can try to send data...\n".encode())
print("Sent successfully\n")
time.sleep(5) #wait 5s
#read data
numofline = 0
print("Reading Data:")
while True:
response = ser.readline()
print(response)
numofline = numofline +1
if (numofline >= 1):
break
ser.close()
except Exception as e1:
print ("communicating error " + str(e1))
else:
print ("open serial port error")

RS232

reTerminal DM の 20 ピンコネクタには、絶縁されていない RS232 インターフェースも含まれています。RS232 通信は一般的に CMOS 電圧レベルを使用し、通信距離も短いため、環境からの電磁干渉の影響を受けにくいからです。
Ground ピンは RX ピンの隣の GD ピンに接続する必要があることに注意してください。GS ピンではないことを確認してください。
以下は、reTerminal DM からホストコンピュータへデータを送信するテスト用 Python スクリプトです:

import time
import serial
import os
if os.path.exists('/dev/ttyACM0'):
port = "/dev/ttyACM0"
elif os.path.exists('/dev/ttyCH340USB0'):
port = "/dev/ttyCH340USB0"
else:
print('Neither /dev/ttyACM0 nor /dev/ttyCH340USB0 is present')
ser = serial.Serial(
port = port,
baudrate = 9600,
parity = serial.PARITY_NONE,
stopbits = serial.STOPBITS_ONE,
bytesize = serial.EIGHTBITS,
timeout = 1
)
counter=0
try:
print("rs232 starts now!\n")
ser.write("rs232 starts now!\n".encode())
while 1:
ser.write(("Write counter:{}\n".format(counter)).encode())
time.sleep(1)
counter += 1
except KeyboardInterrupt:
exit()
以下は、ホストコンピュータから送信されたデータを reTerminal DM で受信するテスト用 Python スクリプトです。

import time
import serial
import os
if os.path.exists('/dev/ttyACM0'):
port = "/dev/ttyACM0"
elif os.path.exists('/dev/ttyCH340USB0'):
port = "/dev/ttyCH340USB0"
else:
print('Neither /dev/ttyACM0 nor /dev/ttyCH340USB0 is present')
ser = serial.Serial(
port=port,
baudrate = 9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1,
xonxoff = False, #disable software flow control
rtscts = False, #disable hardware (RTS/CTS) flow control
dsrdtr = False
)
try:
print("Start receiving data now!\n")
while 1:
x=ser.readlines()
if x != b'':
print(x)
except KeyboardInterrupt:
exit()
CAN

reTerminal DM は CAN FD(Controller Area Network Flexible Data-Rate)プロトコルをサポートする CAN インターフェースを備えています。CAN インターフェースは容量結合によるアイソレーションで絶縁されており、優れた EMI 保護を提供し、過酷な環境やオートメーション用途でも信頼性の高い通信を実現します。終端抵抗 120Ω がデフォルトで実装されています。
CAN インターフェースはアイソレートされた電源を使用しているため、CAN インターフェースに接続される外部デバイスのグラウンド信号は GND_ISO ピンに接続する必要があります。
CAN バスをテストしてインターフェースするには: 以下の画像のように、USB から CAN へのアダプタを接続してください:

- ステップ 1: CAN-utils をインストールします
sudo apt install can-utils

CAN-utils は、CAN インターフェースを使用する非常に便利なデバッグツールのコレクションです。次のようなアプリケーションが含まれます:
- candump – CAN パケットをダンプし、表示、フィルタリング、およびディスクへのログ保存を行います。
- canplayer – CAN ログファイルを再生します。
- cansend – 単一フレームを送信します。
- cangen – ランダムなトラフィックを生成します。
- canbusload – 現在の CAN バスの使用率を表示します
CAN-utils のソースコードは、GitHub リポジトリから入手できます。
- ステップ 2: 次のコマンドを使用して CAN インターフェースを設定します:
sudo ip link set can0 up type can bitrate 500000
sudo ifconfig can0 txqueuelen 1000
sudo ip link set can0 up
- ステップ 3: git を使用してテスト用コードを reTerminal DM にダウンロードします
git clone https://github.com/limengdu/Seeed_reTerminal_Bridge_CAN_exmaple
- ステップ 4: データを送信するコードをコンパイルして実行します:
cd Seeed_reTerminal_Bridge_CAN_exmaple/
gcc cantransmit.c -o cantransmit
Linux ホストコンピュータまたは別の reTerminal DM 上で、データを受信するコードをコンパイルして実行できます。
gcc canreceive.c -o canreceive
結果を確認できます。以下の画像は、2 台の reTerminal DM を使用して実行したものです:

USB
USB Type-A

USB 2.0 Type-A ポートが 2 つあり、USB フラッシュドライブ、Web カメラ、キーボード、マウスなどの USB デバイスを接続できます。
USB Type-C

USB Type-C は USB 2.0 ポートで、ブートスイッチの位置に応じてシリアルデバッグまたは OS イメージの書き込みに使用されます。OS の書き込みについては、Flashing OS Wiki page を参照してください。
SIM カードスロット

reTerminal DM には、堅牢な用途で一般的に使用される標準サイズの SIM カードスロットが搭載されており、25mm x 15mm の標準 SIM カードが必要です。
標準版の reTerminal DM には 4G モジュールは付属していません。4G 機能が必要な場合は、別途 4G モジュールを追加購入する必要があります。そのため、この SIM カードスロットは、4G PCIe スロットに対応するバージョンの 4G モジュールを搭載した場合にのみ動作します。
リセットボタン

reTerminal DM のリセットホール内にはミニプッシュボタンスイッチがあります。細い物でこのボタンを押すことで、CM4 をリセットできます。このボタンは CM4 の RUN_PG ピンに接続されています。このピンが High のとき、CM4 が起動したことを示します。このピンを Low にするとモジュールがリセットされます。
オーディオジャック

reTerminal DM には 3.5mm ヘッドホンジャックが搭載されており、音声出力をサポートし、外部ヘッドホンやスピーカーなどを接続できます。
ヘッドホンジャックは音声出力のみをサポートし、マイク録音機能はサポートしていません。

HDMI

reTerminal DM は CM4 からのネイティブ HDMI インターフェースを備えており、最大 4K @ 60 fps のビデオ出力をサポートします。複数ディスプレイを必要とするアプリケーションに最適で、コンテンツを外部の大型スクリーンに出力できます。
Ethernet RJ45

reTerminal DM には、10/100/1000 Mbit/s の 3 つの速度に対応した CM4 ネイティブのギガビット Ethernet インターフェースが搭載されています。さらに PoE モジュールを追加購入することで、このインターフェースを介した PoE(Power over Ethernet)給電が可能となり、reTerminal DM に電力を供給できます。
内部インターフェース
40 ピン GPIO
reTerminal DM 内部には、従来の Raspberry Pi の 40 ピン GPIO 設計が踏襲されており、ピン配列は Raspberry Pi 4B と同じです。これらの GPIO を使用するには、背面カバーを開ける必要があります。なお、CM4 IO のリソースが限られているため、40 ピン GPIO と多くの周辺インターフェースはマルチプレックスされており、GPIO を使用する際には競合に特に注意する必要があります。詳細なピン割り当て情報については、以下の表を参照してください。
| Description | Pin multiplexing | Pin multiplexing | Description | |||
|---|---|---|---|---|---|---|
| Pin 1 | 3V3 | 40 PIN GPIO | 5V | |||
| I2C1_SDA | GPIO 2 | 5V | ||||
| I2C1_SCL | GPIO 3 | GND | ||||
| I2C3_SDA | GPIO 4 | GPIO 14 | UART0_TXD | USB Type C | ||
| GND | GPIO 15 | UART0_RXD | ||||
| Block Terminal DI2 | DI2 | GPIO 17 | GPIO 18 | PCM_CLK | 3.5mm audio jack | |
| Interrupt pins for screen touch | TP_INT | GPIO 27 | GND | |||
| Block Terminal DI3 | DI3 | GPIO 22 | GPIO 23 | DI4 | Block Terminal DI4 | |
| 3V3 | GPIO 24 | DO1 | Block Terminal DO1 | |||
| CAN and LoRa® module | SPI0_MOSI | GPIO 10 | GND | |||
| SPI0_MISO | GPIO 9 | GPIO 25 | DO2 | Block Terminal DO2 | ||
| SPI0_SCLK | GPIO 11 | GPIO 8 | SPI0_CE0 | CAN 用 SPI 有効化ピン | ||
| GND | GPIO 7 | SPI0_CE1 | LoRa® 用 SPI イネーブルピン | |||
| ID_SD | ID_SC | |||||
| I2C_SCL | GPIO 5 | GND | ||||
| ブロック端子 DO4 | DO4 | GPIO 6 | GPIO 12 | CAN_INT | CAN 用割り込みピン | |
| LCD バックライト制御ピン | LCD_PWM | GPIO 13 | GND | |||
| 3.5mm オーディオジャック | PCM_FS | GPIO 19 | GPIO 16 | DI1 | ブロック端子 DI1 | |
| ブロック端子 DO3 | DO3 | GPIO 26 | GPIO 20 | PCM_DIN | 3.5mm オーディオジャック | |
| GND | GPIO 21 | PCM_DOUT | 3.5mm オーディオジャック |
RTC
reTerminal DM には RTC 回路が搭載されており、CR2032 バッテリがあらかじめ装着されています。そのため、電源が失われた場合でも時刻保持機能を維持できます。
次のコマンドを使用して、ハードウェアクロックを現在のシステムクロックに変更します
sudo hwclock --systohc
次のコマンドを使用して、システムクロックを現在のハードウェアクロックに変更します
sudo hwclock --hctosys
現在のハードウェアクロックを表示するには
sudo hwclock -r

ウォッチドッグ
reTerminal DM には独立したハードウェアウォッチドッグ回路が搭載されており、システムが異常クラッシュした場合に自動的にシステムを再起動します。ウォッチドッグ回路は RTC を通じて実装されており、1 ~ 255 秒の柔軟な給電時間を設定できます。
watchdog.conf でウォッチドッグのタイムアウト時間を設定するには、次の手順に従ってください。
STEP 1: 通常 /etc/watchdog.conf にある watchdog.conf ファイルを開いて編集します。
sudo nano /etc/watchdog.conf
STEP 2: /etc/watchdog.conf 内の "watchdog-device" と "watchdog-timeout" の設定オプションを探し、次のように設定してください。
watchdog-timeout オプションを 60 未満に設定すると即座に再起動が発生する場合があります。ハードウェアウォッチドッグを利用するには、watchdog-device を /dev/watchdog1 に設定する必要があります。デフォルト設定で 1 が付かない場合は Broadcom のウォッチドッグデバイスが使用されます。
# Uncomment this to use the watchdog device driver access "file".
watchdog-device = /dev/watchdog1
# Uncomment and edit this line for hardware timeout values that differ
# from the default of one minute.
watchdog-timeout = 60
例えば、ウォッチドッグのタイムアウト時間を 60 秒に設定したい場合は、watchdog-timeout の値を 60 に設定します。これは、ウォッチドッグが 60 秒以内にリセット信号を受信しない場合、システムがクラッシュしたとみなして自動再起動をトリガーすることを意味します。
ウォッチドッグが有効かどうかは、次のコマンドでテストできます。これらのコマンドはシステムを停止状態にするため、以下のコマンドを実行する際は十分注意してください。
sudo su
echo 1 > /proc/sys/kernel/sysrq
echo "c" > /proc/sysrq-trigger
これで、watchdog-timeout に設定した時間が経過すると reTerminal DM が再起動しているはずです
バックライト
バックライトの明るさは 6 段階で設定でき、0 がオフ、5 が最大輝度です。 次のコマンドを使用して、明るさを制御するインターフェースを利用できます。
sudo -i
echo 0 > /sys/class/backlight/lcd_backlight/brightness
echo 1 > /sys/class/backlight/lcd_backlight/brightness
echo 5 > /sys/class/backlight/lcd_backlight/brightness
内蔵アドオン
カメラ

reTerminal DM メインボードには CSI カメラインターフェースが用意されており、カメラ機能に対応するようカスタマイズできます。なお、フロントパネルのスペースが限られているため、小型カメラのみ使用可能です。現在厳密にテストされているソリューションは、Raspberry Pi camera V2.0 ドライバボード + Seeed カスタマイズカメラ IMX219-77 を使用しています。
| コネクタ | コネクタタイプ | ピッチ | レーン数 | FPC 向き |
|---|---|---|---|---|
| CSI0 | 15 ピン FPC | 1mm | 2 | 端子(金メッキ)が下向き |
| CSI1 | 22 ピン FPC | 0.5mm | 4 | 端子(金メッキ)が上向き |

標準版の reTerminal DM にはフロントパネルにカメラ用の開口部がないため、標準製品ではカメラ機能は利用できません。カメラのカスタマイズ要件がある場合は、[email protected] までお問い合わせください。
4G モジュール

必要な材料
- reTerminal DM x 1
- EC25-EUX 4G モジュール x1
- SIM カード x1
Step 1. EC25 4G Module Hardware assembly ガイドを参照して、EC25 4G Module を 4G/LTE PCIe slot に取り付けてください。4G/LTE のシルクスクリーンが見えるはずです。また、システムの電源を入れる前に、4G 対応の SIM カードを sim card slot に挿入してください。
Step 2. lsusb を使用して EC25-EUX が検出されているか確認します
lsusb
lsusb -t

Step 3. シリアル通信ツール minicom をインストールします。
sudo apt install minicom
Step 4. minicom を介して EC25-EUX 4G モジュールに接続します。
sudo minicom -D /dev/ttyUSB2 -b 1152008n1
シリアル接続が開いたら、AT と入力して Enter キーを押すと、OK と表示されるはずです。

Step 5. 4G モジュールを有効にして 4G ネットワークに接続します
同じ minicom のシリアルウィンドウで、次のように入力してください:
AT+QCFG="usbnet"
+QCFG: "usbnet",0, のような応答が返ってきますが、これを 1(ECM モード)に設定する必要があるため、次のコマンドを入力します。
AT+QCFG="usbnet",1
次に、モデムの再起動を強制するため、以下のコマンドを入力します。
AT+CFUN=1,1
その後、システムを再起動するか、モジュールが SIM カードのキャリアからインターネット接続を取得するまでしばらく待ちます。
reTerminal DM のネットワーク状態を確認するには、ifconfig コマンドを使用することもできます。

LoraWAN® モジュール
reTerminal DM は WM1302 LoraWAN® モジュールの USB 版と SPI 版の両方をサポートしますが、USB 版は 4G モジュール用に設計された Mini PCIe を使用する必要があります。そのため、4G モジュールと LoraWAN® モジュールの両方を使用したい場合は、WM1302 LoraWAN® モジュールの SPI 版を選択してください。
- WM1302 SPI モジュール
- WM1302 USB Module

Step 1. LoraWAN® Module Hardware assembly ガイドを参照して、WM1302 SPI LoraWAN® Module を LoraWAN® Mini PCIe slot に取り付けてください。Lora のシルクスクリーンが見えるはずです。
必要なパッケージをインストールします。build-essential(build essential パッケージは、ソースコードから DEB パッケージを作成するために必要なツールを含む Debian パッケージです)をモジュールをインストールして導入します。
sudo apt update
sudo apt install git
sudo apt-get install build-essential
Step 2. コマンドラインで sudo raspi-config と入力して、Raspberry Pi Software Configuration Tool を開きます:
- Interface Options を選択
- SPI を選択し、有効化するために Yes を選択
- I2C を選択し、有効化するために Yes を選択
- Serial Port を選択し、"Would you like a login shell..." には No を選択し、"Would you like the serial port hardware..." には Yes を選択
その後、これらの設定が有効になるように Raspberry Pi を再起動してください。
Step 3. WM1302 code を reTerminal にダウンロードしてコンパイルします。
cd ~/
git clone https://github.com/Lora-net/sx1302_hal
cd sx1302_hal
sudo make
Step 4. reset_lgw.sh スクリプトをコピーして修正します
cp ~/sx1302_hal/tools/reset_lgw.sh ~/sx1302_hal/packet_forwarder/
cd ~/sx1302_hal/packet_forwarder
vim reset_lgw.sh
reset_lgw.sh スクリプトを以下のようにテキストエディタで修正します:
#!/bin/bash
# Dependency Check
if ! command -v i2cset &> /dev/null; then
echo "Error: i2c-tools not found. Please install using: sudo apt-get install i2c-tools"
exit 1
fi
# Configuration
I2C_BUS=1 # CM4_IIC1
DEVICE_ADDR=0x21 # PCA9535 Address from schematic
REG_OUTPUT_PORT0=0x02 # Register 2: Output Port 0
REG_CONFIG_PORT0=0x06 # Register 6: Configuration Port 0
PIN_MASK=0x20 # Bit 5 (0010 0000) for P05
# Read a register
read_reg() {
local val=$(i2cget -y $I2C_BUS $DEVICE_ADDR $1)
echo $val
}
# Write to a register
write_reg() {
i2cset -y $I2C_BUS $DEVICE_ADDR $1 $2
}
echo "Starting SX1302 Reset Sequence on I2C Bus $I2C_BUS, Address $DEVICE_ADDR..."
# Ensure the Output Register bit for P05 is LOW
CURRENT_OUT=$(read_reg $REG_OUTPUT_PORT0)
NEW_OUT=$(printf "0x%02x" $((CURRENT_OUT & ~PIN_MASK)))
write_reg $REG_OUTPUT_PORT0 $NEW_OUT
echo "Set Output Register P05 to LOW. (Reg $REG_OUTPUT_PORT0: $CURRENT_OUT -> $NEW_OUT)"
# Configure P05 as OUTPUT
# Configuration Register: 1 = Input, 0 = Output
CURRENT_CFG=$(read_reg $REG_CONFIG_PORT0)
NEW_CFG=$(printf "0x%02x" $((CURRENT_CFG & ~PIN_MASK)))
write_reg $REG_CONFIG_PORT0 $NEW_CFG
echo "Configured P05 as OUTPUT. (Reg $REG_CONFIG_PORT0: $CURRENT_CFG -> $NEW_CFG)"
# Assert Reset (Drive P05 HIGH)
CURRENT_OUT=$(read_reg $REG_OUTPUT_PORT0)
RESET_HIGH=$(printf "0x%02x" $((CURRENT_OUT | PIN_MASK)))
write_reg $REG_OUTPUT_PORT0 $RESET_HIGH
echo "Asserting Reset (P05 HIGH)..."
# Hold Reset for 200ms
sleep 0.2
# Release Reset (Drive P05 LOW)
write_reg $REG_OUTPUT_PORT0 $NEW_OUT
echo "Released Reset (P05 LOW)."
echo "SX1302 Reset Complete."
echo "------------------------------------"
Step 5. global_conf.json.sx1250.US915 設定ファイル内の LoraWAN® Module のデフォルトの SPI ポートを置き換えます:
sed -i 's/spidev0.0/spidev0.1/g' global_conf.json.sx1250.US915
Step 6. LoraWAN® Module を起動します
使用しているモジュールに基づいて、対応する global_conf.json.sx1250.xxxxx 内で、希望する LoRaWAN Network Server の server_address とゲートウェイ EUI gateway_ID を選択し、up/down port を 1700 に変更します。その後、以下のコードを実行してコンセントレータを起動します:
cd ~/sx1302_hal/packet_forwarder
# Please select one of the following comands based on your module
# for WM1302 LoRaWAN Gateway Module (SPI) - EU868
./lora_pkt_fwd -c global_conf.json.sx1250.EU868
# for WM1302 LoRaWAN Gateway Module (SPI) - US915
./lora_pkt_fwd -c global_conf.json.sx1250.US915


Step 1. LoraWAN® Module Hardware assembly ガイドを参照して、WM1302 USB LoraWAN® Module を 4G シルクスクリーンが見える 4G Mini PCIe slot に取り付けてください。

Step 2. コマンドラインで sudo raspi-config と入力して、Raspberry Pi Software Configuration Tool を開きます:
- Interface Options を選択
- I2C を選択し、有効化するために Yes を選択
- Serial Port を選択し、"Would you like a login shell..." には No を選択し、"Would you like the serial port hardware..." には Yes を選択
その後、これらの設定が有効になるように Raspberry Pi を再起動してください。
Step 3. WM1302 code を reTerminal にダウンロードしてコンパイルします。
cd ~/
git clone https://github.com/Lora-net/sx1302_hal
cd sx1302_hal
sudo make
Step 4. reset_lgw.sh スクリプトをコピーします
cp ~/sx1302_hal/tools/reset_lgw.sh ~/sx1302_hal/packet_forwarder/
Step 5. global_conf.json.sx1250.US915.USB 設定ファイル内の LoraWAN® Module の USB ポートを置き換えます:
Step 5-1. まず、特定の USB ポートを取得するために、以下の手順に従ってください:
lsusb
この例では、WM1302 は STMicroelectronics Virtual COM Port を使用しているため、プロダクト ID 5740 を取得できます
Step 5-2.
次に、プロダクト ID 番号 5740 を持つ USB デバイスを取得します。この場合、USB ポート番号 1-1.4.1 を取得します:
sudo dmesg | grep 5740
# Load ACM module
sudo modprobe cdc_acm
その後、次のようにデバイスポートを取得できます:
sudo dmesg | grep 1-1.4.1
したがって、この例では USB デバイスは ttyACM2 です
したがって、sed -i 's/search_string/replacement_string/g' filename コマンドを使用して global_conf.json.sx1250.US915.USB 設定内の USB デバイスを変更します。そのため、sed -i 's/ttyACM0/the_result_from_above' global_conf.json.sx1250.frequency_of_your_module.USB というパターンに従ってください。the_result_from_above と frequency_of_your_module は、ご自身の用途に合わせて置き換えてください:
例えば、この例では:
sed -i 's/ttyACM0/ttyACM2/g' global_conf.json.sx1250.US915.USB
以下の画像に示す手順を参照してください:

Step 6. LoraWAN® Module を起動します
使用しているモジュールに基づいて、対応する global_conf.json.sx1250.xxxxx 内で、希望する LoRaWAN Network Server の server_address とゲートウェイ EUI gateway_ID を選択し、up/down port を 1700 に変更します。その後、以下のコードを実行してコンセントレータを起動します:
cd ~/sx1302_hal/packet_forwarder
# Please select one of the following comands based on your module
# for WM1302 LoRaWAN Gateway Module (USB) - EU868
./lora_pkt_fwd -c global_conf.json.sx1250.EU868.USB
# for WM1302 LoRaWAN Gateway Module (USB) - US915
./lora_pkt_fwd -c global_conf.json.sx1250.US915.USB

PCIe 拡張カード
reTerminal DM には CM4 由来の PCIe インターフェースが搭載されており、PCIe 2.0 をサポートし、理論上は最大 5Gbps の伝送速度を提供します。これにより、ギガビット Ethernet や NVMe SSD など、さまざまな高速インターフェースを拡張することができます。私たちは、さまざまなシナリオ要件を満たすために、PCIe、USB、I2C インターフェースに基づく複数の拡張カードを開発しました。これにより、カスタマイズニーズにも対応しやすくなっています。
標準製品には、デフォルトで PCIe 拡張カードは含まれていません。Seeed はバッチカスタマイズ注文に対して組立サービスを提供できます。
POE
reTerminal DM は、PoE 電源モジュールを追加することで IEEE 802.3af PD(Powered Devices)規格をサポートできます。
reTerminal DM は PoE 給電をサポートしますが、標準製品にはデフォルトで PoE モジュールは含まれていません。Seeed はバッチカスタマイズ注文に対して PoE のはんだ付けおよび組立サービスを提供できます。ただし、顧客がサンプルをテストする場合は、PoE モジュールを自分でハンダ付けおよび組み立てる必要があります。
SSD
reTerminal DM は、PCIe 拡張カードを使用することで 2280 NVMe SSD をサポートします。CM4 の PCIe は Gen2.0 であり、理論上の最大速度は 5Gbps であることに注意してください。Gen3.0 以上の SSD を使用している場合、その SSD の最大速度を発揮できない可能性があります。テストの結果、SSD を搭載した reTerminal DM は、最大書き込み速度 210MB/s、最大読み取り速度 360MB/s を達成できます。どの SSD が互換性があるか不明な場合は、Seeed の公式サイトから 112990247、512GB NVMe M.2 PCle Gen3x4 2280 SSD を購入できます。
reTerminal DM の標準バージョンは SSD をサポートしておらず、この機能を有効にするには PCIe 拡張カードの購入が必要です。
追加リソース
- reTerminal DM データシート
- reTerminal DM ユーザーマニュアル
- reTerminal DM 回路図設計 & PCB 設計 & Gerber ファイル
- reTerminal DM 構造設計ファイル.stp
技術サポートと製品ディスカッション
弊社製品をお選びいただきありがとうございます。私たちは、製品をできるだけスムーズにご利用いただけるよう、さまざまなサポートを提供しています。お好みやニーズに応じてお選びいただける、複数のコミュニケーションチャネルをご用意しています。