適切なWi-Fi対応マイクロコントローラの選択は、IoT製品開発において重要な決断です。Espressif Systemsが製造するESP8266とESP32は、ワイヤレス接続と組み込み処理における異なるアプローチを表しています。本記事では、アーキテクチャ、周辺機器、通信機能、実用的な設計上の考慮点を技術的に比較し、エンジニアや調達チームが自社のアプリケーション要件に最適なモジュールを評価するのに役立ちます。
ESP8266およびESP32アーキテクチャの概要
ESP8266とESP32の両方は、マイクロコントローラ、Wi-Fiトランシーバー、周辺機器インターフェースを単一のダイに統合したシステムオンチップ(SoC)ソリューションです。32ビットRISCアーキテクチャを共有し、共通のシリアルプロトコル(SPI、I2C、UART)をサポートしているにもかかわらず、計算資源や機能セットは大きく異なります。
このESP8266は、80MHzで動作するシングルコアのTensilica Xtensa LX106プロセッサを中心に構築されています(一部の実装では160MHzまでオーバークロック可能)。802.11 b/g/nのWi-Fi接続、128 KBのRAM、通常4 MBの外部フラッシュメモリを提供します。その洗練された設計は、ワイヤレスインターネットアクセスが主な要件となるアプリケーションにおいて、コスト効率と統合のしやすさを優先しています。
ESP32はデュアルコアのTensilica Xtensa LX6プロセッサを採用しており、80 MHzから240 MHzまでのクロック速度を設定可能です。520KBのSRAM、4MBのフラッシュ(拡張可能)、Wi-Fiと並行してBluetooth 4.2(BR/EDRおよびBLE)を追加しています。拡大されたGPIO数、追加のADC/DACチャネル、ハードウェア暗号加速により、より要求の高い組み込みアプリケーションに適しています。

