BBBでシリアル通信
概要
BeagleBoneBlack(BBB)のシリアルポートUART4(P9 11:RXD,13:TXD)を使えるようにする。
背景
ある探査ロボットのモータ制御をRS485で行う必要があり、RS232でしゃべれるBBBを利用した。
その際に、手始めに、BBBでシリアル制御を行ったのでその備忘録。
この後、pythonからシリアル制御を行ったのでそれも近日中に記載予定。
RS232C<-->RS485コンバータの製作についても記載するかも。
手順
設定
以下の設定を行いreboot。UART4の部分は設定を行いたいものに読み替え。
$ diff -u /boot/uboot/uEnv.txt~ /boot/uboot/uEnv.txt --- /boot/uboot/uEnv.txt~ 2014-05-15 23:58:50.000000000 +0000 +++ /boot/uboot/uEnv.txt 2014-06-20 01:28:44.000000000 +0000 @@ -17,7 +17,7 @@ ##BeagleBone Black: ##Disable HDMI/eMMC #optargs=capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN,BB-BONE-EMMC-2G - +optargs=quiet drm.debug=7 capemgr.enable_partno=BB-UART4 console=ttyO0,115200n8 mmcroot=UUID=526efd31-8f31-4dc6-8b5d-ac3a2b3736e2 ro
reboot後、/dev/ttyO4が見えるようになる。ちなみに、ttyO0は、オンボードのデバッグ用シリアルピン。
シリアル通信の設定を行う。
$ sudo stty -F /dev/ttyO4 raw $ sudo stty -F /dev/ttyO4 9600
P9 11,13をシリアルで別の端末に接続。写真のような感じで。
端子同士の配線は以下。
動作確認
TeraTermなどでシリアルを9600bpsで開いた状態で、BBBから以下を実行。
$ sudo su - # echo "Hello,nihohi" >/dev/ttyO4
無事表示されました。
BBB側も、ttO4をcatして、TeraTerm側からも文字を送ると受信にも成功。
# cat /dev/ttyO4 moge^C hello,nihohi!
※2014/09/28追記。
もし2つのデバイスを有効化する場合(例えばttyO2とttyO4)、前述の/boot/uboot/uEnv.txtで、以下のようにカンマ区切りでデバイスを設定すればOK。
capemgr.enable_partno=BB-UART2,BB-UART4