2021年10月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

最近のトラックバック

« WaveシールドをArduino MegaやArduino Leonardoで使える様にしてみた | トップページ | 知らないとソン!? Arduinoの小ネタ色々 »

2014年6月19日 (木)

Arduinoトラブルシューティング アップロード編

 Arduinoを使っていると色々なトラブルに遭遇しますが、よくある事例やハマりやすい事例などを、トラブルシューティングとしてまとめたいと思います。全体ではインストール→コンパイル→アップロード→実行(回路・プログラム・PC連携)などが有ると思いますが、今回はアップロード編です。

■最初にする事
 なぜかArduinoにアップロードが出来ないなぁと思ったら、まず次の事を行いましょう。
  1. USBケーブルをPCから抜きましょう。(外部電源が有ったらそれも)
    電気的な問題が原因である可能性もあるので、まずは電源を断ちます。
  2. 深呼吸をして落ち着きましょう。
    あわててチェックしても見落としが必ず出ます。まずは落ち着いて下さい。
  3. Arduinoを置いている場所に問題が無いかチェックして下さい。
    Arduinoは基板がむき出しです。金属の上に置いてしまうと回路がショートしてしまいます。またパーツの切りくずの上に乗ってしまっている事もあり得るので、裏返して確認しましょう。
  4. 回路にミスが無いかチェックして下さい。
    回路でショートや断線や接続ミスが無いかチェックして下さい。特に電源のプラス(5Vや3.3V)とマイナス(GND)のショートがあると危険です。
    (回路のチェック方法やミスのあるあるについては、また別の機会に解説したいと思います。)
    回路のミスが見つけにくそうな場合、一旦すべての接続を外しArduino単体にして、以下のチェックを進めるとよいでしょう。
  5. デジタルI/Oの0番ピン,1番ピンの接続を外してみましょう。
    多くのArduinoボードではデジタルI/Oの0番ピン(D0:Rx),1番ピン(D1:Tx)をUSB-シリアル変換チップとの接続に兼用しています。ここに他の回路が繋がっているとアップロードが正しく行われない場合があります。一旦このピンへ繋がっているジャンパワイヤやシールドを外して下さい。
 電気的なミスがアップロードに影響している場合、アップロードが出来ないばかりか回路やArduinoやPCのUSB端子の破壊にも繋がりかねません。簡単な回路と思っても、念のためチェックしましょう。

■USBケーブルを挿す前にする事
 回路に間違いが無いと分かっても直にUSBケーブルを挿さないで下さい。その前にチェックしたい項目があります。
  1. Arduino IDEのマイコンボードの選択が合っているか確認して下さい。
    ここを間違ってるはずが無いって思い込みで時間をつぶしてしまう事例が多数見られます。思い込みは禁物です。「ツール」→「マイコンボード」で選択しているマイコンボードと使っているマイコンボードとが一致しているのを確認して下さい。またArduino IDEの右下の所にも選択中のマイコンボードとシリアルポートが表示されていますので、ここを見ても良いです。
  2. そもそもコンパイルに問題が無いか確認しましょう。
    Arduinoの扱いに慣れてくると、つい「検証」ボタンを使わずにスケッチを書いて直ぐに「アップロードボタン」で書き込みしてしまいがちです。ここで、そもそもコンパイルが上手くいっているのかどうか「検証」ボタンでチェックして下さい。
  3. シリアルポートの確認をする為に一覧を記録して下さい。
    現在はUSBケーブルを挿していないので、Arduinoに繋がるシリアルポートは存在していないはずです。このあとUSBケーブルを挿して認識されたポートが選択するべきポートになるので、まずは「ツール」→「シリアルポート」で一覧を表示させ、それを記録して下さい。スクリーンショットを取るかスマートフォンなどのカメラで撮影するのが簡単ですね。
    記録するのが終わったら、一旦一覧を閉じます。(開いたままでは変化を見られません)
 これでやっとUSBケーブルを挿す準備が出来ました。もう一度深呼吸してUSBケーブルをPCに差し込んで下さい。

