1.9インチ91セグメント電子ペーパーモジュール
Nano 33 BLE Sense

概要

温湿度表示が簡単にできる、1.9インチ91セグメント電子ペーパーモジュールを使った、温湿度表示の実験です。

販売元のページで、Arduino用のコードも公開されていますが、C++のクラスではありませんでした。このコードを参考にして、C++のクラス(ライブラリ)にしてみました。

温度と湿度は、Arduino Nano 33 BLE Senseに搭載されている、HTS221を利用し、Arduino teamによって提供されている公式ライブラリを利用しました。

実験

1.9インチ91セグメント電子ペーパーモジュール

このモジュールは、電子ペーパーとそれを駆動するためのIST7134という120チャネルの電子ペーパー用ドライバーICが搭載されているようです。このため、実際に制御するのは、IST7134です。

今回は、IST7134を制御するためのgarretlab_IST7134と、電子ペーパーに表示する情報を生成するための、garretlab_ePaper19の2つのクラスを作成しました。

IST7134

IST7134は、電子ペーパーを駆動するための、120チャネルのドライバーICです。I2Cで制御することができます。

データシートを読んでI2Cコマンドは理解できましたが、具体的に電子ペーパーに文字などを表示するためのシーケンスなどはよくわかりませんでした。このため、WaveShare社が提供しているサンプルコードを基に、C++のクラスにしました。

i

以下の点が未完成です。

  • IST7134に温度取得コマンドがあるのですが、うまく読み取れていません。
  • 本来は気温によって調整する必要があるのですが、今回は省略してしまいました。電子ペーパーのためにはあまりよくないかもしれないので注意してください。

電子ペーパーモジュール

今回利用した電子ペーパーは、温度・湿度を表示することが主な目的の電子ペーパーなので、ほぼそれ専用に作成してみました。基本的には、温度と湿度の数字を、IST7134に渡すためのデータに変換しているだけです。

IST7134は、120チャネルの情報を扱うことができるので、15バイトのバッファが用意されています。この電子ペーパーモジュールでは、14バイトの情報を利用しています。ただし、14バイトの情報の全てが電子ペーパーモジュールのセグメントに結びついているわけではありません。見づらいですが、下の図に電子ペーパーのセグメントと、IST7134のバッファとのマッピングを示しました。黒い数字がバイト位置で、Bn(n = 0~7)と書いてある部分が、各バイト内のビット位置を表しています。

今回作成したクラスは、以下の部分を個別で設定するメソッドと、設定した内容を表示するメソッドを作成しました。

  • 温度
  • 湿度
  • 温度単位(摂氏・華氏・非表示)
  • パーセント表示
  • Bluetooth記号表示(表示・非表示)
  • 電池記号表示(表示・非表示)
  • 設定した情報を表示
  • 電子ペーパーのリフレッシュ用波形出力を設定

また、温度と湿度については、設定した情報を表示するメソッドにパラメータとして与えられるようにもしました。

温湿度モジュール

Arduino Nano 33 BLE Senseに搭載されている、HTS221を利用し、Arduino teamによって提供されている公式ライブラリを利用しました。

HTS.begin()で初期化した後、HTS.readTemperature()で温度を取得、HTS.readHumidity()で湿度を取得することができます。

接続

Arduino Nano 33 BLE Senseと、電子ペーパーモジュールとは、以下のように配線しました。

Arduino 電子ペーパーモジュール 説明
3.3V VCC 電源
GND GND GND
SDA SDA SDA(I2C)
SCL SCL SCL(I2C)
D7 BUSY ビジー
D8 RST リセット

ソフトウェア

以下に、ファイルを置きました。

バージョン

Hardware:Arduino Nano 33 BLE Sense
Software:Arduino 2.0.3(Arduino Mbed OS Nano Boards 3.5.4)

最終更新日

February 18, 2023

inserted by FC2 system