ESP-WROOM-02を導入する

この記事はMuroran Institute of Technology Advent Calendar 2018 の9日目です。
adventar.org

はじめに

ESP-WROOM-02(以下esp)をarduinoIDEで開発し,書き込みと実行をするまでに必要な手順について書く.

  • espは開発ボードではなく,スイッチサイエンスや秋月電子で販売されている”ESP-WROOM-02ピッチ変換済みモジュール”の《T型》や《フル版》,《シンプル版》を使う.
  • 特に断りの無い限り,プルアップは{ 3.3\ V }へ繋ぐものとし,プルアップ・プルダウン抵抗は{ 10\ \mathrm k\Omega }とする.
  • 詳しいことはデータシートを見ましょう

http://akizukidenshi.com/download/ds/espressifsystems/0B-ESP8266__Hardware_User_Guide__EN_v1.1.pdf

espへのプログラムの書き込みとその実行

モード変更とリセット

書き込みモードと実行モード

espには”書き込みモード”と”実行モード”がある.
IO0ピンをプルダウンするかプルアップするかでモードの切り替えができる.

書き込みモード 実行モード
IO0 プルダウン プルアップ

IO0ピンの接続を切り替えた後にespにリセットをかけることで確実にモードを切り替えることができる.

リセット

RSTピンをGNDに繋ぐことでespにリセットをかけることができる.
espへの書き込みでエラーが出るときや,プログラムを最初から実行させたいときは取り合えずリセットをかけると良い.

espの配線

espの配線は次のようする.
間違うとespや接続するPCにダメージを与えるのでよく確認する.

  • シンプル版の場合
Pin名 接続先
GND GND
IO0 プルアップ (書き込むときはプルダウン)
IO2 非接続
EN プルアップ
RST プルアップ (リセットするときはGND)
TXD espと接続するマイコンのRX
RXD espと接続するマイコンのTX
3V3 { 3.3\ V }

  • T型(フル版)の場合

Pin名 接続先
3V3 { 3.3\ V }
EN プルアップ
IO14 非接続
IO12 非接続
IO13 非接続
IO15 プルダウン
IO2 プルアップ
IO0 プルアップ(書き込むときはプルダウン)
GND GND
IO4 非接続
RXD espと接続するマイコンのTX
TXD espと接続するマイコンのRX
GND GND
IO5 非接続
RST プルアップ(リセットするときはGND)
TOUT 非接続
IO16 非接続
GND GND

(※espのパッケージによって,GNDピンの数や位置が異なることがあるが,すべてGNDに接続する)

arduino IDEの設定

arduino IDEでespを扱えるようにするには,以下の設定が必要である.
ここで

arduino IDE : ver 1.8.5

とする.

esp8266をボードマネージャに追加

arduinoIDEの”ファイル”タブの”環境設定”を開いて,”追加のボードマネージャのURL”欄に次のURLを貼り付ける.

http://arduino.esp8266.com/stable/package_esp8266com_index.json

f:id:w_haibara:20180731031533p:plain

環境設定の画面

この”ESP8266 core for Arduino”はespをarduinoのように扱えるように,WiFiに関連した関数などを整備してくれているもの.
この中身は,次のGitHubのレポジトリから確認できる.
GitHub - esp8266/Arduino: ESP8266 core for Arduino

ボードマネージャからesp8266用のボード情報をインストール

”ツール”タブから”ボード:~~”(~~は"arduino/genuino uno"など)から”ボードマネージャ”を開き,
検索窓に”esp8266”と入力する.
”esp8266 by ESP8266 Community”を選択して,”インストール”の右側の数字を”2.3.0”として,”インストール”をクリックして,バージョン2.3.0を選択する.

ボード情報 : esp8266 (ver 2.3.0)

※もっと新しいバージョンが選択できるが,筆者が動作確認したのはver 2.3.0である.

f:id:w_haibara:20180731031530p:plain
ボードマネージャの画面

ボード : "Generic ESP8266 Module"を選択する

もう一度”ツール”タブの”ボード:~~”から"Generic ESP8266 Module"を選択する.(下の方にある)

各種ボード設定をする

もう一度”ツール”タブを開くと,esp用の設定項目が表示される.
設定は次のようにする.

項目 内容
ボード Generic ESP8266 Module
Flash Mode QIO
Flash Frequency 40MHz
CPU Frequency 80 MHz
Flash Size 4M (1M SPIFFS)もしくは4M (3M SPIFFS)
Debug port Disabled
Debug Level なし
Reset Method nodemcu
Upload Speed 115200

f:id:w_haibara:20180731115128p:plain
ボードの設定
Flash Sizeの4M (1M SPIFFS)と4M (3M SPIFFS)の違いはSPIFFSに何Mバイトを割くかである.SPIFFS(SPI Flash File System)とは,マイコンの小さなフラッシュメモリの中でファイルシステムを使う仕組み.
逆に言えば,ファイルシステムに使わない領域,すなわちプログラム本体が保存される領域の大きさもこの設定で変わる.

espをPCとUSBで接続すると”ツール”タブの”シリアルポート”が選択できるようになる.
シリアルポートはwindowsならCOM4など,Linuxならdev/ttyUSB0などと表示されるので,それを選択する.(USBマウスなどをPCに接続してると,ポートが複数表示されるので1度書き込んでみて,どれがespかを確かめる.
このとき,プログラムが上書きされると困る他のマイコンなどはPCから切り離すこと)

ここまでのespの接続とarduinoIDEの設定を行えば,espにarduino言語でプログラムを書き込むことが可能である.

espへのプログラムの書き込み

espへ次のプログラムを書き込んでみる.
この時,以下のことに気をつける.

  • espの配線,特にIO0ピンがプルダウンされていることを確かめる.
  • 書き込む前にリセットをかける.
/*
 * hello_esp.ino 
 * 5秒毎にシリアル通信でメッセージを送信する
 */
void setup() {
  Serial.begin(115200); //シリアル通信のボーレートを115200とする
}

void loop() {
  Serial.println("Hello esp8266"); //改行付きでメッセージを送信
  delay(5000); //5秒間待つ
}

書き込みに失敗する場合は,espの配線の確認・espのリセット・USB端子の挿し直し・IDEの設定の確認(特にシリアルポートが正しく選択されているか!)・IDEの再起動・PCの再起動の順に試してみるとよい.

ただしく書き込めていれば,arduinoのシリアルモニタに"Hello esp8266"という文字列が5秒毎に表示される,

おわりに

以上でarduinoとほとんど同じ要領でespの開発ができるようになる.
今後,espで通信を行うプログラムについて解説していく.