ESP8266

ESP8266は中国の上海に拠点を置く企業Espressif Systemsによって製造されているTCP/IPスタックとマイクロコントローラを備えたWi-Fiモジュールである。

2014年8月にサードパーティの製造元であるAI-ThinkerによってESP-01モジュールが発売されたことで欧米のメイカーの関心を集めた。低価格かつ小面積で、マイクロコントローラからWi-Fiネットワークに接続し、ヘイズスタイルのコマンドで簡単なTCP/IP接続を行うことができる。発売当時はチップやコマンドに関する英語の資料がほとんどなかったが、前述の利点に加えて大口ではさらに安くなると予想されたため、数多くのハッカーたちによって中国語の資料の翻訳や、モジュール、チップ、そしてソフトウェアの解析が進められた。

ESP8285はESP8266に1MBのフラッシュメモリを搭載したものであり、シングルチップのデバイスをWi-Fiに接続できる。

 特徴 
 32ビットRISC CPU: Tensilica Xtensa LX106 running at 80 MHz*
 命令RAM 64KiB、データRAM 96KiB
 外部QSPIフラッシュメモリ - 512 KiB～4 MiB*（16MiBまでサポート）
 IEEE 802.11 b/g/n Wi-Fi
 統合された送受信スイッチ、バラン、LNA、パワーアンプ、インピーダンス整合回路
 WEPもしくはWPA/WPA2による認証およびオープンネットワーク
 16ピンのGPIO
 SPI, I²C,
 DMA付きのI²S（GPIOとピン共用）
 専用のピン上のUARTとGPIO2で有効化できる送信専用UART
 10ビットADC 1基
*いくつかのデバイスではオーバークロックすることによりCPUとフラッシュメモリの両方のクロックを倍にすることができる。CPUは160MHz、フラッシュメモリは40MHzから80MHzに高速化できる。成功するかはチップにより異なる。

 SDK 
2014年10月後半、Espressifはチップをプログラムすることができるソフトウェア開発キット（SDK）をリリースし、別途マイクロコントローラを用意する必要がなくなった。それ以来、多くの公式SDKがEspressifからリリースされた。Espressifは2つのバージョンのSDKを保守している。1つはRTOSベースのものであり、もう一つはコールバックベースのものである。

Espressifの公式SDKの代替としてはGCCツールチェーンをベースにしたオープンソースのesp-open-sdkが存在するhttps://github.com/pfalcon/esp-open-sdk。ESP8266はCadence Tensilica LX106マイクロコントローラを用いており、そのGCCツールチェーンはオープンソースであり、Max Filippovによって保守されている。もう一つの選択肢はMikhail Grigorevによる"Unofficial Development Kit"であるhttps://github.com/CHERTS/esp8266-devkithttp://programs74.ru/udkew-en.html。

他のオープンソースのSDKとしては以下が存在する。
 NodeMCU：Luaベースのファームウェア
 Arduino: C++ベースのファームウェア。このコアはESP8266 CPUとそのWi-Fi機能を他のArduinoデバイスと同様にプログラムすることを可能にする。ESP8266 Arduino CoreはGitHubから入手可能である。
 MicroPython：ESP8266プラットフォームへのMicroPython（組み込み機器向けのPythonの実装）の移植。
 ESP8266 BASIC：IoT専用に作られたオープンソースのBASICインタープリンタ。セルフホスティングされたブラウザベースの開発環境である。
 Mongoose Firmware：無料のクラウドサービスのついたオープンソースのファームウェアhttps://mongoose-iot.com/docs/#/quickstart/

 Espressif製モジュール 
alt=ESP-08266モジュール|thumb|ESP-WROOM-02
Espressif自身によって開発されたESP8266ベースのモジュール

名称有効ピン数ピッチ形状LEDアンテナシールドの有無寸法(mm)備考 180.5mm2×9 DIL プリント基板トレースアンテナ 18 × 20FCC ID 2AC7Z-ESPWROOM02

