IoT開発(1)-ESP-WROOM-02のセットアップ

2021年6月12日

どもです。
前回までのエントリで、「DHT11の測定結果をクラウドで見える化する」という内容を書いてきました。
ここで紹介している方法は、「RaspberryPi3でデータを収集してクラウドにアップロードする」というものでした。
「RaspberryPi3」を使用しており、電源の取り方やネットワークの接続の関係で、ユニットを配置できる場所が制限されてしまいます。
そこで今回から、この「制限」を解消して、より色々な場所のデータを測定できるようにする方法について書いていきます。

1.ESP-WROOM-02

前述の「制限」を解消するデバイスとして、「ESP-WROOM-02」があります。
「ESP-WROOM-02」は、ESP8266EXというチップを搭載した、wifi通信が可能なwifiモジュールです。
加えて、「ESP-WROOM-02」は「arduinoのプログラムを書き込んで実行できる」という特徴を持っています。
そのため、外部にセンサーをつなぐだけで、「センサーの値を取得」して「データをクラウドにアップロードする」ことができます。

2.デバイス

今回は、Wi-Fiモジュール ESP-WROOM-02 DIP化キットを購入しました。
また、ESP-WROOM-02にarduinoのプログラムをダウンロードするためのシリアル変換ユニットも購入しました。
新規に購入したモノの一覧を、下記に書きます。

購入したモノ一覧
モノ 概要
ESP-WROOM-02 Wi-Fiモジュール ESP-WROOM-02 DIP化キット
ESP8266EXを搭載したwifiモジュールのDIP化キットです。
使用する際には、はんだ付けが必要です。
シリアル変換 FT232RL USBシリアル変換モジュールキット
ESP-WROOM-02にプログラムを書き込む際に使用します。
使用する際には、はんだ付けが必要です。
はんだ付け済みのキットも販売されています。
価格もそんなに変わらないので、「安心を買う」と考えればこっちの方がオススメです。

3.回路

まず、arduinoのプログラムをESP-WROOM-02に書き込む際には、回路を以下のように配線します。
iot_at_home_001_esp_wroom_02_001
回路図は、下記の通りです。
iot_at_home_001_esp_wroom_02_002
「肝」になるのは、ESP-WROOM-02の「IO0」の接続です。
ESP-WROOM-02にプログラムを書き込む際には、「IO0」のレベルを「Low」に設定する必要があります。
そのため、「IO0」はGND側に接続しています。
(なお、書き込んだプログラムを動作させるためには、「IO0」のレベルを「High」に設定します。)
そのため、「IO0」はVCC(3.3v)側に接続します。

(2020/10/10:修正)
ESP-WROOM-02にプログラムを書き込むためには、「Download mode」で起動する必要があります。
そして、「Download mode」で起動するためには、「IO0」のレベルが「LOW」に設定された状態でESP-WROOM-02を起動する必要があります。
そのために、「IO0」に接続されたスイッチ(回路図では「S1」)を押した状態で「S2」(回路図では「S2」)をON、OFFして「RST」を「LOW」/「HIGH」と変化させます。
これで、Arduino IDEからプログラムを書き込めるようになります。

4.プログラムの書き込み

4.1.準備(ボード情報のインストール)

まず、Arduino IDEの設定を行います。
メニュ[ファイル]-[環境設定]を選択して、環境設定画面を開きます。
iot_at_home_001_esp_wroom_02_setup_001
開いた画面上の「追加のボードマネージャのURL:」欄に、下記のアドレスを設定します。

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

入力したら、[OK]ボタンを押します。
iot_at_home_001_esp_wroom_02_setup_002
次に、「ボード情報」のインストールを行います。
メニュ[ツール]-[ボード]-[ボードマネージャ]を選択して、ボードマネージャ画面を表示します。
iot_at_home_001_esp_wroom_02_setup_003
「検索」欄に「ESP8266」を入力します。
「esp8266」が表示されるので、「インストール」を押します。
すると、ボード情報のインストールが始まります。
iot_at_home_001_esp_wroom_02_setup_004
(2020年6月28日現在では、インストールされるボード情報は、ver.2.7.1 です。)
ボードのインストールが完了したら、対象のボードを「ESP8266」に設定します。
メニュ[ツール]-[ボード]で、「ESP8266 Modules」が表示されている(と思います)ので、これを選択します。
次に「ESP8266」に属するボードの一覧が表示されるので、この中から「Generic ESP8266 Module」を選択します。
iot_at_home_001_esp_wroom_02_setup_005

