ESP-WROOM-02を導入する
この記事はMuroran Institute of Technology Advent Calendar 2018 の9日目です。
adventar.org
はじめに
ESP-WROOM-02(以下esp)をarduinoIDEで開発し,書き込みと実行をするまでに必要な手順について書く.
- espは開発ボードではなく,スイッチサイエンスや秋月電子で販売されている”ESP-WROOM-02ピッチ変換済みモジュール”の《T型》や《フル版》,《シンプル版》を使う.
- 特に断りの無い限り,プルアップはへ繋ぐものとし,プルアップ・プルダウン抵抗はとする.
- 詳しいことはデータシートを見ましょう
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 |
- T型(フル版)の場合
Pin名 | 接続先 |
---|---|
3V3 | |
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
この”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である.
ボード : "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 |
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で通信を行うプログラムについて解説していく.