ESP32が認識しないときに最初に確認すべきこと
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とパソコン間にUSB-シリアル変換ICが介在しますので、変換ICに対してドライバーが必要になります。
このドライバーがパソコン側にインストールされていないと、COMポートとして認識されない状態となります。
4.MacOSでのドライバインストール方法と注意点
ESP32開発ボードの多くは「CH340」や「CP210x」といったUSBシリアル変換チップを搭載しています。
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で正しいボードが選択されていない
ESP32搭載のEVAボードの選択が一致していない場合、認識に問題が発生します。
EVAボードがカスタム製作の場合も類似ボードの選択が必要です。
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 を明示指定
・Mac/Linuxなら /dev/ttyUSB0
や /dev/cu.SLAB_USBtoUART
を確認