Who is さくふわめろんぱん

さくふわめろんぱん(@skfwMelonpan)はロボットとか人工知能に興味があるパンです。
自分のために調べたことがみんなの役に立ったらいいなぁ。

2014年11月10日月曜日

[GPSRCC]ToCoStickでRaspberryPiと通信

ロボットカーをRaspberryPiで動かすので大変だったのはwifi環境。
家ではwifi使えるのでそれで良いのだけれど、外ではwifiがないから動かない。
(大会ではwifiルーターを持参して通信してました。)
以前はこんな感じ

wifiに頼らない開発環境を!ということで、以前買っておいたToCoStickと、今回買ってもらったToCoStickを使って何とかしてやろうじゃん?っていう記事です。
これからはこうします


もちろん家ではwifiでsshが最強なのでwifiを使います。

【ToCoStickとは】
TWE-LITEっていう通信用のモジュールをUSBに挿せるようになってるやつ。
今まで有線だったシリアル通信を無線化できるでしょ?っていう感じ。
チャットとか色んな機能があるんだけど、正直いらない。
きれいなんだけど、もうちょっと小型化できないのかな。


【ToCoStickの準備】
ざっくり基礎知識(細かいとこは自分で調べて)
・ToCoStickやTWE-LITEはアプリ(ファームウェア?)を書き込んで動かす。
・最初に入ってるのはIOとか制御するアプリ。ToCoStickだとほぼ意味ない。
・シリアル通信専用アプリの「透過モード」が一番便利そう。
  (http://tocos-wireless.com/jp/products/TWE-ZERO/App_Uart/)
・書き込み用ソフトがWindowsにしか対応してない(おこ)

【ToCoStickを使う】
Macに1つ、RaspberryPiに1つ挿します。
Macでは「CoolTerm」を使ってシリアル通信します。
RaspberryPiでは、おなじみ?の「minicom」でシリアル通信します。

親機の設定(どっちでもいいからとりあえずMac側にしてる)
・i: Device IDを121に。
・m: uart modeをT(透過モード)に。
・そして S: save Configuration 設定を保存

子機の設定
・i: Device IDを1に。
・m: uart modeをT(透過モード)に。
・そして S: save Configuration 設定を保存

なんか文字とか打つと1文字ずつ転送される。これでオッケー。

【コンソールを使う】(こっからが本題)
このままで、デバッグ情報をシリアルで送ってくれたりするようにできます。
競技中はそれでいいんだけど、RaspberryPiの場合はまずプログラムを起動しなきゃいけないですね。
シリアル通信でコンソールをいじれる必要があるわけです。
RaspberryPiの場合はGPIOピンに有線でつなぐとコンソールをいじれます。
USBでもこの機能を使わない訳にはいきませんね。

ここのブログでは逆に、シリアルで繋ぐとコンソールになっちゃうのを回避しています。
(http://www.soramimi.jp/raspberrypi/rs232c/index.html)


/boot/cmdline.txtttyAMA0ttyUSB0に変えましょう。
dwc_otg.lpm_enable=0 console=ttyUSB0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait 

/etc/inittab の最後のttyAMA0ttyUSB0に変えましょう。
...
#Spawn a getty on Raspberry Pi serial line

T0:23:respawn:/sbin/getty -L ttyUSB0 115200 vt100

一応、再起動してToCoStickで通信はじめると、Mac側のシリアル通信ソフトにコンソールが飛んできます。

という訳で、wifi環境がなくても開発が可能になりました。
TWE-LITEの仕様のせいで使いにくい分はあるけど、特に問題はないです。

もちろん家ではwifiでsshが最強なのでwifiを使います。
アディオス!