ESP32やESP8266でI2C接続4×4キーパッドを使う(1)

このページをスマホなどでご覧になる場合は、画面を横長にする方が読みやすくなります。
目次へ  前のページへ (1) (2) (3) 次のページへ
2022年03月11日 公開。
2022年03月28日 「ESP32-DevKitC V4がI2C接続に使うピンを変更する方法 」の節を追加。

TwiKeypadライブラリ Ver. 1.01で、ESP32やESP8266でもI2C接続4×4キーパッドが使える様になりました。この記事では、その際の配線方法等について説明します。

I2C接続4X4キーパッド 商品名 I2C接続4X4キーパッド
税抜き小売価格 2400円
販売店 スイッチサイエンス マルツ
サポートページ

目次

1. ESP32-DevKitC V4でI2C接続4×4キーパッドを使う方法 … 1ページ
1-1. ESP32-DevKitC V4とは … 1ページ
1-2. ESP32-DevKitCとI2C接続4×4キーパッドの接続方法 … 1ページ
1-3. 動作確認の方法 … 1ページ
1-4. ESP32-DevKitC V4がI2C接続に使うピンを変更する方法 … 1ページ
2. ESP-WROOM-32でI2C接続4×4キーパッドを使う方法 … 2ページ
2-1. ESP-WROOM-02とは … 2ページ
2-2. ESP-WROOM-02とI2C接続4×4キーパッドの接続方法 … 2ページ
2-3. 動作確認の方法 … 3ページ
2-4. ESP-WROOM-02がI2C接続に使うピンを変更する方法 … 3ページ

1.ESP32-DevKitC V4でI2C接続4×4キーパッドを使う方法

この章では、ESP32-DevKitC V4というESP32の開発ボードを使って、I2C接続4×4キーパッドを使う方法を説明します。この記事を参考に、他のESP32製品でも、I2C接続4×4キーパッドが使える様になるはずです。

1-1.ESP32-DevKitC V4とは

ESP32-DevKitC V4は、ESP-WROOM-32に、USBシリアル変換回路、3.3VのLDO(電源回路)、リセット回路を付けて、USBケーブルをパソコンにつなげれば、すぐに開発ができる様にしたものです。

参考:ESP-WROOM-32は、ESP32に水晶発振器とフラッシュメモリとアンテナを付けたモジュールです。

電源は、USBから取る事ができ、プログラム(スケッチ)の書き込みは、パソコンからUSB経由で行なえます。

Arduino core for the ESP32, ESP32-S2 and ESP32-C3を使えば、Arduino IDEでプログラム開発ができます。

ESP32-DevKitC V4の外観を、写真1と写真2に示します。

写真1、ESP32-DevKitC V4の外観(斜めから撮影)
↑ 画像をクリックすると拡大
写真1、ESP32-DevKitC V4の外観(斜めから撮影)
写真2、ESP32-DevKitC V4の外観(真上から撮影)
↑ 画像をクリックすると拡大
写真2、ESP32-DevKitC V4の外観(真上から撮影)

1-2.ESP32-DevKitCとI2C接続4×4キーパッドの接続方法

ESP32でI2Cバスを使う場合は、デフォルトでIO21のピンががSDA信号、IO22のピンががSCL信号に割り当てられていますから、I2C接続4×4キーパッドとの接続は、図1の様になります。

図1、ESP32-DevKitC V4とI2C接続4×4キーパッドの結線図
↑ 画像をクリックすると拡大
図1、ESP32-DevKitC V4とI2C接続4×4キーパッドの結線図

キーパッドの電源は、ESP32-DevKitC V4から供給してもらう事にします。ESP32-DevKitC V4の電源は、USBケーブルから給電してもらう事にします。

キーパッドの電源電圧は、ESP32と同じにする必要があります。ESP32-DevKitC V4を使う場合は、3V3ピン(3.3V)をキーパッドのVCCピンに接続します。

実際にESP32-DevKitC V4をI2C接続4×4キーパッドに接続した様子を、写真3に示します。また、配線の様子が見やすい様に、一部を拡大した写真を写真3に示します。

写真3、ESP32-DevKitC V4とI2C接続4×4キーパッドの接続の様子(全体)
↑ 画像をクリックすると拡大
写真3、ESP32-DevKitC V4とI2C接続4×4キーパッドの接続の様子(全体)
写真4、ESP32-DevKitC V4とI2C接続4×4キーパッドの接続の様子(部分)
↑ 画像をクリックすると拡大
写真4、ESP32-DevKitC V4とI2C接続4×4キーパッドの接続の様子(部分)

なお写真3では、配線を中継するための基板を使っています。この基板の写真を写真5~写真7に示します。写真を見て分かる通り、この基板は、ESP32-DevKitC V4のピンを、すぐそばのピンソケットに接続しているだけです。

