温湿度計(+メッセージ表示)の作製

はじめに

近年、夏の最高気温が各地で35℃を超える猛暑日が多く、熱中症の報道が絶えません。熱中症予防で先ず気を付けることは、周囲の環境温度を知ることです。そこで、PICマイコンと温湿度センサーを使って、温度が閾値以上になると、熱中症注意喚起のメッセージを液晶表示器に表示する温湿度計を作製しました。

概要

使用したSHT31温湿度センサーモジュールは、I2Cインターフェースの高精度温湿度センサー SHT31-DIS(SENSIRION社)を搭載したモジュールです。下は、モジュールの外観と主な仕様です。高い精度で温度と相対湿度を同時に測定できます。

SHT31は、測定コマンドを出した時に1回の測定を行う単発測定と、周期的に測定を繰り返す周期連続測定があります。単発測定(シングルショットモード)は、必要な時にだけ測定するので消費電力を下げられます。また、それぞれコマンドから繰り返し精度レベル(High/Medium/Low)を選択できます。(下表は単発測定コマンド)

繰り返し精度レベルは高いほど変換時間が長くなり、それにより消費電力も増加します。当作品の設定は、単発測定/繰り返し精度レベル(Medium)です。下は、温度と湿度の換算式です。

液晶表示器は、I2Cインターフェースの16文字x2行キャラクターLCD ACM1602NI-FLW-FBW-M01(Zettler Displays社)を使用しました。(下写真)

制御コマンドは、同社製品コンパチなので、スレーブアドレスを変更すれば動作します。下は、LCDのカーソル座標(表示位置)です。

内容

液晶表示器の1行目に温度と湿度を表示します。また、温度が閾値以上になると、2行目に「Be aware of heatstroke !」という熱中症注意喚起メッセージを表示します。
メッセージ(24文字)は、1行(16文字)に表示できないので、右から左にスクロールさせます。プログラムでは、メッセージとブランクを含む文字列を次の配列宣言によってchar型(文字列)配列 Message に格納しています。なお、メッセージ前後のブランクは、スクロールメッセージを見やすくするためのものです。
  char Message[] = “□□□□□□□□□□□□□□□□Be□aware□of□heatstroke□!□□□□□□□□□□□□□□□□”; (□はブランク)
下は、スクロールのフローチャートとプログラムです。xは、表示する文字列の先頭を指定するための変数です。xをインクリメントする度に、表示文字列の先頭は1つずつシフトします。

具体的に、x=24の状態で説明します。

Message[24]を先頭に文字列16文字が0xC0から0xCFに表示されます。次に、xをインクリメントすると、左に1文字シフトしたMessage[25]から16文字がLCDに表示されます。このように、xをインクリメントする度に左シフトした文字列が表示され、連続するとスクロールしているように見えます。

結果

下写真のようにブレッドボードに組み上げました。使用したマイコンはPIC16F1705。電源電圧は3.3[V]です。要素数(文字数)が多い文字列配列を扱う場合、メモリー容量が大きいマイコンが推奨されます。

動画はここ。温度が閾値(動画は30℃)以上の間は、文字列のスクロールを繰り返します。

まとめ

本作品は、閾値以上の温度で熱中症注意喚起メッセージを表示しますが、熱中症は高湿環境でも発症のリスクがあります。湿度も考慮してメッセージを表示すれば、より有用性が向上すると思います。
また、「水分補給を」とか「休憩しましょう」といった具体的な行動を促すメッセージや、音声で知らせてみるのも面白いと思います。オリジナルの熱中症予防作品に挑戦してみてはいかがでしょうか。

-以上-