シリアルデバイス接続の完全ガイド: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側の設定といった要素を体系的に理解し、テストと検証を重ねることが成功の鍵です。本稿が設計・実装・トラブルシューティングの参考になれば幸いです。
参考文献
- RS-232 - Wikipedia
- RS-485 - Wikipedia
- FTDI Documentation
- Silicon Labs Application Notes (CP210x)
- pySerial Documentation
- termios — Linux manual
- Linux kernel serial/tty documentation


