Arduinoでトラブルが続いていた
現在、Ubuntu(12.04-32bit)+ruby 1.8.7 + Arduino Mega2560という組み合わせで、開発を進めているのだけれども、先の記録にもあるように、予想以上に苦労している。
今回、Arduino IDEからMEGA2560へのsketchの書き込みが、エラーで出来なかったものを、工夫することで書き込みができることが分かったので、まとめておこうと思う。
まずは設定
普通にArduino IDEを起動して、書き込みを行うと図のようにエラーが発生する。
例では、スケッチの例にあるStandardFirmataを読み込んで、Arduino Megaに書き込もうとしている所。
すると、
avrdude: stk500v2_RecieveMessage(): timeout
なんてエラーが延々と出て書き込みが終了しない。
こんなエラー情報では、何もわからないので、詳細な情報を得られるようにしておく。
「ファイル」->「環境設定」->「より詳細な情報を表示する」の「書き込み」にチェックを入れておく。
コンパイルの情報を見たければ、チェックを入れればいいのだけれど、今回はコンパイルまで終了し、書き込みに失敗しているので、書き込みだけでOK。
具体的な手順
この状態で、コンパイル&書き込みを行うと、さっきより格段に細かい情報が得られるのが分かるはず。
これが右の図。
すると、どんなデータを書き込もうとした。上手くいったとか失敗したとか…。
この状態が最低限必須。
この状態で先に進んでも良いのだけれど、詳細なLOGを見ているうちに、どんどんエラーが増えていくし、エラーをたくさん見ても意味が無いので、起動方法を変更する。
コンソール(Terminal)から、手動で起動してやると、あとの処理が楽になる。
$ arduino もしくは $ /usr/bin/arduino
か、異なるバージョンを入れてたりするなら、そのディレクトリで
$ ./arduino
で起動するはず。
ここまで来たら、書き込みたいsketchを開いて、書き込みを実行する。
すると当然のことながら、先と同じエラーが発生する。
ここで慌てずに、コンソール(端末)で中断(control+C)を実行する。
$ arduino
コンパイル後のスケッチのサイズ:15,196バイト(最大容量258,048バイト)
/usr/share/arduino/hardware/tools/avrdude -C/usr/share/arduino/hardware/tools/avrdude.conf -v -v -v -v -patmega2560 -cwiring -P/dev/ttyACM0 -b115200 -D -Uflash:w:/tmp/build4946465769096413677.tmp/StandardFirmata.cpp.hex:i
avrdude: Version 5.11.1, compiled on Oct 30 2011 at 10:41:10
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is "/usr/share/arduino/hardware/tools/avrdude.conf"
User configuration file is "/home/satoshi/.avrduderc"
User configuration file does not exist or is not a regular file, skipping
Using Port : /dev/ttyACM0
Using Programmer : wiring
Overriding Baud Rate : 115200
avrdude: wiring_open(): releasing DTR/RTS
avrdude: wiring_open(): asserting DTR/RTS
avrdude: Send: . [1b] . [01] . [00] . [01] . [0e] . [01] . [14]
^C
この時点で、コンパイルは終了しているので、書き込みだけ上手く出来れば良いわけで、この画面に表示されているコマンドをそのまま実行してやる。(上の赤い部分)
$ /usr/share/arduino/hardware/tools/avrdude -C/usr/share/arduino/hardware/tools/avrdude.conf -v -v -v -v -patmega2560 -cwiring -P/dev/ttyACM0 -b115200 -D -Uflash:w:/tmp/build4946465769096413677.tmp/StandardFirmata.cpp.hex:i
勝手に改行とかせずに、表示されている行をそのままコピーして貼り付け実行してやればOK。
すると、細かい表示をしながらも、プログレスバーが表示されて、無事書き込みが終了する。
これでエラーが起きること無く、書き込みが完了し、動作させることができる。
結局IDE側(java)の処理の問題のようだ。
単純にforkしてやれば良いような気がするのだけれど…。何か変な処理をしているんだろうな〜と勝手に推測しているんだけれど…。
これで、母艦のMacで書き込んだり、Windowsで書き込んだりせず、Ubuntu上から気持よくは無いけど、とりあえず書き込みができます。
追記
- 「ARDUINO 1.0.4」 が 2013.03.11
- 「ARDUINO 1.5.2 BETA」 が 2013.02.06
にリリースされていましたので、パッケージ管理でなくてもいいやって人は、使えます。
コメント
コメントを投稿
励みになりますので、簡単で良いので一言くださいませ。