シリアルデバイス接続の完全ガイド:RS-232/RS-485/USB-UARTと実践トラブルシューティング

はじめに — シリアル接続の位置づけ

シリアルデバイス接続は、組み込み機器、産業機器、シリアルコンソールやモデムなどで長年使われてきた基本的な通信方式です。近年はUSBやEthernetが普及していますが、UART/RS-232/RS-485といったシリアル技術は、低レイヤでのデバッグやシンプルな制御用インターフェースとして今も広く利用されています。本稿では物理層からプロトコル、実装/設定、トラブルシューティング、設計上の注意点まで詳しく解説します。

物理層の種類と特徴

  • TTL UART(ロジックレベル):マイコン上で使われる3.3Vあるいは5Vのロジックレベル。コネクタはピンヘッダ(TX/RX/GND)で、レシーバーを直接接続することが多い。電圧レベルの不一致に注意。
  • RS-232(TIA-232):古典的なシリアル規格。±3〜±15Vの電圧を使い、短距離・点対点に適する。コネクタはDB9が一般的。電圧レベルがTTLと異なるため、変換(レベルシフタ)が必要。
  • RS-485(TIA-485):差動伝送で長距離・多点接続に強い。半二重(マスタ/スレーブ)構成が多く、ライン終端抵抗や偏流抵抗が重要。デバイス間の方向制御(DE/RE)を適切に行う必要がある。
  • USB-シリアル変換:FTDI, Silicon Labs (CP210x), WCH (CH340) などのチップでUSBを介してPCとシリアル機器を接続。OS上では仮想COMポートとして現れる(WindowsのCOMx、Linuxの/dev/ttyUSBxや/dev/ttyACMx)。

シリアル通信の基本パラメータ

正しく通信するためには次のパラメータを送受信側で一致させる必要があります。

  • ボーレート(baud) — 例:9600、115200。クロックの許容誤差にも注意(一般に1%未満が望ましい)。
  • データビット — 7または8が一般的。
  • パリティ — None/Even/Odd。誤り検出の方式。
  • ストップビット — 1または2。
  • フロー制御 — ハードウェア(RTS/CTS)またはソフトウェア(XON/XOFF)。フロー制御を有効にするかで動作が大きく変わる。

接続設計上の注意点

  • 電圧レベルの整合:TTL(3.3V/5V)とRS-232(±)は直接接続不可。必ず適切なレベル変換器を使用する。
  • GNDの共通化:TTL接続ではグランドを共有しないと通信できない。長いケーブルや外部電源を使う場合はループ対策を講じる。
  • 差動配線と終端:RS-485では両端に120Ω程度の終端抵抗を入れ、必要に応じ偏流抵抗でライン電圧を安定化する。
  • アイソレーション:産業用途ではアイソレーション(光アイソレータやアイソレータIC)を用いて機器間のグランドループや高電圧から保護する。
  • シールドとツイストペア:EMIの多い環境では、ツイストペアとシールドで耐ノイズ性を確保する。

RS-485の特殊性と実践テクニック

RS-485は差動通信で長距離・多点接続に適しますが、実務では次の点に注意が必要です。

  • 半二重/全二重:多くは半二重。送信時にはバスを制御するためDEをアサートし、送信完了後に解除する必要がある。ハードウェアやUARTのRTSピンで自動制御できる場合もある。
  • バスの終端とバイアス:両端終端抵抗と、アイドル時の定義のためのプルアップ/プルダウン(バイアス)が必要。
  • 多点配線:スター配線は避け、可能な限りバス(直列)配線にする。ノード数、ケーブル長、トポロジを設計段階で確認すること。

OS側の設定とツール

WindowsではCOMポート設定、Linuxでは/dev/tty*デバイスが使われます。よく使うコマンドやツール:

  • Linux: sttyで端末設定、minicomやpicocom、screenで接続。/var/logやdmesgでドライバの挙動を確認。
  • Windows: デバイスマネージャでCOM番号確認。Tera TermやPuTTYでシリアル接続。
  • プログラム: Pythonのpyserial、Node.jsのserialport、Cのtermios APIなどでシリアル通信を扱う。

トラブルシューティングのチェックリスト

  • 物理接続:TXとRXがクロスしているか(TX↔RX)、GNDは接続されているか。
  • 電圧レベル:TTL/RS-232のレベル不一致はないか。
  • 通信パラメータ:ボーレートやパリティ、データビット、ストップビットが一致しているか。
  • フロー制御:ハード/ソフトフローが必要か、片方だけ有効になっていないか。
  • ケーブルと終端:RS-485では終端やバイアスが適切か。長距離での遅延や反射はないか。
  • ドライバ/権限:OS側でドライバが正しくロードされているか、デバイスへのアクセス権限があるか。
  • ログとロジックアナライザ:dmesgやシリアルロガー、ロジックアナライザで信号を確認する。

性能と限界

ボーレートを上げるとデータ伝送は速くなりますが、信号品質、ケーブル長、クロック精度がボトルネックになります。RS-232は短距離向け、RS-485は数百メートルまで実用的です。USB-シリアル変換はPCとの接続を便利にしますが、USBスタックやOSレイヤでの遅延が発生することがあります。

セキュリティと運用上の配慮

組み込み機器のシリアルコンソールはブートローダやOSへのアクセス経路となるため、未承認アクセスを防ぐために物理的な保護や運用ポリシーが重要です。産業ネットワークでは誤操作や悪意あるコマンドから機器を守るため、認証やアクセス管理を検討してください。

実務的なおすすめとチェックポイント

  • 開発段階でロジックアナライザやUSB-シリアルアダプタを常備し、早期に通信確認を行う。
  • 製品設計では電圧レベル変換、保護(TVS、ポリスイッチ)、アイソレーションの検討を行う。
  • RS-485設計では終端、バイアス、方向制御回路を回路図に明記する。
  • OSやアプリケーションではシリアルポートのエラーハンドリングや再接続ロジックを実装する。

まとめ

シリアルデバイス接続は単純に見えて多くの落とし穴があります。物理層の違い、電圧レベル、通信パラメータ、フロー制御、配線や終端、そしてOS側の設定といった要素を体系的に理解し、テストと検証を重ねることが成功の鍵です。本稿が設計・実装・トラブルシューティングの参考になれば幸いです。

参考文献