ESP32が認識しないときに最初に確認すべきこと
ESP32をUSBケーブルでPCに接続しても認識されない場合、原因はUSBケーブル、USBドライバ、開発環境、ESP32側のハードウェアなど複数考えられます。
まずは、現在発生している症状を確認してください。
| 症状 | 最初に確認すること |
|---|---|
| USBを接続してもPCに反応がない | USBケーブル、USBポート、電源供給 |
| 不明なUSBデバイスとして表示される | USB機器の識別情報、ドライバ |
| COMポートが表示されない | USB-UART変換IC、USB機能内蔵の有無、ドライバ |
| COMポートはあるが書き込めない | ポート占有、BOOT/EN、書き込みモード |
| 書き込み後にプログラムが起動しない | 電源、起動時のGPIO状態、ファームウェア |
特に重要なのは、「PCがESP32を認識していない」のか、「PCは認識しているが書き込みに失敗する」のかを区別することです。
この違いによって確認すべき項目が変わります。
1.USBケーブルの不良や充電専用ケーブルを使っていないか
パソコンとESP32間を接続しているUSBケーブルに問題がないか?です。
物理断線している場合は認識されません。
USBケーブルが充電専用ケーブルである場合、電源ラインだけが接続されて通信線は接続されていませんのでパソコン側で認識されません。
2.接続ポート(USB2.0/3.0)やケーブル長の問題
パソコンのデバイスマネージャーでCOMポートとして認識されいるのか確認が必要です。
認識されていなければ、ドライバーが割当たっていない可能性が高いです。
他、USBケーブルが無駄に長い(例えば、20mとか)場合、通信が不安定になります。
USBの規格では、機器間配線長はUSB2.0で5m。USB3.Xで3mと定義されています。
ドライバ関連の原因
3.Windowsの場合、必要な「CH340/CP210x」ドライバが入っていない
ESP32開発ボードには、CP210xやCH340などのUSB-UART変換ICを搭載しているものがあります。
このタイプのボードでは、USB-UART変換ICをPC側で正しく認識させる必要があります。対応ドライバが利用できない場合、COMポートが表示されないことがあります。
一方、ESP32-S3やESP32-C5などにはUSB機能を内蔵した製品もあります。この場合、ボードのUSB接続方式によっては外付けUSB-UART変換ICを使用しません。
そのため、ドライバをインストールする前に、使用している開発ボードのUSB接続方式を確認することが重要です。
4.MacOSでのドライバインストール方法と注意点
ESP32開発ボードの多くは「CH340」や「CP210x」といったUSBシリアル変換チップを搭載しています。
macOSでUSB-UART変換ICを使用する場合、搭載チップやmacOSのバージョンによって、追加ドライバが必要な場合と不要な場合があります。
まずはESP32を接続した状態で、ターミナルから次のコマンドを実行してシリアルデバイスを確認します。
ls /dev/cu.*
接続前後でデバイスが追加されるか確認してください。
追加されない場合は、使用しているUSB-UART変換ICを特定し、メーカーが案内する対応ドライバとmacOSの対応状況を確認します。
なお、不要なドライバを追加すると競合する可能性があるため、最初からドライバをインストールするのではなく、現在の認識状態を確認することをおすすめします。
CH340の場合
①メーカー配布サWCH公式サイト公式サイトからドライバをダウンロード
②.pkgファイルを実行してインストール
③インストール後、Macを再起動
④Arduino IDEやPlatformIOで「ツール → シリアルポート」を確認
注意点としては以下があります。
・MacOS High Sierra以降では、初回インストール時に「システム環境設定 → セキュリティとプライバシー」に「開発元が未確認」などの警告が出て、インストールがブロックされることがあります。
ここは、「許可」を押して再インストールすると正常に使えるようになります。
・Apple Silicon (M1/M2 Mac) では、Intel用の古いドライバが動作しないことがあるため、最新バージョンを必ず使用してください。
5.ドライバの競合や古いドライバの影響
ドライバを複数インストールしていると、システムが正しいドライバを選択できずにESP32を認識しない場合があり、特に古いCH340やCP210xのドライバが残っていると競合が起きやすいです。
例えば・・・
・COMポート / シリアルポートが一覧に表示されない
・認識はされているが、デバイス名が「USB2.0-Serial」など曖昧な表示になる
・書き込み途中で失敗する
この様な場合、以下を試してみてください。
・不要な古いドライバを削除する
windowsの場合、「デバイスマネージャー」から削除を行う
Macの場合、/Library/Extensions/ 内の古い usbserial.kext を削除
・最新ドライバをインストールし直す
・再起動後、USBポートを変えて接続し直す
開発環境の設定ミス
6.Arduino IDE / PlatformIOで正しいボードが選択されていない
Arduino IDEやPlatformIOでボード設定を間違えていても、それだけでOS側のUSBデバイス認識が失敗するとは限りません。
ボード設定の間違いは、主にファームウェアのビルドや書き込み、書き込み後の動作に影響します。
まずOS側でCOMポートやシリアルデバイスが認識されていることを確認し、その後、開発環境で正しいボードとシリアルポートを選択してください。
7.ESP-IDF利用時の設定トラブル
ESP-IDFを使って開発するとき、パソコン側ではESP32が「シリアルデバイス」として認識されていても、IDF Monitorや書き込みコマンドが動作しないケースがあります。
これは環境設定やパスの問題で発生することが多いです。
代表的なトラブル内容
1.環境変数が正しく設定されていない
・idf.py flash を実行すると esptool.py not found などのエラーが出る
・原因:ESP-IDFのexport.sh (Linux/Mac) や export.bat (Windows) を実行していない
⇒解決策の一つ:
・ターミナルを開いたら毎回 source ~/esp/esp-idf/export.sh を実行
・Windowsの場合はESP-IDF PowerShellを使用するのが確実
2.シリアルポートの設定ミス
・idf.py -p COM3 flash のようにポート指定が必要
・自動認識されない環境では -p オプションを忘れると「No serial port found」エラーになる
⇒解決策の一つ:
・idf.py -p [ポート名] flash を明示指定
例えば、windowsでは idf.py -p COM3 flash とする。
COM3は接続ポートによるのでご自身の環境で確認後、変更の必要があります。
・Mac/Linuxなら /dev/ttyUSB0 や /dev/cu.SLAB_USBtoUART を確認
「関連記事リンク」
■ESP32 COMポートが見つからない原因事例を記載しています。
->「ESP32 COMポートが見つからない原因」
■ESP32を使う際の機能とピンアサインの注意事項を記載しています。
->「ESP32を使う時には注意! 機能とピンアサインの落とし穴」
■ESP32 ハードウェア側の原因と対策を記載しています。
->「ESP32 ハードウェア側の問題集」