ESP8266:設計特性と典型的なユースケース
コア仕様
このESP8266は一般的にESP-12EまたはESP-12Fモジュールの形状で実装されており、統合型LDOレギュレータを介して3.0Vから3.6Vの電源から動作します。チップは以下の機能を提供します:
- 80/160 MHzのシングルコア32ビットプロセッサ
- プログラム実行およびデータ用128KB RAM
- 4 MB 外部SPIフラッシュ(標準構成)
- 802.11 b/g/n Wi-Fi(ステーションモードとソフトAPモードの両方)
- 多重機能を持つ17 GPIOピン
- 10ビットADCチャネル1本
- SPI、I2C、UART、PWMのサポート
すべてのGPIOピンは3.3Vの論理レベルで動作し、5V耐性はありません。5V信号に直接接続すると装置が損傷します。5Vシステムと接続する際にはレベルシフターや電圧分配器が必要です。
実用的な設計上の考慮事項
ESP8266のシングルコアアーキテクチャにより、Wi-Fiスタック処理はアプリケーションコードとCPU時間を共有します。アクティブなWi-Fiの送信や受信中にユーザーコードの実行が中断されることがあり、タイミングに敏感なアプリケーションではリアルタイムのパフォーマンスに影響を与えることがあります。単純なテレメトリ、センサーデータロギング、またはサブミリ秒のタイミングが重要でないリモートコントロール作業では、この制限はほとんど問題になりません。
アクティブなWi-Fi伝送時の消費電力は170mA以上に達することがあります。このモジュールは、Wi-Fi接続を維持しながら電流消費を約15 mAに減らすモデムスリープモードと、20 μA未満のディープスリープモードをサポートしていますが、ディープスリープには外部のウェイクアップ信号またはタイマーが必要です。
限られたADCチャネル数(1つの使用可能なチャネル)とGPIOピンは、複数のアナログセンサーや広範な周辺インターフェースを必要とする設計を制約する可能性があります。このような場合、外部多重化器やI/Oエキスパンダーを使用することもありますが、複雑さとコストが増します。
典型的な応用例
- Wi-Fi接続センサー(温度、湿度、動作)
- スマートスイッチおよびリレー
- 環境モニタリングステーション
- 教育および試作プロジェクト
- 低コストのIoTエンドポイントで、処理要件が控えめです
ESP32:複雑システム向けの強化能力
コア仕様
ESP32は、通常ESP32-WROOM-32またはESP32-WROVERモジュールのバリアントに搭載されており、機能セットを大幅に拡張しています:
- デュアルコア32ビットプロセッサ(80-240 MHz)
- 520 KB SRAM、外部PSRAMオプション最大8 MB(WROVERバリアント)
- 4 MB以上のフラッシュメモリ
- 802.11 b/g/n Wi-Fi(高度な機能付き)(Wi-Fi Direct、後の改訂版でWPA3サポート)
- Bluetooth 4.2(クラシックおよびBLE)
- 48本のGPIOピン(通常モジュールで25+ピンが分離)
- 18×12ビットADCチャネルと2×8ビットDACチャネル
- 10の静電容量式タッチセンサー入力
- ハードウェア暗号加速(AES、SHA、RSA)
- CAN 2.0、I2S、SPI、I2C、UARTインターフェース
ESP8266と同様に、ESP32も3.3Vの論理レベルで動作します。統合型LDOレギュレータは3.0Vから3.6Vまでの入力電圧を受け付け、開発ボードには5V USB電源を受け入れる追加のレギュレーターが含まれることが多いです。
デュアルコア処理とタスク管理
ESP32のデュアルコアアーキテクチャにより、一方のコアはWi-FiおよびBluetoothスタック操作に専用、もう一方はアプリケーションコードの実行に割り当てられます。この分離によりリアルタイムの応答性が向上し、センサーデータ、通信、制御アルゴリズムの並列処理が可能になります。同時BluetoothとWi-Fiの動作が必要な設計や、複数のセンサーからのデータストリームを処理する設計において、このアーキテクチャは測定可能な性能向上を提供します。
Espressifが提供するFreeRTOSベースのファームウェアは、タスクを特定のコアにピン留めできるため、開発者はワークロードの分配やタイミング動作を明確に制御できます。
拡張周辺集合
ESP32の18チャンネルのADCチャンネルにより、外部多重化なしで複数のアナログセンサーを直接接続できます。12ビットの解像度は、ESP8266の10ビットADCよりも細かい粒度を提供し、精密センシング用途で重要です。2つのDACチャンネルは、外部部品を使わずにオーディオ合成、アナログ制御信号、波形生成をサポートします。
静電容量式タッチセンシングはハードウェアで実装されており、ユーザーインターフェース設計における個別のタッチコントローラICの必要性を排除します。CANバスインターフェースにより、自動車および産業用プロトコルのサポートが可能となり、適用可能なシステムの範囲を広げています。
Bluetoothとワイヤレス共存
Bluetooth ClassicとBLEの統合により、デザインの可能性が広がります。BLEはスマートフォン、ウェアラブル、ビーコンによる低消費電力通信を可能にします。Bluetooth Classicはオーディオストリーミングとレガシーデバイスの互換性をサポートしています。Wi-Fiと組み合わせることで、ESP32はBLEセンサーからデータを収集しWi-Fi経由でクラウドサービスに転送するゲートウェイとして機能したり、ローカル(Bluetooth)とリモート(Wi-Fi)の両方の制御を提供するデュアルインターフェースデバイスとしても機能します。
BluetoothとWi-Fiは同じ2.4 GHzのRFフロントエンドを共有しており、Espressifの共存メカニズムは無線へのアクセスをタイムマルチプレックスします。両方のプロトコルを同時に有効にすることができますが、各リンクのピークスループットは独立して動作する場合よりも低くなります。ほとんどのIoTアプリケーションにおいて、このトレードオフは許容範囲です。
典型的な応用例
- 複数のセンサーからデータを集約するIoTゲートウェイ
- 音声ストリーミングおよび音声起動デバイス
- BLEとWi-Fiを必要とするウェアラブルデバイス
- ホームオートメーションハブ
- CANバスを用いた産業用監視・制御システム
- 複雑な電力状態管理を持つバッテリー駆動デバイス
ピン構成とGPIO比較
ESP8266 GPIOレイアウト
ESP8266は17本のGPIOピンを露出させますが、いくつかは起動時間や動作上の制約があります。
- GPIO0:通常動作のために起動時にハイでなければなりません;ローを引くとフラッシュプログラミングモードに入ります
- GPIO2:起動時に高負荷でなければなりません。多くの場合、オンボードLEDに接続されています
- GPIO15:起動時に低状態であること
- GPIO16:リアルタイムクロックに接続;ディープスリープの起床に使われますが、Interrupt on Changeは使えません
- ADC0:単一のアナログ入力(通常A0とラベル付けされ、0-1.0 Vの電圧)を測定します
これらのピン制約は、PCBレイアウトやファームウェア初期化において慎重な計画が必要です。GPIO0、GPIO2、またはGPIO15を汎用I/Oとして使用することも可能ですが、それらのブート時の状態を考慮しなければなりません。
ESP8266は1つのハードウェアSPIインターフェースと1つのI2Cインターフェース(ビットバンまたはハードウェア)をサポートし、両者とも多重化を通じて利用可能なGPIO間で共有されます。
ESP32 GPIOレイアウト

