温湿度計 AHT21を使う(001)
除湿器を導入してから窓の結露がなくなり、植物も調子がいい様子。やはり湿度は無視できない要素であるように思える。そこで湿度計を用意することにした。
市販されている湿度計を買ってくれば済む話だけど、将来的には自動でデータログも取りたいので、温湿度モジュールAHT21を購入した。
PIC16F18326
マイコンはPIC16f18326を使用。メモリも多く安いので重宝している。温湿度の表示は128x64のOLEDモジュールを使用する。
AHT21およびOLEDモジュールともにI2Cで通信する。テスト用に作っておいたPICテスト基板につなげるだけなので、らくちん。
とりあえずつなげただけ。
OLED表示用フォントの作成
やや面倒なのはOLED表示のプログラミングコード。以前はAdafruitさんのライブラリをPIC用に手を加えて利用していた。非常に楽ができてAdfruitsさんには感謝しているが、コードがやや重いのと、表示に少しだけ時間がかかるので、今回はライブラリは使用せず、自分で数値フォントデータ(0-9)を用意し、スリム化することにする。
OLED表示用フォントの作成
フォントデータの作成は手作業でできなくないけどできるだけ楽したい。sparkfunさんのサイトを参考にフォントを作成。
https://learn.sparkfun.com/tutorials/microview-hookup-guide/creating-fonts-for-microview
AHT21のライブラリ
Arduinoであればlibraryが多く、githubをあさればだいたい見つかる。PICとなるとそうはいかないけれど、Githubに公開されているArduino用ライブラリはソースがあるので、PIC用にmodifyして利用できる。(とことん楽しよう)
モジュールの初期化など面倒のことが多いので、公開されているライブラリは非常にありがたい。
PICのコーディング
PICでのコーディングではまったのは32ビットの変数を16ビット左にシフトすると値がおかしくなってしまうことが起きたぐらい。(0x00000006を16ビット左にシフトすると0xFFF60000とかになった。シフトではなく掛け算する場合は問題ない)
温度と湿度の表示がうまくできたので、次回は箱を作ろうと思う。
温湿度計 AHT21を使う(001)