1.実験用デバイスの作成
実験で使用する2つのデバイス、「計測用デバイス」と「監視用デバイス」をブレッドボード上に組み立てます。どちらも今後の実験を通して使用します。
ESP32は、実験を手早く行うために開発ボードを使います。ここでは格安で入手できた開発ボード、DOIT ESP32 DEVKIT V1 Board (Wi-Fi and Bluetooth)を使っています。ピン配置は図のとおりで30ピンです。ちなみに、購入先はネット通販のeBayで、1つ$5.50で送料は無料です。ただし、納期は1カ月近くかかります。
配線は図面とピン名称で解説しているので、他の開発ボードでもまったく問題ないと思います。40ピンの場合は縦サイズが少し大きくなるので、ブレッドボード上での配置に気をつけてください。
ESP32開発ボードはいくつも種類があるので、ボタンの名前を統一しておきましょう。ESP32チップが上、MicroUSBが下になった状態で、左下のボタンはRST,RESET,ENなどと印刷されています。このボタンを押すと、すでにプログラムが書き込まれている場合は実行を開始します。以降ではENボタンと呼ぶことにします(ENはEnableの略)。右下にはFLASHまたはBOOTと印刷されていますが、これはBOOTと呼ぶことにしましょう。
通常はBOOTボタンを押したままENボタンを押すことでプログラム書き込みモードになり、Arduino IDEの「マイコンボードに書き込む」アイコンをクリックするとプログラムをコンパイルして書き込みます。開発ボードによっては、この時に自動書き込みが働かず「Failed to connect to ESP32: Time out waiting for packet header」というエラーが表示されることがあります。この場合は、書き込み開始時にBOOTボタンを長押しすれば問題なく書き込めます。
実は今回入手した開発ボードでこの問題が発生して、しばらくはコンパイル・書き込みの都度BOOTを長押ししていました。この面倒な作業は電気的に解決することができます。端子名[EN]と[GND]の間に10μFの電解コンデンサーを接続すると、コンパイル後に自動で書き込み動作が始まります。
2.計測用デバイスの作成
6穴ブレッドボード上にESP32開発ボード、温湿度センサー、赤色プッシュボタン、黄色LEDを設置します。
計測デバイスの基本機能は、設定された時間間隔で温湿度センサーの計測値を送信することです。赤色プッシュボタンを押すと、監視用ボード上の赤色LEDへのキック信号を送出します。黄色LEDは、双方向通信ができる状況でキック信号を受信したら点滅します。
①使用部品
・ESP32開発ボード(ここではDOIT ESP32 DEVKIT V1) | ここでは30pin | 1台 | Ebay.com $5.50 |
・温湿度センサーモジュール | DHT11 | 1個 | 秋月電子通商 550円 |
・赤色プッシュボタン | 赤色タクトスイッチ | 1個 | 秋月電子通商 10円 |
・黄色LED | 5mm | 秋月電子通商 20円 | |
・カーボン抵抗器 | 1/4W 300Ω | 1本 | |
・カーボン抵抗器 | 1/4W 4.7KΩ | 1本 | |
・カーボン抵抗器 | 1/4W 10KΩ | 1本 | |
・電解コンデンサー | 10μF 50V | 1本 | 必要に応じて |
・ブレッドボード | 6穴版 EIC-3901 | 1枚 | 秋月電子通商 280円 |
・配線類 | 少々 |
②配線
主な部品の接続要領と配線図は次の通りです。
○ 温湿度センサー DHT11
・VDD/VCC/+ : 3V3へ
・DATA/OUT: 4.7KΩでプルアップしてGPIO14へ
・GND/- : GNDへ
○ 赤色プッシュボタン
・ - : GPIO32と、10KΩで GNDへ
・ - : 3V3へ
○ 黄色 LED
・Anode : GPIO25へ
・(-) : 300ΩでGNDへ
3.監視用デバイスの作成
6穴ブレッドボード上にESP32開発ボード、OLEDディスプレイ、黄色プッシュボタン、赤色LEDを設置します。
監視用デバイスの役割は、計測用デバイスからの温湿度計測値を受信してディスプレイに表示することです。赤色LEDは、計測用デバイスの赤ボタンが押されてキック信号が届いたら点滅します。黄色プッシュボタンを押すと、双方向通信が可能な状態なら計測用デバイスに黄色LEDへのキック信号を送出します。
①使用部品
・ESP32開発ボード(ここではDOIT ESP32 DEVKIT V1) | ここでは30pin | 1台 | Ebay.com $5.50 |
・OLEDディスプレイ | 0.96inch 128x64dot | 1個 | 秋月電子通商 580円 |
・黄色プッシュボタン | 黄色タクトスイッチ | 1個 | 秋月電子通商 10円 |
・赤色LED | 5mm | 秋月電子通商 20円 | |
・カーボン抵抗器 | 1/4W 300Ω | 1本 | |
・カーボン抵抗器 | 1/4W 10KΩ | 1本 | |
・電解コンデンサー | 10μF 50V | 1本 | 必要に応じて |
・ブレッドボード | 6穴版 EIC-3901 | 1枚 | 秋月電子通商 280円 |
・配線類 | 少々 |
②配線
主な部品の接続要領と配線図は次の通りです。
○ OLEDディスプレイ(ESP32とI2Cで接続します)
・GND : GNDへ
・VIN : 3V3へ
・SCL : GPIO22へ
・SDA : GPIO21へ
○ 黄色プッシュボタン
・ - : GPIO32と、10KΩでGNDへ
・ - : 3V3へ
○ 赤色 LED
・Anode : GPIO25へ
・(-) : 300ΩでGNDへ
4.開発環境の準備
(1)Arduino core for the ESP32のインストール
Arduino IDEでESP32の開発ができるようにするためには、Arduino core for the ESP32をインストールする必要があります。2018年7月に大幅な改変結果を反映した安定版(Stable版)が公開され、これに合わせてライブラリーの導入方法も、ボードマネージャからインストールように変更されています。実験で使用するBLE関連のライブラリー等もこれによって導入されるので、以下の手順に従って必ずStable版をインストールしてください。
実験で使用するArduino IDEは Version1.8.8です。バージョンが古い場合は、Arduino IDE Downloadサイトから最新のものをインストールすることをお勧めします。Windows環境なら、インストーラーを使わずに、ZIPファイルをダウンロードしてインストールするのがいいと思います。ZIPファイルなら、複数バージョンを使い分けることができるので便利です。
ダウンロードしたファイルarduino-1.8.8-windows.zipを適当なフォルダーに移動して解凍します。arduino-1.8.8というフォルダーが現れるので、それを開いてarduino.exeのショートカットを作成します。分かりやすいようにショートカットの名前をArduino1.8.8のように変更して、デスクトップに配置します。
続いてArduino core for the ESP32をインストールします。
それに先だって、すでにESP32で開発をしていた場合は、C:\Users\%USERNAME%\Documents\Arduino
\hardware\espressifあたりのファイルをバックアップしてから削除してください。これを消さないと、IDEからボードを選択するときにボードの種類が重複して、新旧の区別がつかなくなってしまいます。
次に、Arduino IDEを起動して「ファイル」-[環境設定]を選んで「環境設定」画面を開きます。「追加のボードマネージャのURL:」の右端のボタンをクリックします。
「追加のボードマネージャのURL」が開くので、次のURLをコピーして追加します。
https://dl.espressif.com/dl/package_esp32_index.json
次に「ツール」-「ボード:」を選択して、リストボックス最上段の「ボードマネージャ」を開いて「ESP32」を検索し、インストールボタンを押します。
ボードマネージャー上で「INSTALLED」になれば完了です。もう一度「ツール」-「ボード:」と選択すると、たくさんのESP32関連ボードが追加されていることが分かります。使用している開発ボードに該当するものを選びます。多くは、[ESP32 Dev Module]を選択すればいいでしょう。DOIT ESP32 DEVKIT V1 Boardで開発する場合は、ご覧のように[DOIT ESP32 DEVKIT V1]を選択します。
以上の一連の作業で、手元の環境では、ESP32用ライブラリーは下記の場所にインストールされています。
C:\Users\User-Name\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.1\libraries
※これを「Arduino IDEのインストールライブラリフォルダ」と呼びます。次項をはじめとして、以降のライブラリー
インストール時にはこの位置にライブラリーのフォルダーを配置することになるので、記憶に留めておいてください。
(2)必要なライブラリーのインストール
計測用デバイスのセンサーや監視用デバイスのOLEDディスプレイを制御するには、専用のライブラリーをインストールする必要があります。これらを、ここで一括してインストールしておきましょう。以下の①と②は計測用デバイスの温湿度センサー用、③と④は監視用デバイスのOLEDディスプレイ用のライブラリーです。
①DHTセンサーライブラリーのインストール
・ここをクリックしてDHTセンサーライブラリーをダウンロードしてください。
・zipフォルダを解凍すると、DHT-sensor-library-masterフォルダが表示されます。
・フォルダー名をDHT-sensor-libraryに変更して、Arduino IDEのインストールライブラリフォルダに移動します。
②Adafruit Unified Sensor Driverのインストール
・ここをクリックしてAdafruit Unified Sensor Driverをダウンロードしてください。
・zipフォルダを解凍すると、Adafruit_Sensor-masterフォルダが表示されます。
・フォルダー名をAdafruit_Sensorに変更して、Arduino IDEのインストールライブラリフォルダに移動します。
③Adafruit SSD1306ライブラリーのインストール
・ここをクリックしてAdafruit SSD1306ライブラリーをダウンロードしてください。
・zipフォルダを解凍すると、Adafruit_SSD1306-masterフォルダが表示されます。
・フォルダー名をAdafruit_SSD1306に変更して、Arduino IDEのインストールライブラリフォルダに移動します。
④Adafruit GFXライブラリーのインストール
・ここをクリックしてAdafruit GFXライブラリーをダウンロードしてください。
・zipフォルダを解凍すると、Adafruit-GFX-Library-masterフォルダが表示されます。
・フォルダー名をAdafruit-GFX-Libraryに変更して、Arduino IDEのインストールライブラリフォルダに移動します。
以上でソフトウェア開発環境の準備は完了です。もしArduino IDEが開いている状態なら、いったん閉じて開き直してください。「スケッチ」-[ライブラリをインクルード]をポイントすると、上記のライブラリーが組み込まれていることが確認できます。
(3)デバイスの接続とシリアルポートの設定