ESP32の48個のGPIOは専用機能と多重化機能に分かれています。主な特徴は以下の通りです:
- ADC1およびADC2に分散した18チャネルのADC(注:Wi-Fiが有効な時はADC2は使用できません)
- 2つのDACチャネル(GPIO25、GPIO26)
- 10個の静電容量式タッチピン
- ブートモードを決定するストラップピン(GPIO0、GPIO2、GPIO5、GPIO12、GPIO15);パワーアップ時も同様の注意が必要です
- ディープスリープ時の使用用RTC GPIOサブセット
ESP32の周辺インターフェースは、IO_MUXとGPIOマトリックスにより柔軟性が高く、ほとんどのデジタル周辺機器(UART、SPI、I2C)を幅広いピンにマッピングできます。この柔軟性によりPCBの配線が簡素化され、レイアウトの制約にも対応できます。
ESP32は3つのUARTインターフェース、3つのSPIインターフェース、2つのI2Cバスを同時にサポートし、外部多重化やプロトコルブリッジなしで複雑なマルチペリフェラル設計を可能にします。
消費電力とバッテリー動作
電力効率は、バッテリー駆動やエネルギーハーベスティング用途において極めて重要な要素です。
ESP8266 パワーモード
- アクティブ(Wi-Fi TX):~170 mA
- アクティブ(Wi-Fi RX):~60 mA
- モデムスリープ:~15 mA(Wi-Fi接続は維持、無線はデューティサイクル)
- 軽睡眠:~0.9 mA
- ディープスリープ:~20 μA(RTCと少量のRAMを保持;GPIO16または外部リセットによるウェイク)
ディープスリープは、周期的センシング用途において最も実用的な低消費電力モードです。ESP8266はディープスリープからの高度なイベント覚醒をサポートしていません。デバイスはタイマー終了後またはハードウェアリセットによってウェイクアップするように設定する必要があります。
ESP32パワーモード
- アクティブ(Wi-Fi TX):~160-240 mA
- アクティブ(Wi-Fi RX):~80-100 mA
- モデム睡眠:~20-30 mA
- ライトスリープ:~0.8 mA
- ディープスリープ:~10μA(RTC、ULPコプロセッサ、RTCメモリアクティブ)
- 休止期間:~5 μA(RTCタイマーのみ有効)
ESP32の超低消費電力(ULP)コプロセッサは、メインコアがディープスリープ状態にある間もセンサーの監視と簡単なデータ処理を可能にします。この機能は、センサーの閾値(例:モーション検出、アナログレベルクロッシング)に基づく低遅延のウェイクアップを必要とするアプリケーションで、メインプロセッサを稼働させ続けるためのエネルギーコストを抑える際に有用です。
実際には、ESP32の高度なスリープモードとULPコプロセッサは、特に外部イベントに基づいて頻繁にまたは条件付きで覚醒しなければならない設計において、ESP8266よりも柔軟な電力管理を提供します。
開発エコシステムとファームウェアの選択肢
両モジュールは複数の開発環境で十分にサポートされています:
Arduino IDE
ESP8266とESP32用のArduinoコアは、趣味の人や迅速なプロトタイピングにとって馴染み深くアクセスしやすいAPIを提供します。ライブラリのサポートは広範で、共通のセンサー、アクチュエーター、通信プロトコルを網羅しています。パフォーマンスやメモリ最適化はネイティブSDK開発に比べて細かく調整されていませんが、使いやすさと迅速な反復処理が大きな利点です。
ESP-IDF(Espressif IoT開発フレームワーク)
ESP-IDFはFreeRTOSに基づくEspressifの公式開発フレームワークです。ハードウェア機能への完全なアクセス、電力管理の細かい制御、最適化されたネットワークスタックを提供します。ESP-IDFは、性能、メモリ効率、長期的な保守性が優先される本番ファームウェアの推奨環境です。学習曲線は急ですが、フレームワークはよくドキュメント化され、積極的にメンテナンスされています。
MicroPython およびその他の言語
MicroPythonは、スクリプト作成、テスト、教育用途に適したインタラクティブなインタプリタ型Python環境を提供します。ESP8266とESP32の両方で十分にサポートされていますが、ESP8266のメモリ制約によりMicroPythonアプリケーションの複雑さが制限されることがあります。
Lua(NodeMCU)、Rust、さらにはJavaScript(Espruino、Moddable SDK)などの他のフレームワークも利用可能で、これらのモジュールに対する広範なコミュニティの関心と多様なユースケースを反映しています。
比較概要:ESP8266とESP32のどちらを選ぶか
| 特徴 | ESP8266 | ESP32 |
|---|---|---|
| プロセッサー | シングルコア、80 MHz | デュアルコア、80-240 MHz |
| RAM | 128 KB | 520 KB |
| フラッシュ | 4MB(典型的) | 4MB以上 |
| Wi-Fi | 802.11 b/g/n | 802.11 b/g/n、Wi-Fi Direct |
| Bluetooth | いいえ | Bluetooth 4.2(クラシック + BLE) |
| GPIOカウント | 17 | 48(モジュール上で25+アクセス可能) |
| ADC | 1 × 10ビット | 18 × 12ビット |
| DAC | なし | 2 × 8ビット |
| タッチセンサー | いいえ | 10の容量入力 |
| CANバス | いいえ | はい |
| パワー(ディープスリープ) | ~20 μA | ~10 μA(5 μAの休眠期間) |
| ULPコプロセッサ | いいえ | はい |
| 典型的なモジュールコスト | 下 | 中庸 |
いつESP8266を選ぶべきか
- 予算制約があり、ユニットあたりのコストが主な関心事となるプロジェクト
- センサー報告やリモートスイッチングのためのシンプルなWi-Fi接続
- I/O要件が限定的なアプリケーション
- 教育プロジェクトおよびIoT開発の導入
- Bluetoothが不要な設計
ESP32を選ぶタイミング
- Wi-FiとBluetoothの両方接続を必要とするアプリケーション
- 多数のアナログまたはデジタル入力を持つマルチセンサーシステム
- デュアルコア処理の恩恵を受けるリアルタイムまたは計算集約的なタスク
- 高度な電力管理と条件付きウェイクアップを必要とするバッテリー駆動設計
- ハードウェア加速暗号技術やCANバスサポートを必要とするシステム
- 時間とともに複雑さや機能セットがスケールすることが期待されるプロジェクト
実世界の設計例:環境モニタリングステーション
バッテリー駆動の環境監視ステーションを設置し、温度、湿度、気圧、光の強度、土壌水分を測定し、15分ごとにクラウドサービスにデータを報告します。
ESP8266 実装: 単一のADCチャネルは直接のアナログセンサー接続を制限します。土壌水分および光センサーには、I2Cを介して接続されたマルチチャネルADC IC(例:ADS1115)が必要です。デバイスはタイマーでディープスリープから覚醒し、Wi-Fiを初期化し、ネットワークに接続し、MQTTまたはHTTPでデータを送信し、再びディープスリープに戻る仕組みでした。15分サイクルでの平均電流消費は50〜100μAであり、小型リチウム電池から数か月の稼働が可能です。
ESP32実装: 複数のADCチャネルにより、外部部品なしでアナログセンサーを直接接続できます。ULPコプロセッサはセンサーの閾値を監視し、重大な変化があった場合にのみメインコアを起動するか、15分のスケジュールを維持することができました。Bluetoothは、Wi-Fi認証情報をハードコーディングすることなく、スマートフォンアプリを通じてローカル設定を可能にすることができます。最適化されたスリープ状態管理により、平均電流消費電流を30〜60μAに削減でき、バッテリー寿命をさらに延ばすことができます。デュアルコアアーキテクチャは同時にセンサーポーリングとネットワーク通信を可能にし、総ウェイク時間を短縮します。
この場合、ESP32の追加コストは外部部品数の削減、バッテリー寿命の延長、ユーザー体験の向上によって相殺されます。
結論
ESP8266とESP32はIoT設計スペクトラムの異なるセグメントに対応しています。このESP8266は、処理負荷が控えめで、必要なBluetoothが不要なシンプルなWi-Fi接続デバイスにとって、実用的でコスト効率の高い選択肢として依然として存在します。成熟したエコシステム、広範なコミュニティ支援、低い参入障壁により、教育用途やシンプルな商業製品に適しています。
ESP32のデュアルコアプロセッサ、拡張メモリ、Bluetooth統合、そしてより豊富な周辺機器セットは、より高い計算能力、複数の通信インターフェース、高度な電源管理を必要とするアプリケーションでの高コストを正当化しています。機能の進化やスケールが期待される設計において、ESP32の柔軟性はハードウェアの陳腐化リスクを低減します。
エンジニアや調達チームは、これらのモジュールを選ぶ際に電力予算、I/O要件、通信プロトコル、単価、長期的なスケーラビリティを評価するべきです。両デバイスとも対応能力が高く、十分にサポートされています。最適な選択は、アプリケーションの具体的な技術的・経済的制約に依存します。