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