Arduinoのデバイスが認識されない場合の修理/対処方法 [ATmega16U2]
Arduino UNOにUSBケーブルを差してもパソコンのデバイスマネージャーで認識されずに、IDEで開発が出来なくなった場合の修理、対処方法です。

前提条件
1. Arduinoのデバイスがパソコンで認識されなくなった。
2. USBケーブルを差すと電源が供給されている。
3. リセットボタンを押すとデジタル13ピンの横にある小さいオレンジのLEDが点滅する。
3番目がダメな場合は「ブートローダ」が原因の可能性が高いです。ブートローダはATmega328Pにブートローダを書き込むをご覧ください。
原因
Arduinoに搭載されているAtmel(アトメル)の「ATmega16U2」のデータが消えた、またはデータが壊れた可能性があります。

このATmega16U2はUSBコントロール機能(USBシリアル変換)を有していますので、これが動作しないとArduinoはパソコンで認識されません。
やること
ATmega16U2を「DFUモード」(ファームウェア書き込みモード)にします。
次にAtmelの純正アプリである「FLIPツール」を使用して、ATmega16U2にUSBシリアルのファームウェアを書き込みます。
※このファームウェアはArduinoが提供している純正品です。
使用部品・材料
総額で約100円です。(Arduino本体の値段を除く)
部品/材料 | 値段 | 備考 |
---|---|---|
ジャンパーピン緑(2.54mmピッチ)(25個入) | ¥100 | 色はなんでもOKです。 私は2.54mmコネクタお試しセット(K-00173)に同梱されているものを使用しました。 秋月電子の通販コード(P-03692) |
ジャンパーピンがない場合は「カーボン抵抗器」で代用が可能です。(後述)
1. ATmega16U2をDFUモードにする
ArduinoのUSBコネクタ付近にある6本足のICSP(for USB interface)の左2本にジャンパーピンを差します。カーボン抵抗器を使用する場合は同じように足と足を併せて下さい。(ICSPの2本を導通[ショート]させる)

次にArduinoにUSBケーブルを差します。電源が入ったまま、3~5秒ぐらいしてから、ジャンパーピン(抵抗器)を外します。
すると、デバイスマネージャで次のように表示されるはずです。

この時点で「ATmega16U2 DFU」が表示されていない場合は、恐らくArduinoの何処かがハードウェア的に壊れています。
2. FLIPのダウンロード
Atmel社(2016年にMicrochip社が買収)の公式サイトから「FLIP」をダウンロードします。
http://www.atmel.com/tools/FLIP.aspx
私はJAVAランタイム同梱の「FLIP 3.4.7 for Windows (Java Runtime Environement included)」をダウンロードしました。環境に合わせて任意のファイルをダウンロードして下さい。
3. FLIPのインストール
インストールする際はファイルを右クリックして「管理者として実行」(管理者権限)で実行します。

インストール風景

4. FLIPの実行 その1
FLIPを実行していじくると...
「コンピューターにlibusb0.dllがないため、プログラムを開始できません。この問題を解決するには、プログラムを再インストールしてみてください。」や「atlibusbdfu.dll not found」のエラーが発生します。

どうやら、ドライバは自動でインストールされないようです。
5. ドライバのインストール
デバイスマネージャーを開いて「ATmega16U2 DFU」を右クリックして「ドライバーソフトウェアの更新」を選択します。

「ドライバーを手動でインストール」を選択します。

FLIPのインストールフォルダにある「usb」フォルダを選択します。

次へボタンを押すとドライバがインストールされます。
最終的にデバイスマネージャーで「不明なデバイスの黄色いマーク」が取れていればOKです。

6. FLIPの実行 その2
FLIPを実行して左上の「IC」アイコンを押します。そして、「ATmega16U2」を選択します。

次に「IC」アイコンの右にある「USBケーブル」アイコンで「USB」を選択します。

「USB Port Connection」の「OPEN」を選択します。

すると、Arduinoの各LEDが次のように点灯します。

次にメニューの[File][Load HEX File]を選択します。

Arduino IDEのインストールフォルダの奥深くにある「Arduino-usbserial-atmega16u2-Uno-Rev3.hex」を選択します。
C:\Program Files (x86)\Arduino\hardware\arduino\avr\firmwares\atmegaxxu2\arduino-usbserial\
左下にある「Run」ボタンを押します。

そして、左下にあるステータスバーに「Verify PASS」が表示されればファームウェアの書き込みが成功です。

FLIPを終了させて、USBケーブルを引っこ抜きます。
7. Arduinoの復活!
いよいよ、Arduinoが復活したかわかります。
USBケーブルをArduinoに差します。すると、自動でドライバがインストールされます。その時に「ピコン♪」の音と共にデバイスマネージャーのポートに「Arduino UNO」と表示されればArduinoの復活です。

念のために、LEDのテストでもすると良いです。
参考サイト
atmel Flip を使用時のatlibusbdfu.dll not foundの対処法
壊れたArduinoが直る?(場合もあるかもしれない)
最後に
「Arduino Uno R3」はスイッチサイエンスでは永久保証なので、ハードウェア的には簡単には壊れない設計のようです。
私がATmega16U2のデータを破損したのは、ICSPに9V電池のリード線が触れてしまって「ドロン♪」って音が鳴ったときだと思います。
お疲れ様でした。
掲示板
ArduinoやRaspberry Piなどの電子工作の掲示板を作成しました。質問やわからない事は電子工作 (Arduino・ラズパイ等)でユーザー同士で情報を共有して下さい。