NANOが壊れました

Spread the love

NANOが壊れました。しかし、NANOといっても、本家のArduino NANOではなく、NANO互換機です。アリエクなら、300円程度で購入できますので、諦めはつきます。しかし、捨ててしまう前に何とか、復旧を図ってみたいと思います。

NANOが壊れた状況

NANOのブートローダーを書き換えようとしたところ、書き換えができませんでした。

ちなみに、USBケーブルを介してPCに接続すると、NANOの電源LEDは点灯します。したがって、電源周りの故障ではないようです。

NANOの電源LEDは点灯します
NANOの電源LEDは点灯します

また、PCに接続すると、シリアルポートは割り当てられます。したがって、USB-シリアルコンバーターは動作しているようです。

そこで、スケッチの書き込みができるか、試してみました。すると、以下のようなエラーが出て、書き換えできませんでした。

NANOにスケッチを書き込むと発生するエラー
NANOにスケッチを書き込むと発生するエラー

エラーの状況から察すると、ブートローダーが応答していないようです。

NANOが壊れたからブートローダーを上書きしてみる

どうやら、壊れたNANOはブートローダーが動作していないようです。そこで、UNO互換機にArduinoISPスケッチを書き込み、ブートローダーを書き込みました。

しかし、残念なことにブートローダーの書き込みも失敗しました。

NANOが壊れたのでブートローダーを書き込んでみる
NANOが壊れたのでブートローダーを書き込んでみる

シグネチャーが違っているようなので、avrdude.confを書き換えてみました。今度は、ATmega328pbのシグネチャーに書き換えて試してみました。

ATmega328pbのシグネチャーでもダメです
ATmega328pbのシグネチャーでもダメです

avrdudeを直接たたいてシグネチャーを読みだしてみる

arduino.ideを介してのブートローダー書き込みは失敗しました。そこで、今度はavrdudeを直接たたいてシグネチャーを読みだしてみました。

シグネチャーの読み出しも失敗
シグネチャーの読み出しも失敗

壊れたNANOは、かなり重症のようです。avrdudeを直接たたいても、シグネチャーは読みだせませんでした。

ちなみに、普通はこんな風にシグネチャーが読みだせます。-Fオプションをつけていますので、誤ったシグネチャーを設定しても、正しい値を読みだせます。

シグネチャー読み出し成功例
シグネチャー読み出し成功例

シグネチャーも読みだせないということは、MCUが壊れてしまったということかも知れません。最後の手段として、MCUをまっさらにリセットする方法もあるらしいです。しかし、今回はかなり重症で、私の手に負えません。壊れたNANOはオブジェにします。

シグネチャーの謎が一つ解けた

壊れたNANOを何とか復活させようと頑張ってみました。しかし、残念ながらうまくいきませんでした。しかし、avrdudeを直接たたいて分かったことがあります。それは、シグネチャーです。

Arduino互換機の場合、MCUには安価なATmega328PBが使われています。これは、本家Arduinoで使われているATmega328Pの後継機です。Arduinoとして使っている場合に、恩恵はありませんが、328PBの方が高機能です。しかし、価格は安く抑えられています。この手の電子部品ではよくあることです。

もちろん互換性は確保されています。しかし、シグネチャーが異なるため、ブートローダー書き込み時には、ひと手間必要です。avrdude.conf内のシグネチャーを書き換えなければなりません。

書き換後、avrdude.confを戻さずに、スケッチを書き込むとエラーが発生します。これが謎でした。しかし、この謎が解けました。

それは、ブートローダーが動いている場合は、ブートローダーがUART経由でシグネチャーを返します。しかし、ブートローダー書き換え時にはUARTを使いませんので、ブートローダを介しません。そのため、MCUが直接シグネチャーを返します。

つまり、通常はブートローダーにハードコーディングされたシグネチャーが返されるわけです。そのため、違うMCUを使用した互換機でも、本家Arduinoと同じ動きになるわけです。

コメントを残す

This site uses Akismet to reduce spam. Learn how your comment data is processed.