RAPIROのトラブル 〜Raspberry PiからArduinoを制御できない〜
RAPIROの一般販売が開始されました。これからみんなどんな風にRAPIROをいじってくるのか、すごく楽しみです。
自分が RAPIROに対して入れ込んでいる理由は、他のロボットキットと違って、ロボ開発のプラットフォームになる可能性を感じたからです。それも、ソフト的な話に加え、ハード的にもプラットフォームになり得るというところに、すごく魅力を感じています。かつてのミニ四駆、今で言うならダンボール戦記?みたい に、いろんな追加パーツが出て来ると、すごく楽しいことになるんじゃないかと思っています。littleBitsぐらい簡単に着脱可能なパーツが出て来たら最高です。
さて、実は今回は、いよいよRaspberry PiとArduinoを連携させて、リモコン制御で動かせるようにしようとがんばっていたのですが … ダメです、トラブりました。結局現時点でも解決していないので、どういうトラブルが起こっているのかをメモしておこうと思います。
実はRAPIROを組み立てて、初めて制御したときから『アレ?』と思うところがあり、それの原因を追及している内に、ArduinoからのGPIO経由での電源供給でRaspberry Piが起動しなくなってしまいました(MicroUSBからの電源供給であれば起動します)。
何がおかしかったかというと、PCとArduinoを繋いで、PCのシリアルモニタから”#M0″〜”#M9″のコマンドの送信テストをしているときに、一度コマンド(例えば”#M5″)を送って指定のモーションを始めたあと、モーションを変えようと思って別のコマンド(例えば”#M0″)を送っても、それがArduinoに無視される、というものでした。Arduinoのログ出しをして調べてみると、PCのシリアルモニタから送るコマンド以外に、何者かが大量にArduinoのシリアルポートにデータを送りつけているようで、それのせいでArduinoのシリアルポートのバッファが溢れてしまい、PCのシリアルモニタから送ったコマンドが破棄されてしまっていた、ということのようです。
PC以外にシリアルポートにデータを送れるのは唯一、Raspberry Piだけのハズです。というわけで、Rasbperry PiとArduinoの接続ケーブルを外してみると、Arduinoはシリアルモニタからのコマンドを正しく受け取れるようになってくれました。
…が、これじゃ意味がありません。RAPIROはRaspberry PiとArduinoを連携させてこそなんぼのものです、ということで、何でRaspberry Piからたくさんわけのわからんデータが送られて来るのか、原因わからんけど何とかArduinoの方で防御できないか、とかいろいろ電源ON/OFFして試しているうちに、Raspberry Piが起動しなくなりました。。。
…とりあえず、RAPIROをいじる前に、ハードが壊れるのはもうしょうがないにしても、せめてRaspberry Piのデータのバックアップをとっておくのは必須、ということはよくわかりました。以下あたりが参考になると思います。
- Windows … Raspberry Piで遊ぼう [No.19:Raspberry Piのバックアップを作成しよう]
- Mac … Raspberry Pi の SD カードを Mac でバックアップ
よくよく考えれば、Raspberry Piの電源OFFは、本来ソフト的に終了(GUIでシャットダウン or CUIでshutdownかhalt)してから電源を落とすのが正しい手順なのに、RAPIROに組み込んで使うときはそれを気にせずにバシバシ電源を ON/OFFしてしまうことになるから、そのへん気をつけないと、いつデータ壊れるかわかりません。電源切れるハードウェアスイッチでもつけるか…このへんが参考になるかもしれません(←追記:やっつけでつけました。記事下部参照)。
ちなみにRAPIROのフォーラムの方にも書き込みをさせていただいて、アドバイスをいただいたりもしたのですが、それでも解決せず。うーん、明日新しいRasbperry Pi買いにいくか … お金がなくなる …
そんなわけで、今回は大失敗に終わったわけですが、それでもちょっとは得るものもあったり。
自分は抵抗は扱えてもコンデンサは扱えないハードウェアど素人ですが、このレベルならなんとかなりそう。これでWiFi/Blutoothコンボドングルが、セルフパワーUSBハブなしで、Raspberry Piへの直挿しで安定して動いてくれたら儲け物です。まだ試してないですが。
(追記)
シャットダウン用のハードウェアボタンをつけました。はんだづけの適当さが、いかにやっつけで作ったかを物語っています。一応、ちゃんと動作します。必要に応じて、RAPIROの外側に出せるように引き延ばして使います。
ディスカッション
コメント一覧
初めまして、もうご存知かもしれませんが、RasPIのシリアルは、ttyに設定されているので無効かしないと、Rapiro側に送信されてしまいます。フォーラムにもあったかと。私の方は、両肩が開かない(五十肩)で悩んでます。
> saito様
遅ればせながら、ご連絡ありがとうございます!自分も他の人に質問してようやく解決したのですが、このあたり(ttyとか)のことに自力で気付ける方々はホントにすごいと思います。。。自分も早いところそのレベルに達して、いろんな方々のお役に立ちたいなあと思う次第です。