ラズパイの拡張ボード「Sense HAT」で温度や湿度、気圧を測定してみよう:名刺サイズの超小型PC「ラズパイ」で遊ぶ(第30回)
気温や湿度、気圧の他、ジャイロスコープ、磁気センサー、加速度センサーを搭載しているラズパイ向け拡張ボード「HAT」で、温度や湿度、気圧を測定する方法を紹介します。
ラズパイで温度や湿度、気圧を測定する方法については第1回から第3回、第26回から第27回、第28回と紹介してきましたが、前回から取り上げている拡張ボード「Sense HAT」のセンサーでも同様に測定できます。前回と同様にラズベリーパイ財団のWebサイトを参考にして手順を紹介します。
Sense HATには、第28回で解説したような、温度と湿度、気圧を測定するためのライブラリが用意されています。以下のように指定するだけで値を得ることができます。
温度:sense.get_temperature() 湿度:sense.get_humidity() 気圧:sense.get_pressure()
なおSense HATに取り付けられているのは湿度センサーと気圧センサーだけで、このどちらかから温度の値を得ることになります。値を得るのは「get_temperature_from_humidity()」もしくは「get_temperature_from_pressure()」と記述しますが、「sense.get_temperature()」と省略した場合は湿度センサーからの値を得るようになっています。
温度を測定する
ではまず、Sense HATから温度の値を得てみましょう。以下のようにプログラムを記述して「temp.py」などのように名前を付けて保存したら起動してみましょう。
#!/usr/bin/env python # -*- coding: utf-8 -*- from sense_hat import SenseHat sense = SenseHat() sense.clear() temp = sense.get_temperature() print(temp)
保存したら以下のコマンドをコンソールから入力します。
$ python temp.py 35.5952529907
上記のように温度が表示されればOKです。なおSense HATはラズパイ本体の直上に取り付けるため、SoCの発熱によってあたためられてしまって正確な気温を測れません。このため“温度”と記述してきたのですが、正しい値を得たい場合は、以前紹介したようなBME280やSHT31といったセンサーを取り付けて測定した方が良いでしょう。
湿度を測定する
では同様にSense HATから湿度の値を得てみましょう。以下のようなプログラムを記述して「hum.py」のように名前を付けて保存します。
#!/usr/bin/env python # -*- coding: utf-8 -*- from sense_hat import SenseHat sense = SenseHat() sense.clear() humidity = sense.get_humidity() print(humidity)
続いてプログラムを動かしてみましょう。
$ python hum.py 36.5212097168
コンソールに測定した湿度が表示されればOKです。
気圧を測定する
最後に気圧の測定値を表示させてみましょう。以下のようなプログラムを記述して「pressure.py」などの名前で保存します。
#!/usr/bin/env python # -*- coding: utf-8 -*- from sense_hat import SenseHat sense = SenseHat() sense.clear() pressure = sense.get_pressure() print(pressure)
プログラムを動かします。
$ python pressure.py 1024.57421875
測定した気圧の値が表示されます。
Sense HATに測定値を表示させる
この3つを踏まえて、Sense HATで測定した結果を表示させてみましょう。まずは温度と湿度、気圧の値すべてをコンソール上に表示させてみます。以下のようなプログラムを記述します。
#!/usr/bin/env python # -*- coding: utf-8 -*- from sense_hat import SenseHat sense = SenseHat() sense.clear() temp = round( sense.get_humidity(),2 ) humi = round( sense.get_temperature(),2) pres = round( sense.get_pressure(),2 ) print ('Temp : %.2f ℃' %temp) print ('Humi : %.2f %' %humi) print ('Pres : %.2f hP' %pres)
ここではSense HATで測定された値をround関数で小数点以下第2位までの値を四捨五入しています。これを「sensehat.py」のように名前を付けて保存し、以下のコマンドでプログラムを動かします。
$ python sensehat.py Temp : 34.13 ℃ Humi : 36.20 % Pres : 1024.79 hP
温度と湿度、気圧が表示されます。
では続いて、Sense HATのLEDに測定した結果が表示されるようにします。表示するためには「sense.show_message」を使います。なお文字列となるように、測定結果を「str」関数で変換します。プログラムは以下のようになります。
#!/usr/bin/env python # -*- coding: utf-8 -*- from sense_hat import SenseHat sense = SenseHat() try: while True: # 温度と湿度、気圧を測定 t = sense.get_temperature() p = sense.get_pressure() h = sense.get_humidity() # 小数点以下第1位に四捨五入 t = round(t, 1) p = round(p, 1) h = round(h, 1) # 文字表示内容の設定 # str() converts the value to a string so it can be concatenated message = "Temperature: " + str(t) + " Humidity: " + str(h) + " Pressure: " + str(p) # スクロールメッセージを表示 sense.show_message(message, scroll_speed=0.05) except KeyboardInterrupt: sense.clear()
「while True」によって無限ループで文字列が表示されるほか、「except KeyboardInterrupt」でCtrl+Cを押すとプログラムが終了するようにしています。またSense HATの表示を初期化するために、最後に「sense.clear()」を入れます。これがないとSense HAT上に文字がずっと表示された状態になってしまうためです。
このプログラムを「thp.py」などとして保存したら、以下のコマンドを入力してプログラムを起動します。
$ python 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文を付け加えて温度範囲を設定し、文字の色を変更させます。
#!/usr/bin/env python # -*- coding: utf-8 -*- from sense_hat import SenseHat sense = SenseHat() # 色の設定 red = (255, 0, 0) green = (0, 255, 0) try: while True: # セ温度と湿度、気圧を測定 t = sense.get_temperature() p = sense.get_pressure() h = sense.get_humidity() # 小数点以下第1位に四捨五入 t = round(t, 1) p = round(p, 1) h = round(h, 1) # 文字表示内容の設定 message = "Temperature: " + str(t) + " Pressure: " + str(p) + " Humidity: " + str(h) # 値の範囲を指定 if t > 18.3 and t < 26.7: bg = green else: bg = red # スクロールメッセージを表示 sense.show_message(message, scroll_speed=0.05, back_colour=bg) except KeyboardInterrupt: sense.clear()
記述したら「tempcolor.py」などのように名前を付けて保存して、以下のようにコンソールへ入力してプログラムを起動しましょう。
$ python tempcolor.py
測定値が18.3度〜26.7度の場合はバックが緑、それ以外の時は赤で表示されましたでしょうか。
Sense HATの湿度、気圧センサーでさまざまな測定ができることはおわかりいただけましたでしょうか。気温を正確に測定できない点はちょっと残念ですが、そのほかのセンサーも付けられているので、いろいろと応用はできそうです。
関連記事
- ラズパイの拡張ボード「Sense HAT」で遊んでみよう
気温や湿度、気圧の他、ジャイロスコープ、磁気センサー、加速度センサーを搭載しているラズパイ向け拡張ボード「HAT」を紹介します。 - ラズパイで気温と湿度を測定、LINEで通知を受け取る 〜前編〜
今回は温湿度センサーモジュールとラズパイを組み合わせ、LINEと連携させる方法を紹介します。 - ラズパイを無線LANルーター化する 〜アクセスポイント編〜
家庭内で無線LANルータを使っている人は多いかと思います。今回はそのルーター機能をラズパイに持たせて、ラズパイを使った無線LANルーターの構築方法についてご紹介します。 - 本格的な撮影が楽しめる公式カメラモジュール「Raspberry Pi High Quality Camera」を試す
小さなマイクロコンピュータ「Raspberry Pi」(通称ラズパイ)で作る、自分だけのガジェット。Raspberry Pi公式のカメラとして本格的な撮影が楽しめる「Raspberry Pi High Quality Camera」を紹介します。 - ラズパイで新型コロナウイルス解析に参加する 〜Ubuntu Serverの構築編〜
小さなマイクロコンピュータ「Raspberry Pi」(通称ラズパイ)で作る、自分だけのガジェット。今回はラズパイで。 - ラズパイでスマートスピーカーを作る 「アレクサ!あしたの天気は?」 〜ソフトウェア準備編〜
小さなマイクロコンピュータ「Raspberry Pi」(通称ラズパイ)で作る、自分だけのガジェット。今回は米Amazonが開発したAIアシスタント「Alexa」をラズパイで使えるようにしてみます。 - これが“らずキャン△”だ! キャンプ場で役立つ「気温・湿度・気圧センサー」の作り方
小さなマイクロコンピュータ「Raspberry Pi」(通称ラズパイ)で作る、自分だけのガジェット。まずはキャンプ場で気温、湿度、気圧を測れるデバイスを作ってみます。 - ラズパイで「YouTube」と「Amazon プライムビデオ」を見る
小さなマイクロコンピュータ「Raspberry Pi」(通称ラズパイ)で作る、自分だけのガジェット。音楽や動画のメディアサーバ化するために入れたOS「OSMC」で、YouTubeやAmazon プライムビデオなどを楽しんでみましょう。 - ラズパイで自宅ファイルサーバを作る
小さなマイクロコンピュータ「Raspberry Pi」(通称ラズパイ)で作る、自分だけのガジェット。ネット経由でアクセスできる自宅ファイルサーバをラズパイで構築してみます。 - ラズパイで動体検知対応の監視カメラを作る
小さなマイクロコンピュータ「Raspberry Pi」(通称ラズパイ)で作る、自分だけのガジェット。ラズパイで動くソフト「motion」を使うと、カメラの前で何かが動いた瞬間に静止画や動画を撮影して記録できます。今回はラズパイで監視カメラを作ってみます。
Copyright © ITmedia, Inc. All Rights Reserved.