Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

raspberry PiとArduinoをシェルだけで通信する場合、ちゃんと通信レートは初期化しないとダメ

どうしてもシェルだけで完結させたいアプリがあったものの、今までことごとくシェル単体での初期化に失敗していました。
仕方なくArduino IDEで通信したのですが……これではいつまで経ってもスタンドアローンにならないので調査。
その結果、実に初歩的なミスだったのでメモ。

実際のところ

Arduino IDEで初期化したあと、ふとsttyで状況を確認してみたところ、
当然というか以下のような値になってました。

$ sudo stty -F /dev/ttyUSB0
speed 115200 baud; line = 0;
min = 0; time = 0;
-brkint -icrnl -imaxbel
-opost
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke

今までボーレート位しか設定しなかったのだから、それじゃ動かなくて当然ですね。

というわけで、上のパラメーターに則り初期化コマンドを修正します。

$ stty -F /dev/ttyUSB0 speed 115200 min 0 -brkint -icrnl -imaxbel -opost -isig -icanon -iexten -echo -echoe -echok -echoctl 

これで無事に通信できるようになりました。

読むときは

$ tail -f /dev/ttyUSB0

書くときは開いた状態で

$ echo -n "YOUR MSG" > /dev/ttyUSB0

参考もと

superuser.com