2014年9月14日日曜日

Arduinoとの通信(FreeBSDでのシリアル通信)

Arduinoが何かをしゃべるように、プログラムしたとする。
(例えば、Serial.println())を使う。)
何を喋っているかをTerminalで受け取るには、次のようにすればよい。
$ (stty speed 57600; cat) </dev/cuaU0
解説すると、標準入力(stdin)を/dev/cuaU0に切り替え、stty speedで、Arduinoが喋るスピードで耳を傾けるように設定する。
その後は、catによって、/dev/cuaU0から入力されたものを、terminalに表示する。

Arduinoを/dev/cuaU0として認識して、いきなりstdinに切り替えられるのは、 Arduino上の、FT232RL(FDTI社)のUSB-Serial変換石に対応した、 デバイスドライバがあるから。
FT232RLが乗っていないArudinoでは、うまくいかないかもしれない。
kernelが、USBに刺さったものをデバイスファイルに見えるように、 適当に/dev/cuaU0に割り当ててくれる。

stty speed 57600で terminal input baud rateを設定している。
Arduinoのプログラムで設定した値と合わせる必要がある。
baudは「ボー」と読む。

環境
OS:FreeBSD 9.3-STABLE r268734
ports:arduino-1.0.5_2,1, arduino-mk-0.10_1
arduino:CQカチャduino (Arduino Duemilanove互換)