ITちゃんねる

仕事に役立つIT業界の最新ニュース

ラズパイの拡張ボード「SenseHAT」で温度や湿度、気圧を測定してみよう

 ラズパイで温度や湿度、気圧を測定する方法については第1回から第3回、第26回から第27回、第28回と紹介してきましたが、前回から取り上げている拡張ボード「Sense HAT」のセンサーでも同様に測定できます。前回と同様にラズベリーパイ財団のWebサイトを参考にして手順を紹介します。

 Sense HATには、第28回で解説したような、温度と湿度、気圧を測定するためのライブラリが用意されています。以下のように指定するだけで値を得ることができます。

 なおSense HATに取り付けられているのは湿度センサーと気圧センサーだけで、このどちらかから温度の値を得ることになります。値を得るのは「get_temperature_from_humidity()」もしくは「get_temperature_from_pressure()」と記述しますが、「sense.get_temperature()」と省略した場合は湿度センサーからの値を得るようになっています。

温度を測定する

 ではまず、Sense HATから温度の値を得てみましょう。以下のようにプログラムを記述して「temp.py」などのように名前を付けて保存したら起動してみましょう。

 保存したら以下のコマンドをコンソールから入力します。

 上記のように温度が表示されればOKです。なおSense HATはラズパイ本体の直上に取り付けるため、SoCの発熱によってあたためられてしまって正確な気温を測れません。このため“温度”と記述してきたのですが、正しい値を得たい場合は、以前紹介したようなBME280やSHT31といったセンサーを取り付けて測定した方が良いでしょう。

湿度を測定する

 では同様にSense HATから湿度の値を得てみましょう。以下のようなプログラムを記述して「hum.py」のように名前を付けて保存します。

 続いてプログラムを動かしてみましょう。

 コンソールに測定した湿度が表示されればOKです。

気圧を測定する

 最後に気圧の測定値を表示させてみましょう。以下のようなプログラムを記述して「pressure.py」などの名前で保存します。

 プログラムを動かします。

 測定した気圧の値が表示されます。

Sense HATに測定値を表示させる

 この3つを踏まえて、Sense HATで測定した結果を表示させてみましょう。まずは温度と湿度、気圧の値すべてをコンソール上に表示させてみます。以下のようなプログラムを記述します。

 ここではSense HATで測定された値をround関数で小数点以下第2位までの値を四捨五入しています。これを「sensehat.py」のように名前を付けて保存し、以下のコマンドでプログラムを動かします。

 温度と湿度、気圧が表示されます。

 では続いて、Sense HATのLEDに測定した結果が表示されるようにします。表示するためには「sense.show_message」を使います。なお文字列となるように、測定結果を「str」関数で変換します。プログラムは以下のようになります。

 「while True」によって無限ループで文字列が表示されるほか、「except KeyboardInterrupt」でCtrl+Cを押すとプログラムが終了するようにしています。またSense HATの表示を初期化するために、最後に「sense.clear()」を入れます。これがないとSense HAT上に文字がずっと表示された状態になってしまうためです。

 このプログラムを「thp.py」などとして保存したら、以下のコマンドを入力してプログラムを起動します。

 Sense HATのLEDに温度と湿度、気圧が表示され、右から左にスクロールしましたでしょうか。スクロールの速度は「sense.show_message(message, scroll_speed=0.05)」の「scroll_speed」に入力されている数値を変更すれば変えられます。

測定値により表示色を変更する

 ラズベリーパイ財団のSense HAT解説ページによると、国際宇宙ステーション(ISS)の気温は18.3度〜26.7度に設定されているそうです。そこでこの気温の間に入っているときは背景が緑色、はずれた場合は赤色で表示するようにしてみましょう。先ほどのthp.pyにif文を付け加えて温度範囲を設定し、文字の色を変更させます。

 記述したら「tempcolor.py」などのように名前を付けて保存して、以下のようにコンソールへ入力してプログラムを起動しましょう。

 測定値が18.3度〜26.7度の場合はバックが緑、それ以外の時は赤で表示されましたでしょうか。

 Sense HATの湿度、気圧センサーでさまざまな測定ができることはおわかりいただけましたでしょうか。気温を正確に測定できない点はちょっと残念ですが、そのほかのセンサーも付けられているので、いろいろと応用はできそうです。


ラズパイの拡張ボード「SenseHAT」で温度や湿度、気圧を測定してみよう