DOIT ESPduino 32やWEMOS D1 R32でLCD Keypadシールドを使用する

Wi-FiモジュールESP-WROOM-32を搭載したArduino互換機がArduino UNOよりも安価に売られており人気を集めています。
ここでは、DOIT ESPduino 32やWEMOS D1 R32でArduino用の液晶LCDシールドを使用する方法について説明します。(ハードウェアについては、簡単なハンダ付けによる改造が必要です。)
液晶と5個の操作ボタンを搭載したLCD Keypadシールド(左上)と、Wi-FiモジュールESP32を搭載したArduino互換機 Wemos D1 R32。LCD Keypadシールドを使えば、手軽に表示とボタンが利用できるようになる。

最新ESP32チップ内蔵ESP-WROOM-32搭載のArduino互換機

使用したArduino互換機は、Espressif製の最新Wi-FiチップESP32(を内蔵したESP-WROOM-32モジュール)を搭載した DOIT ESPduino 32 、WEMOS D1 R32です。国内で使用するには、技適を受けたESP-WROOM-02モジュール搭載品を使用する必要があります。ESP32搭載Arduino互換機は1500円~2500円前後、液晶シールドも1000円前後で入手することが出来ます。
下記は、Arduino互換機と、Arduino用の液晶シールドの情報リンクです。
ESP-WROOM-32を搭載したArduino互換ボード
DOIT ESPduino 32 (製造元販売ページ・短縮URL):
WEMOS D1 R32 (販売ページ):
Arduino用の液晶ディスプレイLCD Keypadシールド
SKU-20-011-901(サインスマート製):
LCD Keypad Shield For Arduino (DF ROBOT製):
Arduinoでの使用例:

ハードウェアの改造方法

Arduino用の液晶シールドLCD Keypadを、DOIT ESPduino 32や WEMOS D1 R3で使用するには、GPIO 12(Arduino用 Digital 8ピンの位置)を10kΩ程度の抵抗でプルダウンする必要があります。
また、Keypadを使用するには、Arduino用 Analog 0ピンと Analog 2ピンをショートし、Keypad信号を ESP 32のGPIO 35へ入力する必要があります。
下図に液晶側の改造例を示します。液晶シールドの上部に10kΩの抵抗を取り付けました。
液晶の上部に10kΩの抵抗を実装する。この抵抗を実装しないと、ESP32が適切に起動しないことがある。
下図は、Keypad用の改造です。A0とA2とをショートしました。
Keypad信号をESP32へ入力するためのジャンパーをA0とA2にハンダ付けする。入力したキーの情報は電圧値で出力される。Arduino環境で動作するESP32のアナログ入力ポートGPIO 35(ADC1_7)へ入力した。

ソフトウェアの製作方法

液晶についてはArduino標準ライブラリのLiquidCrystalを使用します。以下に表示を行う場合のスケッチ例を示します。赤文字部分が、ESP32ボード用のGPIOピン設定です。
#include <LiquidCrystal.h>
void setup(){
    LiquidCrystal lcd(12,13,17,16,27,14);   // ESP32ボード用
    lcd.begin(16, 2);                       // 液晶表示サイズの設定
    lcd.clear();                            // 文字消去(beginで消去されるので不要)
    lcd.setCursor(0,0);                     // 文字位置の設定(beginで設定される)
    lcd.print("Hello!");                    // 「Hello!」を表示
    lcd.setCursor(0,1);                     // 文字位置を2行目へ
    lcd.print("Wataru KUNINO");             // 「Wataru KUNINO」を表示
}
void loop(){
}
キーパッドについては、下記のソースコードを参考にしてください。

LCD Keypadの液晶とキーパッドを使った製作例

下図は、製作例です。Wi-FiモジュールESP-WROOM-02やESP-WROOM-32などを使用したワイヤレス・センサから、UDPでセンサ値を送信し、それを受信してみました。上部の棒グラフの左側が温度、右側が湿度の目安が表示され、右下で数値がスクロールします。
[UP]と[DOWN]で過去の受信履歴を表示することも出来ます。一番左側の[SELECT]を押すと、本機のIPアドレス表示、長押しで、表示モードの切り替えです。
製作したサンプルはGitHubで公開しています。トランジスタ技術2016年9月号および2017年3月号で紹介した各種のセンサやWi-Fiカメラなどに対応しています。
製作したサンプル・スケッチ

その他

本ブログでは、市販のESP32搭載Arduino互換機を使用しましたが、来月号のトランジスタ技術2017年11月号では、白阪 一郎さんが開発したESP32を搭載可能なArduino互換機のプリント基板が付属します。白阪さんのボードでは、無改造でLCD表示が可能です。Keypad入力については、上記とは異なる改造が必要です。
ボクにもわかるWi-Fiモジュール ESP32
by ボクにもわかる電子工作
https://bokunimo.net/