4.2.初めてのプログラム:L-チカ

ここまでで、プログラムを書き込む準備は整いました。
さっそくプログラムを書き込みます。
書き込むプログラムは、L-チカです。
プログラムのコードは、下記です。

void setup()
{
	pinMode( LEDPIN, OUTPUT );

	Serial.begin(115200);
}

void loop()
{
	Serial.println("hello");
	
	digitalWrite( LEDPIN, HIGH );
	delay(200);
	digitalWrite( LEDPIN, LOW );
	delay(200);
}

画面左上の矢印アイコンを押すことで、プログラムが書き込まれます。

4.3.うまくいきません

最新版のボード情報(2020年6月28日現在では、ver.2.7.1)をインストールした場合、プログラムの書き込みは失敗します。
しかしながら、エラーになった際に表示されるメッセージなどの記録を残し忘れてしまいました(すみません…)。
そのため、具体的な症状、および詳細な原因が分かりません。
ここでは「問題を解決した方法」のみを記載します。
なお、「問題なく動作した」という場合は読み飛ばしてください。

4.3.1.ボード情報の変更

「ESP8266にプログラムが書き込めない」という現象は、arduino IDEにインストールしているボード情報を古いバージョンに変更することで解決できました。
私の環境では、ボードのバージョンを「ver.2.7.1」から「ver.2.3.0」まで戻しました。
戻すボードのバージョンは、ボードマネージャ画面の「バージョンを選択」というドロップダウンリストから選択します。
今回は、「2.3.0」を選択して[インストール]ボタンを押すことで、選択したバージョンのボード情報をインストールしました。
iot_at_home_001_esp_wroom_02_setup_006

4.3.2.書き込み設定

書き込みの際には、「ver.2.3.0」のボード情報を下記のように設定します。

書き込み設定
項目
Flash Size 4M(3M SPIFFS)
Flash Mode QIO
Reset Method ck
シリアルポート ※環境に合せて設定

画面上では、下図のようになるかと思います。
iot_at_home_001_esp_wroom_02_setup_007
これらの設定を行って書き込みを実行、正常に完了した場合、Arudino IDEのログ画面は以下のようになるかと思います。
iot_at_home_001_esp_wroom_02_setup_008
※Arduino IDEの設定如何では、少し表示内容が変化するかと思います。

(2020/10/10:修正)
プログラムの書き込みが完了すると、ESP-WROOM-02は自動で「Download mode」から抜けて「Flash Boot mode」(要は、フツーのモード)で起動して動作を開始します。

5.プログラムの実行/L-チカ

プログラムの書き込みが完了したら、「IO0」の配線を「High」に変更して、ユニットをリセットします。
変更後の配線図は、下記のようになります。
iot_at_home_001_esp_wroom_02_003
※リセットは、FT232RLのUSBケーブルを抜き差しで実施しました。
プログラムが正常に書き込めていれば、「IO13」に接続したLEDがチカチカします。
なお、L-チカの回路図は下記の通りです。
iot_at_home_001_esp_wroom_02_005

6.まとめ

今回は、ESP-WROOM-02をセットアップして、にarduinoプログラムでL-チカする方法について書きました。
このL-チカさせるだけでも、ハマりドコロは結構あるかと思います。
特に、ESP-WROOM-02にプログラムを書き込むところが一番のハマりどころでした。
このハマりどころ/問題は、

  • ESP-WROOM-02のボード情報を古いバージョン(今回は、ver.2.3.0)に戻すことで対応可能。
  • 問題の原因/原因個所が、書き込みツールのエラーメッセージからでは特定も対応もできなかった。

という2点かと思います。
これらの問題の対応については、このエントリに記載した内容で対応ができるかと思います。
これでESP-WROOM-02は動かせるようになりました。
次回からは、ESP-WROOM-02の本当の使い方であるWiFiモジュールとして使う方法を書いていきます。

ではっ!

続きます

続きは、以下の記事で書いています。
併せて読んでいただけると幸いです。
IoT開発(2)-ESP-WROOM-02で気温測定
IoT開発(3)-ESP-WROOM-02でデータを送信
IoT開発(4)-ESP-WROOM-02を電池で駆動
IoT開発(5)-ESP-WROOM-02をDeepSleepで長時間駆動させる