littleBitsのArduinoモジュールがおかしくなった時のリセット方法をlittleBits社に質問して無事解決したメモです。
症状
最近結構ハードにlittleBits Arduinoモジュールを使ってまして100ミリ秒くらいでArduinoとPCがやり取りをするような動作を試していました。応答がなくなり、さらにオーバーフローしたのか、再度Arduino IDEで上書きしようにもUSBに挿してもまったく認識しなくなってしまいました。
まず正常な例。USBを挿した状態で電源を入れるとランプがついて認識します。
しかし、今回の症状に見舞われたlittelBits Arduinoモジュールはこんなふうに USBを挿して電源を入れても反応しない。
これも。
Arduino IDEでも本来ポートが反応しているはずが、ポートがいません。
もちろん無理に書き込んでみてもポートがないと怒られる。
こまった。
Arduinoにはそんなときリセット方法があるがlittleBits Arduino モジュールにはリセット端子やボタンがない。
たまたまArduino UNOでバグらせたことがあってArduinoにはそんなときリセット方法があるのですが、littleBits Arduino モジュールにはリセット端子やボタンがない。
littleBits ArduinoモジュールはLeonardoをベースにしたもののようですが、本来のLeonardoであれば以下のように
Arduino – ArduinoBoardLeonardo
リセットを行う端子があります。写真の下部のところに、IOREF / RESET / 3.3V / 5V という配置でありますね。目で見て分かるならやるんだけど!
しかしlittleBits Arduinoモジュールには明確にリセット端子やボタンがない。
フォーラムでも似たようなトラブルがありそうだけど、どうも正しい操作方法にたどり着かない。
- How to Troubleshoot your Arduino I (Why you buggin' ? ) – Arduino & Programming – littleBits discussions
- Arduino Troubleshooting – Arduino & Programming – littleBits discussions
ということで、littleBits本家のサポートに聞いてみる
ということで、littleBits本家のサポートに聞いてみることにしました。
以下から質問できます。
こんなふうに書きました。
書き出しは以下のように。
ああ、iOSのアプリ開発でリジェクトされたときにこういうのやったなぁ・・・。
何度か基本的な症状のヒアリングや仕様OSなど丁寧にやり取りさせていただいて、本命のリセット方法を伺えました。
1) Short the pins in the attached picture (i.e. directly connect them to each other):
2) Connect the USB to the Arduino and turn the power on to the Arduino.
3) Press ‘upload’ in the Arduino IDE with a code that is known to not cause issues.
4) When the status bar changes from “compiling sketch” to “uploading…” remove whatever you are using to short the two pins.
5) Your sketch should now successfully upload.
ということで、図表の指定のピンをつなげるとリセットできるとのことで、やってみます。
リセット自体の手順は以下を参考にしました。
Arduino でなんだか起動しなくなった時の解決 – Qiita
1.Arduino ソフトウェアを起動します
2.適当なサンプルプログラムを読み込んで書き込みボタンを押します。書き込んでいます。。。みたいなのが出るまで待機。
3.書き込もうとしている最中に、リセットボタンを押します。
4.Arduino は、数秒だけの認識している間にプログラムを書き込んでくれます。
リセット
まずUSBをArduino IDEを使うPCに繋いて電源を入れます。
リセットさせるコードは通電すればなんでも良いですが、私はテストワイヤーを使いました。
Arduino IDEを起動します。案の定、ポートは認識されていません。
新規作成でシンプルなloopを用意しておきます。Blinkサンプルでも良いですが、littleBitsのArduinoモジュールのBlinkサンプルで変なハマり方をしたものの解決した話にあるようにポートは13でなく5なので注意しましょう。
これで準備が整いました。書き込みを開始します。
この間に、リセットさせます!
えいや!
すぐ離します。
別の角度から見てみます。a2の右のピンとd10からみて左のピンを挿しています。
このようにリセットすると、なんとUSBのポートが一定時間10秒程度?認識するので、無事書き込みが終了します!
コレで一回リセットされてシンプルなループが書き込まれるので、ポートも認識されるようになります。
こちらでリセット完了です。
おわりに
これで、おかしなコード書いてArduinoを暴走させても、安心してリセットできますね!
今回はリセット方法を教えてもらったlittleBitsサポートの方に「これは素晴らしいナレッジだから是非ブログに書かせて!」と伝えたら、すぐに快諾いただきました。
I thank for this work of the littleBits customer support very much. Thank you.
それでは、よきLittleBits Lifeを!