これまで「M5Stamp Pico」を何台か購入し、さまざまな用途のIoTデバイスとして使ってきました。
今回、再度「M5Stamp Pico」を購入したのですが、いざ使おうと思ったところ、Arduino IDEからスケッチが書き込めないという問題が生じました。
書き込み中に以下のようなエラーメッセージが表示されます。
Serial port /dev/cu.usbserial-XXXXXXXX
Connecting........_____....._____....._____....._____....._____....._____.....____スケッチの書き込み中にエラーが発生しました
_
A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header
今回購入したのは4台ですが、いずれも書き込みができません。
私は「MacBook Pro(Monterey)」でArduino IDEを使っています。
以前、「M5StickC」でも同様の問題が発生したことがありました。その際は、MacのOSバージョンに依存する現象だったため、今回も同様に、Macに特化した問題ではないか?と考えました。
スケッチの書き込みには、「M5Stamp Pico DIY Kit」に付属している「ESP32-DOWNLOADER」を使っています。
「ESP32-DOWNLOADER」には「CP2104」「CH9102F」のいずれかが搭載されていますが、私の持っているものに搭載されているのは「CP2104」です。
まずは、この「CP2104」用のUSBドライバを再インストールしてみました。
こちら のページから最新版のドライバをダウンロードしてインストールしたのですが、状況は変わりませんでした。
このダウンローダを使っている限りは、どうにも対処のしようがないのでは?と考え、別の方法で書き込んでみることにしました。
以前、「ESP-WROOM-32 DIP化キット」にスケッチを書き込むために、書き込み装置をつくったことがあります(記事は こちら)。
この書き込み装置を使ってみることにしました。
ブレッドボードで同じ回路をつくり、「M5Stamp Pico」をつないでみたのですが、状況は変わらず、書き込みできませんでした。
これ以外の対策を思いつかないため、泣く泣くMacの利用を諦め、Windows PCでスケッチを書き込むことにしました。
しかし、わざわざWindows PCでArduino IDEの環境構築を行い、スケッチを書き込んでみたにも関わらず、なんと、これでも書き込みができませんでした。
ここまで、Macに特化した問題だと考え、色々と悩んでいましたが、結局そうではなく、「M5Stamp Pico」側の問題だということになります。
ところで、「M5Stamp Pico」とパソコンをつなぎ直したりして、いろいろと試していたところ、Arduino IDEのシリアルモニタに「何も表示されない」「初期状態でインストールされているプログラムのメッセージが表示される」「強制リブートを繰り返しているようなメッセージが表示される」など、表示内容がまちまちなことに気付きました。
もしかしたら、端子の接触の問題かもしれません。
「M5Stamp Pico」では、基板にあいている穴(スルーホール)にダウンローダの端子を差し込むことで両者を接続します。
このような接続方法では接触が不安定になるため、この部分で接続の問題が起きている可能性があります。
試しに、スケッチの書き込み中に、ダウンローダを「M5Stamp Pico」にギュッと押しつけるようにすると、スケッチを半分ぐらい書き込んだ後にエラーとなりました。
これまでとは状況が変わっており、やはり接触の問題のようです。
より確実に接続するための方法を色々考えましたが、どれもうまくいきません。
仕方がないので、「M5Stamp Pico」にピンソケットをはんだづけすることにしました。
ダウンローダをつなぐ6ピン側のみ、ピンソケットを取り付けました。
この状態で確認したところ、4台とも安定して書き込みができるようになりました。
色々と悩んでいましたが、結局は非常に初歩的な問題でした。
同時に購入した4台とも同じ症状だったため、当初はまさかデバイス側の問題だとは思いませんでしたが、今回購入したものが全て同じロットで、そのロットではスルーホールが大きめに仕上がっており、その結果接触不良が起きやすくなっている、とかいう原因かなぁ?と思います。