2013-08-12
Raspberry Piの拡張コネクタからUARTの信号を引き出して、汎用シリアルポートとして使用します。
拡張コネクタの外側の端から、5V、5V、GND、TXD、RXD、と並んでいますので、1×5のコネクタを用意して、RS-232Cレベル変換基板をつなぎます。
上に掲載した基板は、一応動作しますが、 運が悪いとRaspberry Piにダメージを与える恐れがあります。即死はしなくても、長時間の使用で少しずつ壊れていくかもしれません。
RS-232Cレベル変換IC(ADM232A)を5Vの電源で駆動し、その信号をRaspberry Piで受けているのですが、Raspberry Piは3.3V動作ですので、5Vの信号を3.3Vに落としてRaspberry Piに入れるべきです。上に掲載した基板では、Raspberry Piの入力ピンに5Vを印可しているため、推奨されません。そこで、安全のため、抵抗分圧で電圧を下げる回路を追加したのが、下の基板です。
Raspberry Piの初期状態では、シリアルポートは、コンソールとしてログインできるように設定されています。これを無効化し、汎用シリアルポートとして、プログラムから利用できるように設定します。
※見やすいように改行して掲載していますが、実際のファイルは各行が空白で区切られ、一行で記述されています。
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
コンソールの設定(ttyAMA0,115200と書かれている項目)を削除します。
rpitestmode=1 はあってもなくても動作するようですが、多数のサイトで、これを付けているのを見かけますので、一応書いておきます。今のところ意味不明のおまじないです。
dwc_otg.lpm_enable=0 rpitestmode=1 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
シリアルログインに関する最後の行をコメントアウトします。
簡易ターミナルソフトを作ってみました。
Raspberry PiとPCをクロスケーブルで接続し、PCでターミナルソフトを9600bpsで実行します。
上のプログラムをmakeしてtinytermを実行すると、タイプした文字が相手の画面に表示されます。終了するにはCtrl+Cを押してください。