上の表（および下記の2つの表）において、"有効ピン数"は外部のデバイスをESP8266 MCUに接続することができるGPIOとADCピンを含んでいる。"ピッチ"はESP8266モジュールのピン間の距離であり、ブレッドボードで回路を組む際に重要である。"形状"はモジュールのパッケージングが"2 x 9 DIL"であることを示しており、DIPのICと同様の9ピン2列のデュアルインラインであることを意味している。多くのESP-xxモジュールは小さなLEDをオンボードで搭載しており、点滅するようプログラムでき、動作状況を表すことができる。ESP-xxボードにはトレースアンテナやオンボードのセラミックアンテナ、外付けのWi-Fiアンテナを接続することができる外部コネクタなど、いくつかのアンテナの種類が存在している。Wi-Fi通信は多くの電波干渉を引き起こすため、FCCのような政府機関は他の機器への干渉を最小化するためにシールドされた電子機器を好む。いくつかのESP-xxモジュールはFCCによる認証を示す刻印の押された金属製の箱に入った状態で提供されている。

 AI-Thinker製モジュール 
alt=ESP-01モジュール|thumb|ESP-01モジュール
これらはサードパーティの製造元であるAI-Thinkerから発売された最初のESP8266モジュールであり、いまだに最も手に入りやすいものである。これらはまとめて"ESP-xxモジュール"と呼ばれ、開発システムとして利用するためには特にシリアルTTL-to-USBアダプタ（USB-to-UARTブリッジとも呼ばれる）と3.3V電源のような外付け部品を要求する。新参のESP-8266開発者はNodeMCUのようなUSB-to-UARTブリッジと3.3Vレギュレータ付きのMicro-USBコネクタが基板に搭載されたより大きなESP8266 Wi-Fi開発基板を検討することが推奨される。プロジェクトの開発が完了した際には、これらの部品が不要になる可能性があるため、量産用のより省電力で小さい選択肢としてESP-xxモジュールの使用を検討することができる。

名称 有効ピン数 ピッチ 形状 LED アンテナ シールドの有無 寸法(mm) 備考 ESP-01 6  0.1"  2×4 DIL    プリント基板トレースアンテナ    14.3 × 24.8  ESP-02  6  0.1"  2×4 キャスタレーション    ソケット    14.2 × 14.2  ESP-03  10  2 mm  2×7 キャスタレーション    セラミック    17.3 × 12.1  ESP-04  10  2 mm  2×4 キャスタレーション    なし    14.7 × 12.1  ESP-05  3  0.1"  1×5 SIL    U-FLコネクタ    14.2 × 14.2  ESP-06  11  misc  4×3 ダイス    なし    14.2 × 14.7  FCC認証なし ESP-07  14  2 mm  2×8 ピンホール    セラミック＋ソケット    20.0 × 16.0  FCC認証なし ESP-08  10  2 mm  2×7 キャスタレーション    なし    17.0 × 16.0  FCC認証なし ESP-09  10  misc  4×3 ダイス    なし    10.0 × 10.0  ESP-10  3  2 mm?  1×5 キャスタレーション    なし    14.2 × 10.0  ESP-11  6  0.05"  1×8 ピンホール    セラミック    17.3 × 12.1  ESP-12  14  2 mm  2×8 キャスタレーション    プリント基板トレースアンテナ    24.0 × 16.0  FCCおよびCE認証済み ESP-12E  20  2 mm  2×8 キャスタレーション    プリント基板トレースアンテナ    24.0 × 16.0  4MBフラッシュメモリ搭載 ESP-12F  20  2 mm  2×8 キャスタレーション    プリント基板トレースアンテナ    24.0 × 16.0  FCCおよびCE認証済み。アンテナ性能向上。4MBフラッシュメモリ搭載。 ESP-13  16  1.5 mm  2×9 キャスタレーション    プリント基板トレースアンテナ    W18.0 x L20.0  "FCC"刻印あり。ESP-12と比較してシールドされたモジュールが横向きになっている。 ESP-14  22  2 mm  2×8 キャスタレーション +6    プリント基板トレースアンテナ    24.3 x 16.2 

 他の基板 
ESP-xxモジュールと比べて多くの"他の基板"が人気を集める理由はオンボードのUSB-to-UARTブリッジ（例えばSilicon Labs CP2102やWHC CH340G）と3.3Vレギュレータ付きのMicro-USBコネクタが基板への電力とよくコンソールと呼ばれるホスト（ソフトウェア開発用）コンピュータへの接続を提供するからである。ESP-xxモジュールではこれら二つは別途購入し、ESP-xxの回路に接続する必要があった。NodeMCUのような現代的なESP8266基板はより手間が少なく、より多くのGPIOピンを提供している。ほとんどのこれら"他の基板"はESP-12Eモジュールに基づいているが、新たなモジュールが数か月ごとに登場しているようである。

