本記事で紹介するプログラムは以下の GitHub リポジトリで公開しています
本記事は連載形式でお届けしています。各回の内容は以下のリンクからご覧いただけます。
はじめに
エレベーターと自動運転装置の通信環境を構築するうえで、まず重要なのは RS422 通信が Raspberry Pi 側で正しく受信できているか を確認することです。
本記事では、ENQ 送信プログラムを実行した後、 Raspberry Pi がシリアル信号を正しく受信できているかを確認するためのモニタリングツール について紹介します。 PySerial と termios を活用し、UNIX/Linux 環境で正確に受信タイミングを制御できる構成となっています。
プログラムの実行手順
GitHub リポジトリ内の serial_debug_test.py
を使用します。任意のディレクトリに保存し、以下の手順に従って実行してください。
動作環境
- Python 3.8 以上
- OS:Raspberry Pi OS(Linux 環境)
- 対応通信:RS422(USB シリアル変換アダプタ使用)
必要な Python ライブラリ
ライブラリ名 | 用途 | インストール方法 |
---|---|---|
pyserial |
シリアル通信制御 | pip3 install pyserial |
termios |
受信制御(VMIN/VTIME) | ※Python 標準ライブラリ(追加インストール不要) |
# ライブラリのインストール
pip3 install pyserial
使用機材と接続構成
このツールで通信を確認するには、以下の構成で機器を接続してください。
使用機材一覧
✅ RS422 対応 USB シリアルコンバーター ×2
- WaveShare RS232/485/422/TTL コンバーター
- ※PC 側・Raspberry Pi 側で各 1 台使用
- ⚠ 注意 :安価な互換品では信号の受信に失敗することがあります。 WaveShare 製のように動作実績のある製品 を推奨します。
✅ RS232C DB9 メス-メス シリアルケーブル
接続構成図
PC(ENQ送信) → RS422コンバーター → DB9ケーブル → RS422コンバーター → Raspberry Pi(受信確認)
この構成により、ENQ 信号が実際の RS422 環境と同様の条件で Pi に届いているかを確認できます。
実行方法
プログラムは 2 つのモードで使用できます:
ポート検出モード
利用可能なシリアルポートを自動検索します。
python3 serial_debug_test.py test
通信モニターモード
任意のポートを指定して、16 バイト固定長で受信ログを表示します。
python3 serial_debug_test.py /dev/ttyUSB0
プログラムは以下の条件で動作します:
- 通信条件:9600bps, 8bit, Even パリティ, 1 stop bit
- 受信制御:VMIN=16(16 バイト受信で確定)、VTIME=5(0.5 秒以内にデータが揃わなければタイムアウト)
実行例とログ出力
以下は、Raspberry Pi で受信を確認した際の出力ログ例です。
📡 シリアルモニタリング開始: /dev/ttyUSB0
設定: 9600bps, 8bit, Even parity, 1 stop bit
VMIN=16, VTIME=5 (0.5秒)
Ctrl+C で終了
[10:15:23] 受信 (16 バイト)
HEX : 05303030325730303031303030313942
ASCII: .0002W000100019B
[10:15:24] 受信 (16 バイト)
HEX : 05303030325730303031303030313942
ASCII: .0002W000100019B
このように、受信データは HEX と ASCII の両形式で可視化され、 通信内容の確認やデバッグが容易 です。
まとめ
本記事では、RS422 通信の受信確認に特化した シリアルモニタリングツール について解説しました。
このツールは以下のような場面で非常に有効です:
- ENQ 送信プログラムの実行前に通信確認を行いたい場合
- 配線ミスやポート設定ミスの早期発見
- 通信フォーマットの整合性チェック
※ご質問やフィードバックがありましたら、問い合わせフォーム経由でお気軽にお寄せください。
次回の記事では、受信したデータをもとに 映像を生成し、RTSP で配信するシステムの構築方法 を紹介します。 Raspberry Pi を活用した通信系開発や、産業機器の IoT 化を検討している方の参考になれば幸いです。
本記事で紹介するプログラムは以下の GitHub リポジトリで公開しています