概要
温湿度表示が簡単にできる、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++のクラスにしました。
以下の点が未完成です。
- 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 | リセット |
ソフトウェア
以下に、ファイルを置きました。
- 電子ペーパーモジュール
- IST7134
バージョン
Hardware: | Arduino Nano 33 BLE Sense |
Software: | Arduino IDE 2.0.3(Arduino Mbed OS Nano Boards 3.5.4) |
最終更新日
July 14, 2024