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&nbsp;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が存在する。ESP8266はCadence Tensilica LX106マイクロコントローラを用いており、そのGCCツールチェーンはオープンソースであり、Max Filippovによって保守されている。もう一つの選択肢はMikhail Grigorevによる"Unofficial Development Kit"である。

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

## Espressif製モジュール

Espressif自身によって開発されたESP8266ベースのモジュール

上の表（および下記の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製モジュール

これらはサードパーティの製造元である*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モジュールの使用を検討することができる。

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

## 関連項目
* 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に書き込む方法