2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

1602 キャラクタ LCDモジュール をI2C接続で ESP32 で動かす

Last updated at Posted at 2020-07-06

1602 キャラクタ LCD モジュールを I2C で接続してみます。

「1602 キャラクタ LCDモジュール を STM32 と RaspberryPi で動かす」
https://qiita.com/nanbuwks/items/d5f094e54a3f6641c970

にて、16行2列の液晶モジュールについて説明しました。
この記事ではパラレル接続で RaspberryPi と STM32 で動かしましたが 今回は I2C 接続と ESP32 の組み合わせで試してみます。

環境

  • ESP32 WEMOS Lolin32
  • Arduino 1.8.10 開発環境
  • LiquidCrystal I2C by Franc de Brabander バージョン 1.1.2 ライブラリ

LCD と I2C 変換アダプタ

LCDは先の記事「1602 キャラクタ LCDモジュール を STM32 と RaspberryPi で動かす」
https://qiita.com/nanbuwks/items/d5f094e54a3f6641c970
で紹介した 3.3V のものを使いました。

IMG_20200706_230115881.jpg

これに、I2C 変換アダプタを接続します。
IMG_20200706_225832676.jpg

今回は表面にはんだ付けしました。

このI2C変換アダプタは中華製のノーブランド品です。

接続

IMG_20200706_224123329_HDR.jpg

I2C変換アダプタ側 Wemos ESP32側
GND GND
VCC 3.3V
SCL SCL
SDA SDA

I2C アドレス

変換アダプタのチップや、アドレス指定ジャンパーの設定によりいくつかアドレスが変わっているそうだ。購入の際ドキュメントなどはないので、スキャナで調べた所 0x27 だった。

cf.,「ESP32 を使って I2C スキャナ」
https://qiita.com/nanbuwks/items/c235f7f867f6139b6c8b

一見同じに見える「1602LCDをI2C変換アダプタを使ってArduinoで表示する。」
https://qiita.com/clses/items/b4940804eb0a663fdc41
の記事では 0x3F となっているが、こちらではサンプルプログラムのデフォルトの 0x27 のままで動作した。

以下は「1602 キャラクタ LCDモジュール を STM32 と RaspberryPi で動かす」のサンプルプログラムをI2C用に書き換えたもの。


#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);  // I2C addr, 16x2 character

void setup()
{
  Serial1.begin(115200);
  lcd.init();                      // initialize the lcd 
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0); //LCD Row 0 and Column 0
  lcd.print("Hello...!");
  lcd.setCursor(0, 1); //LCD Row 0 and Column 1
  lcd.print("Time:");
}

void loop() {

lcd.setCursor(6, 1);
int times=millis() / 1000;
lcd.print(times);
Serial1.println(times);
delay(1000);
}

おまけ 秋月電子のLCDで失敗

IMG_20200706_225617993.jpg

秋月電子「I2C接続キャラクタLCDモジュール 16×2行 白色バックライト付」
(ACM1602NI-FLW-FBW-M01)

でもやってみました。こちらは追加モジュール無しでI2C通信ができます。
I2Cアドレスはマニュアルでは 10100000 とあります。このまま読むと 0xA0 となりますが、最下位ビットはR/Wビットなのでそれを除外し 1ビットシフトして 0x50 が I2C アドレスらしい。

しかしやってみましたが、I2Cスキャナにもスケッチにも反応しませんでした。調査中・・・

接続

IMG_20200706_225554018.jpg

|No.|Symbol|説明|
|:---:|:---:|:---:||
|1|VSS|GND||
|2|VDD|3.3V||
|3|V0|LCDコントラスト調整。10kΩの半固定抵抗に接続|
|4|SCL|I2C SCL|ESP32 SCLに接続
|5|SDA|I2C SDA|ESP32 SDAに接続|
|6|BL+|バックライトLED+|接続なし|
|7|BL-|バックライトLED-|接続なし|

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?