こんにちはコハペペです。書き込めなくなってしまった無線LANモジュールを新しい物に交換します。
このような、たくさんのピンで基板にくっついている部品は、ヒートガンではんだを溶かして取り外します。


過去にノートパソコンを修理したり、電子ブックリーダーのコネクタを取ったりするのに使いました。まずは、温まってほしくないところを、アルミ箔でカバーしてポリミドテープで固定します。
image
そして、ヒートガンを6-7cmくらいの距離からしばらく温めます。ヒートガンはドライヤーのように、熱の強さをHiとLowとに切り替えられますが、ハンダを溶かすのにはLowで十分です。温めているとハンダの形や輝きが変わってきます。ハンダが溶けてきた合図です。もうしばらく温めてから、ピンセットでつんつんしてぺりっとはがして取り外します。
image
モジュールが外れた基板のパッドには、余分なハンダが残っています。きれいなこて先で、すくうようして余分なハンダを取っていきます。はんだごてのこて先をきれいにするのには、金属たわしみたいなこて先クリーナーを使っています。

この金属のたわしみたいなのに、こて先をグサグサ刺すときれいになります。とても便利で、水のスポンジには戻れません。
きれいになったパッドにフラックスを塗って、新しいモジュールをはんだ付けします。
image
交換が完了しました。さーてうまく動作するかな。
image
ブレッドボードに戻して、USBをパソコンに刺して、シリアルを受信してみます。

FatalError0
あれーー?Fatal exception (0): が再発してずーっとFatal exceptionのメッセージが流れています。交換したのにおかしい。おかしいぞ。これはモジュールが原因ではなく、回路に問題があるのではないかと考えて、テスターでピンの電圧を測り始めると、なんと、IO0のピンをLowにしているつもりが、IO2のピンをLowにしていました!
なんということでしょう。単純すぎるミスです

ESP-WROOM-02は3つのブートモードがあって、リセット時のIO0,IO2,IO15のピンのHi,Lowによって、ブートモードが変わる仕組みになっています。gitHabのesp8266のwikiには、ピンの状態とブートモードがこう書かれています。
esptools05
本当はIO0をLにして「UART Download mode」にしたかったのですが、IO2がLowだったので、この表にな無いなぞのbootモードになって、Fatal exceptionが大量発生したのでしょう。
IO0につなぎかえると、Fatal exceptionは止まりました。
esptools06
起動時のブートログに boot mode:(1,6) とあります。先ほどのwikiの表の下にboot mode:(x,y)のxはピンのIO15,IO0,IO2の状態を表していると書いてあります。
1は2進数で001なので、IO15=L , IO0=L , IO2=H となり、UART Download modeで起動したことがわかりますね。
ちなみに、間違ってつないでいたときのブートログはどうだったか確かめてみると、リセット直後のログに
esptools07
boot mode:(2,7)とあります。2は2進数で010です。ピンの設定がIO15=L , IO0=H , IO2=L となり、表にはない正しくない設定になっていたことがわかりました。

Fatal exceptionの原因は、とても単純な配線ミスでした。取り外してしまった無線LANモジュールも壊れていないのでしょう。Fatal exceptionが出た時には、リセット直後のブートログにある「boot mode」を確認すると解決のヒントになることがわかりました。
これでファームウェアの更新やarduinoの実験ができるようになりました。よかったよかった。

スポンサードリンク