+名称 有効ピン数 ピッチ 形状 LED アンテナ シールドの有無 寸法(mm) 備考 14  0.1"  2×14 DIL    プリント基板トレースアンテナ    30 × 40 オンボードのSDカードとLib-Discoveryやフェールセーフモードのような機能を搭載。IoTのための独自のクラウドを用意。. Olimex MOD-WIFI-ESP8266 2  0.1"  UEXTモジュール    プリント基板トレースアンテナ      RX/TXのみUEXTコネクタと接続 Olimex MOD-WIFI-ESP8266-DEV 20  0.1"  2×11 DIL + キャスタレーション    プリント基板トレースアンテナ      すべての利用可能なGPIOピンが接続されている。UEXTコネクタ（RX/TXとSDA/SCL信号)
取り付け用のパッドも搭載。  DEVKIT  14  0.1"  2×15 DIL    プリント基板トレースアンテナ      ESP-12モジュールを使用。USBシリアルインターフェース搭載。  Huzzah ESP8266 breakout 14  0.1"  2×10 DIL    プリント基板トレースアンテナ    25 × 38  ESP-12モジュールを使用  ESP8266 Thing WRL-13231 12  0.1"  2×10 DIL    プリント基板トレースアンテナ＋ソケット    58 × 26  FTDIシリアルヘッダ、電源用Micro-USBソケット、Li-ionバッテリ充電回路搭載 KNEWRON Technologies smartWIFI 12  0.1"  2×20 DIL   1 RGB プリント基板トレースアンテナ    25.4 × 50.8  CP2102 USBブリッジ、バッテリ充電回路、電源及び充電用Micro-USBソケット、1 RGB LED、ユーザ/リフラッシュボタン搭載 WeMos D1  12  0.1"  Arduino Uno    プリント基板トレースアンテナ    53.4 × 68.6  ESP-12Fモジュールを使用、Micro-USBソケット搭載 WeMos D1 R2 12  0.1"  Arduino Uno    プリント基板トレースアンテナ    53.4 × 68.6  ESP-12Fモジュールを使用、Micro-USBソケット搭載 WeMos D1 Mini 12  0.1"  2×8 DIL    プリント基板トレースアンテナ    25.6 × 34.2  ESP-12Fモジュールを使用、Micro-USBソケット搭載ESPert ESPresso Lite 16  0.1"  2×8 DIL    プリント基板トレースアンテナ    26.5 × 57.6  Espressif ESP-WROOM-02モジュールを使用。数量限定でベータ版として生産。ESPert ESPresso Lite V2.0 24  0.1"  2×10 DIL    プリント基板トレースアンテナ    28 × 61  ESPresso Liteの設計と機能を改善In-Circuit ESP-ADC 18  0.1"  2×9 DIL    ソケット    22.9 × 14.9  ESP8266EXを使用 Watterott ESP-WROOM02-Breakout 14  0.1"  2×10 DIL    プリント基板トレースアンテナ    40.64 × 27.94  Espressif ESP-WROOM-02モジュールを使用

 関連項目 
 ESP32


 モノのインターネット
 マイクロコントローラ

 参考文献 

 外部リンク 
 BBS.espressif.com — ESP8266の完全なドキュメンテーションの置かれたEspressifのフォーラム
 ESP8266.com — コミュニティフォーラム
 WiFi-IoT — Maxim MiklinによるWEBベースのユニバーサルファームウェアビルダー。ファームウェアは純粋なC言語で書かれている。.
 RuntimeProjects.com - Arduino CoreでESP8266を用いるためのチュートリアル
 Blog with ESP8266 projects — ESP8266上でのMQTTブローカーやエアコンの制御、水やり、LoRaといった多くのプロジェクトを掲載したブログ
 How to flash ESP8266 — カスタムのNodeMCUファームウェアをESP8266に書き込む方法

Category:マイクロコントローラ
Category:電子部品
Category:モノのインターネット