■USBケーブルを差し込んでからする事
 やっとこれで、PCとArduinoが繋がります。次の手順でチェックしましょう。
  1. シリアルポートが増えているか確認し、それを選択して下さい。
    Arduini IDEで改めて「ツール」→「シリアルポート」の一覧を出すと、先ほど記録した一覧にない新たなポートが出現しているはずです。それが選択選択すべきシリアルポートです。
  2. mac OSXの場合「/dev/tty.〜」と「/dev/cu.〜」の2種類が同時に現れますがどちらを選んでも大丈夫です。
    WindowsでArduino Leonardo,micro,EsploraなどATmega32U4ベースのマイコンボードでファームが古い場合、挿した直後と正常起動後のポートが変わる場合があります。ボード上の「L」LEDの点滅が終わってからポートを確認して下さい。最新のファームの場合、「L」LEDが光らず直ぐに使える様になる様です。

    ※シリアルポートが増えない場合、次の問題が考えられます。
    ・USBシリアルアダプタ部のデバイスドライバがインストールされていない
     あるいはUSBシリアルアダプタ部が正しく認識されていない。
     → ドライバを正しくインストールする。
    ・USBケーブルに不具合がある。(断線している・充電専用ケーブルだった等)
     → ケーブルを交換する。
    ・USBポートに不具合がある。
     → 違うポートや違うパソコンで試してみる。
    ・USBシリアル変換チップが機能していない
     → アダプタの場合は他の物に交換する。
       マイコンボード上のチップの場合は、修理が難しいかもしれません。
  3. 実際のアップロードを行う
    やっとアップロードです。コンパイルのチェックはしているので、「アップロード」ボタンで書き込みを行って下さい。
    エラーメッセージが出ずに書き込みが行われたでしょうか?
  4. それでもアップロード出来なかった場合、リセット技を使ってみる
    Arduino IDEのアップロードボタンを押した後、コンパイルからアップロードに移行するタイミングでマイコンボード上のリセットボタンを押す技です。
    マイコンボードはリセットボタンから手が離れた時点からアップロードの送信待ちに入るので、コンパイル中にリセットボタンを押したままにし、アップロードに移行するタイミングでリセットから手を離すのもやってみましょう。
  5. パソコンを再起動してみる。
    もしかするとパソコンの方に原因があるかもしれません。念のため一度パソコンを再起動してからアップロードを試してみましょう。
■個別の事例
  • Windows 8/8.1 + Unoなど
    Windows 8から署名されたデバイスドライバ以外ではインストール手順が難しくなっています。最新のArduino IDE 1.0.5-r2では修正されているはずですが、上手くいかない場合、こちらの記事をご参照ください。
  • FTDIのUSBシリアル変換チップ + mac OSX
    Arduino Duemilanoveや同等の互換機、あるいはFTDIのチップを使ったUSBシリアル変換モジュールを外付けにしている場合、最新のIDEにはドライバが付いていないので、FTDIのダウンロードページからファイルを取得してインストールする必要があります。こちらの記事をご参照ください。
    またOSX 10.9の場合は、OSにapple製のFIDIチップ用ドライバがあらかじめインストールされていて、これがArduinoと相性が悪いようです。このドライバを使用しない様に設定し、FTDI製のドライバをインストールする必要があるそうですが、手順がまとまっているページを把握出来ていないので、検索等で調べて下さい。
  • Japanino + mac OSX
    Japaninoは学研の「大人の科学マガジンVol.27」の付録マイコンボードで、Arduino互換です。ですがUSBシリアル変換に純正のArduinoとは違った物を使っているためドライバの相性問題が出ています。大人の科学マガジン本誌やQ&Aにも書かれていますが、リセット技を使ってアップロードを行って下さい。
■他に考えられる原因
 ここまで色々試してみて上手くいかないようならマイコンボードそのものが正常に機能していない可能性もあります。Arduino Unoの様にマイコンチップが交換出来る場合は交換チップを入手して試してみるのも良いかもしれません。

 さて、今回はアップロード編としてArduinoのトラブルシューティングの手順をまとめてみました。こちらの方法で上手くいった場合、TwitterのIDをお持ちでしたら@maris_HYまでご報告いただけると幸いです。また上手くいかなかった場合も、お気軽にご相談ください。追加の情報もあれば、追記して行きたいと思います。

« WaveシールドをArduino MegaやArduino Leonardoで使える様にしてみた | トップページ | 知らないとソン!? Arduinoの小ネタ色々 »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: Arduinoトラブルシューティング アップロード編:

« WaveシールドをArduino MegaやArduino Leonardoで使える様にしてみた | トップページ | 知らないとソン!? Arduinoの小ネタ色々 »

ウェブページ

無料ブログはココログ