Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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