いまさらだが自分用まとめ
ESP8266とは?
- 安い技適済みWiFiモジュール (のコアとなるチップ)
- みんなが使ってるのはESP-WROOM-02 (秋月で550円)
- なぜかみんなESP-WROOM-02のことをESP8266と呼んでる
- ファームウェアを書き換えられる
- ATコマンドで制御できるファームウェアが予め焼かれている
- Arduino IDEでファームを開発できる (←これが流行り)
- LuaやPythonやJavascriptでも開発できるらしい。知らんけど。
ESP-WROOM-02のスペック
- 32bit CPU 80MHz (ARMではない。懐かしのTensilica Xtensa!)
- データRAM 80kB (SDKが約30kBを消費するため、ユーザが使えるのは約50kB)
- SPIフラッシュ 4MB (SDKが約220kBを消費)
- 3.3V駆動
- GPIO x 11 (兼用ピン含む。一部制約あり)
- SPI x 1, I2C x 1 (SPIとI2Cは一部ピン兼用のため同時使用不可)
- UART x 1 (デバッグプリント用にTxDのみのUARTがもう一個ある)
- 10ビットADC x 1
ピン表はこちらのものが見やすい。
購入
モジュール単体では試作には使いにくいので、ブレークアウトボードとかを利用する
【秋月】
【スイッチサイエンス】
- ESP-WROOM-02 関連 (ブレークアウトボード多種)
- ESPr Developer … 必要な周辺回路が全て載っていてとても便利そう
ここでは、共立電子の基板を使用した。
チップ抵抗のハンダ付けは初心者向きではないが、基板上でプルアップできる。
Arduino開発環境
- まず、ArduinoIDE をインストールしておくこと (ここでは 1.6.9 を使用)
- [ファイル] > [環境設定] > [Additional Boards Manager URLs:]に下記URLをコピペ
- [ツール] > [ボード] > [ボードマネージャ] で [esp8266] をインストール
- [ツール] > [ボード] で [Generic ESP8266 Module]を選択
配線
PCと接続するためにUSBシリアル変換基板を用い、電源もとりあえずここから取る。
- 3V3 → 3.3V電源
- EN → 10kΩでプルアップ
- RST → 10kΩでプルアップ, タクトスイッチでGNDへ
- TXD → USBシリアルのRXD
- RXD → USBシリアルのTXD
- GND → GND
- IO0 → 10kΩでプルアップ, タクトスイッチでGNDへ
- IO2 → 10kΩでプルアップ
- IO15 → 10kΩでプルダウン
※写真の例ではブレークアウトボード裏面にプルアップ抵抗実装ずみ
※起動時のIO0, IO2, IO15のレベルによってモードが決定する
DIP | IO0 | IO2 | IO15 |
---|---|---|---|
UART Download Mode | 0 | 1 | 0 |
Flash Startup Mode | 1 | 1 | 0 |
SD-Card Boot Mode | 0 | 0 | 1 |
Lチカ
とりあえず、シリアル出力とLチカとサーボ制御とPWM出力を確認してみる。
#include <Servo.h> Servo servo; void setup() { Serial.begin(115200); pinMode(13, OUTPUT); // IO13にLED servo.attach(12); // IO12にサーボ servo.write(90); // サーボを90°に analogWrite(14, 512); // IO14にPWM (10bitであることに注意) } void loop() { Serial.print("Hello, "); digitalWrite(13, HIGH); delay(1000); Serial.println("world!"); digitalWrite(13, LOW); delay(1000); }