MacBookでWemos D1 R2 Arduinoを接続してコードをアップロードしようとすると、エラーが表示された。
エラー内容は以下の通りだ。
A fatal esptool-py error occurred: Failed to connect to ESP8266: Timed out waiting for packet headerUser
そしてターミナルを見ると、以前にアップロードしたコードの出力が続けて表示されていた。

おそらく何らかの問題でArduinoに私の書いたコードがアップロードできないようだった。
ChatGPTに何度も聞いても正確な理由を教えてくれず、検索したり、またGPTに聞いたりを繰り返して原因を見つけた。
1. CH340チップセットドライバが問題?
検索で見つかった多くの問題は、CH340チップセットドライバをインストールすることで解決していた。
検索して見つけた公式サイトには次のように書かれていた。

記事を読むと、MacBookでMojave以降のバージョンはチップセットドライバを別途インストールする必要がないそうだ。
Appleが独自のドライバを提供しているため、インストールするとドライバの競合で問題が発生するかもしれない。
そうやって検索しているうちに、ついに問題を発見した。
2. エラーの原因
エラーの原因はUSBハブにあった。
MacBookの特性上、USBポートが不足していたり、AタイプのUSBポートがないため、ハブを使用することになる。
私も下記のようにUSBハブを使ってArduinoを接続した。

このようにすると、Arduinoに送信されるフラッシュ信号のタイミングが微妙に変わり、ボードが自動でフラッシュモードに入れないと言われている。
この問題に関するGitHubのトラブルシューティング内容もある。
こうした問題は、USB-CタイプからUSB-Aタイプへの接続時に顕著だという。

3. 解決方法
USBポートを使ってArduinoを接続した場合、Arduinoを強制的にフラッシュモードに入れるしかない。
まず、ボードのGPIO0(D3)ピンとグランド(GND)ピンを接続する。
そしてボードのリセットボタンを押す。

これでボードがフラッシュモードに入る。
ピンを外せばフラッシュモードから解除されるので、アップロード前にはピンを抜かない。
そしてArduinoでファイルをアップロードしてみると....

アップロードが完了する。
アップロードが終わったらピンを外せば良い。
4. 感想
昨日、Arduinoでいろいろ試してみようと思ったが、これに5時間も費やしてしまった。
それでもこうやって悩んで一つ覚えれば、その記憶はとても長く残る。
次に同じ問題を周りで経験している人がいたら、助けることができそうだ。
昨日の夜から悩んでいたが、ようやくすっきりした。
苦労した後に問題を解決した時のこのスリルはいつも楽しい。

댓글을 불러오는 중...