UART/シリアル通信
UARTは、たった2本の線で文字をやり取りする、いちばん素朴で頼れる通信です。組込みでは画面もネットワークも無い状態が普通にあり、そんなとき基板の様子を映し出す「最後の命綱」になります。ここではTX/RXを交差でつなぐ配線の考え方、双方の速度(ボーレート)を合わせる約束、Linux側で /dev/ttyUSB0 などとして見える仕組み、そして minicom や picocom でつないで中を覗く手順を学びます。
組込みの現場では、画面もネットワークも無い基板と向き合う場面がしょっちゅうある。そんなとき、たった2本の線で基板の声を聞ける通信がある。それが UART(eio-uart)だ。
UART は Universal Asynchronous Receiver/Transmitter の略で、要は「非同期で文字を送受信する仕組み」だ。仕組みが単純なぶん壊れにくく、どんなに込み入った基板でもたいてい最後まで生きている。
🔀 TX/RX は交差、GND は共通
UART の配線には、初心者が必ず一度は引っかかる約束がある。送信(TX)と受信(RX)は、まっすぐ同じ名前どうしでなく、交差してつなぐのだ。
理屈は単純で、自分が「送る(TX)」線は、相手の「受ける(RX)」につながないと届かない。だから A の TX を B の RX へ、A の RX を B の TX へと、たすき掛けにする。
もう1本、両者の GND(グランド、電圧の基準)を必ず共通でつなぐ。これが無いと、そもそも電圧の高い低いを比べる土台が揃わず、通信が成立しない。信号2本+GND1本で最小3本だ。
📻 ボーレートを合わせる(115200 8N1)
UART には共通のクロック線が無い。だから送る側と受ける側が、あらかじめ「1秒間に何ビット送るか」を同じ数字に合わせておかないと、区切りがずれて意味をなさない。この速度がボーレート(eio-baudrate)だ。
組込みで圧倒的に多い値が 115200 だ。ほかに 9600 なども使われる。この数字が両者で1つでも違うと、画面には壊れた記号がだらだら流れるだけになる。
設定はよく 115200 8N1 と表記される。これは「速度 115200・データ8ビット・パリティなし(N)・ストップ1ビット」の略で、組込みの事実上の標準形だ。まずこの形で合わせれば、多くの基板とつながる。
🔌 /dev/ttyUSB0 と /dev/ttyAMA0
Linux では、UART も1つのファイルとして見える。パソコンに USB-シリアル変換アダプタを挿すと、多くの場合 /dev/ttyUSB0 という名前で現れる。2本目を挿せば ttyUSB1 だ。
一方、Raspberry Pi のようなボード自身が持つ内蔵UARTは、/dev/ttyAMA0 や /dev/serial0 といった名前で見える。「外付け変換なら ttyUSB 系、ボード内蔵なら ttyAMA/serial 系」とおおまかに覚えておく。
💬 minicom・picocom でつなぐ
デバイス名と速度が分かれば、あとは端末ソフトでつなぐだけだ。定番は2つ。多機能でメニュー設定もできる minicom と、起動が速く後腐れのない picocom だ。ちょっと覗くだけなら picocom が気軽でよい。
minicom は minicom -s で設定メニューを開き、ポートや速度をあらかじめ登録して使うことが多い。長く使うならこちら、使い捨てなら picocom、と好みで選べばよい。
🛟 組込みの「最後の命綱」
ネットワーク設定を間違えて ssh で入れなくなった。起動の途中でカーネルが止まった。そんな「手も足も出ない」状況でも、UART だけは生きていることが多い。だから最後の命綱と呼ばれる。
ssh がネット越しの会話だとすれば、UART は基板に直接ケーブルを差し込んで耳を当てる行為だ。ネットワークやOSがまだ立ち上がる前の、いちばん早い段階からの声も聞こえる。
🔑 dialout グループの権限
いざ picocom を叩くと Permission denied で弾かれることがある。/dev/ttyUSB0 のようなシリアルデバイスは、普通のユーザーがそのままでは開けないよう保護されているためだ。
多くのディストリでは、これらのデバイスは dialout(eio-dialout)というグループの持ち物になっている。自分のユーザーをこのグループに入れれば、sudo なしでアクセスできるようになる。
TX/RX を交差し、GND を共通にし、115200 8N1 で速度を合わせ、picocom でつなぐ。UART のこの型を身につければ、画面の無い基板はもう「話しかけられない相手」ではなくなる。