写真5、配線中継用基板(表)
↑ 画像をクリックすると拡大
写真5、配線中継用基板(表)
写真6、配線中継用基板(裏)
↑ 画像をクリックすると拡大
写真6、配線中継用基板(裏)
写真7、ESP32-DevkitC V4を基板に装着した様子
↑ 画像をクリックすると拡大
写真7、ESP32-DevkitC V4を基板に装着した様子

ESP32-DevKitC V4のピンヘッダの間隔が1000mil(ユニバーサル基板の穴の間隔の10倍)もあるので、通常の片側5穴のブレッドボードではうまく配線できません。そのため、この様な中継基板を作って配線しました。

参考:片側6穴のブレッドボードを使えば、写真5の様な中継基板を使わなくても、ESP32-DevKitC V4の配線ができます。

1-3.動作確認の方法

ESP32-DevKitC V4に接続したI2C接続キーパッドが正常に動作するかをテストするには、TwiKeypadライブラリに付属するサンプルスケッチを動かしてみるのが簡単です。

TwiKeypadライブラリをインストールしたArduino IDEを起動し、図2に示す様に、ファイルスケッチ例TwiKeypadGetCharメニューを選択します。

図2、ファイル→スケッチ例→TwiKeypad→GetCharメニューの選択
図2、ファイル→スケッチ例→TwiKeypad→GetCharメニューの選択

そうすると、リスト1に示すスケッチが開きます。(あるいは、コピー&ペーストで、リスト1のスケッチをArduino IDEに貼り付けても構いません)

リスト1、GetChar関数のデモ用スケッチCOPY
/*
  GetChar.ino

  This sketch demonstrates how GetChar function works.
*/

// include libraries
#include <Wire.h>
#include <TwiKeypad.h>

// variables
TwiKeypad keypad; // keypad object
const int TwiAdr=8; // keypad's TWI(I2C) Address

// functions
void setup()
{
  Wire.begin();// initialize TWI as master.
  keypad.begin(Wire,TwiAdr); // initialize keypad.
  Serial.begin(9600); // initialize serial port at 9600bps.
  while(!Serial); // wait for serial port to connect.
  Serial.println("Press keys.");
} // setup

void loop()
{
  char c=keypad.GetChar();
  if(c!='\0') {
    Serial.print(c);
  } // if
} // loop

このスケッチは、GetChar関数によりキーパッドから押されたキーを読み取り、その結果をシリアルに出力するスケッチです。このスケッチを、例えば図3に示すボードの設定でESP32-DevKitC V4に書き込み、9600bpsに設定したシリアルモニタで観察すると、図4に示す様に、押したキーがシリアルモニタに表示されます。

注:スケッチが書き込めているのに、うまく動作しない時は、一度USBケーブルを抜いて、ESP32-DevKitCへの電源供給を止めて、再び電源を入れてください。この操作により、ESP32-DevKitCとI2C接続キーパッドの両方がリセットされます。

図3、Arduino IDEのボード設定の例
図3、Arduino IDEのボード設定の例
図4、シリアルモニタの表示
図4、シリアルモニタの表示

キーを1、2、3、4の順に押した例を示します。

Press keys.のメッセージの前に、文字化けしたメッセージが表示されていますが、これは、ESP32の起動メッセージが115.2kbpsで送信された事によるものです。

1-4.ESP32-DevKitC V4がI2C接続に使うピンを変更する方法

ESP32-DevKitC V4でI2Cバスを使う場合は、SDA信号をIO21ピン、SCL信号をIO22ピンに接続するのがデフォルトですが、スケッチを修正する事で、接続するピンを変更する事ができます。

I2Cインターフェースを初期化するWire.begin関数は、次の様な書式になっています。

Wire.begin(int sda, int scl)

参考:Wire.begin関数についての詳細は、ESP32 Arduino CoreのドキュメントのI2Cのページをご覧ください。

ここで引数sdaは、SDA信号に割り当てるGPIOのピンで、引数sclは、SCL信号に割り当てるGPIOのピンです。(ただし、引数を省略してWire.begin()とすると、Wire.begin(21,22)と解釈されます)

例えば、SDA信号をIO18ピンにつなぎ、SDO信号をIO19ピンにつなぐ場合は、リスト1の18行目のWire.begin();Wire.begin(18,19);と書き換えます。

次のページでは、ESP-WROOM-02でI2C接続4×4キーパッドを使う方法について説明します。

目次へ  前のページへ (1) (2) (3) 次のページへ

このページで使われている用語の解説

関連ページ

関連製品

I2C接続4X4キーパッド 商品名 I2C接続4X4キーパッド
税抜き小売価格 2400円
販売店 スイッチサイエンス マルツ
サポートページ
Arduino 電子工作
このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。