sense hatに搭載のセンサーにて気圧、温度、湿度を測定する

2017年5月9日

※リニューアルしました 2018/10/9

今までは、sense hat のLEDへの表示(sense hatの取付けとLEDにテキスト表示を実施、sense hatのLEDマトリクス上に様々なイメージを表示する、sense hatのLEDマトリクス表示の向きの設定を変更する方法)を実施してきました。

今回は、sense hat上にあるセンサーに着目します。

Sense HATには、周囲の状況を検出するための一連の環境センサーがあります。気圧、温度及び湿度を測定することができます。

それぞれのセンサーの位置については参考記事をご覧ください。

スポンサーリンク

Sense HAT で気圧を測る

まずは、気圧を測り、print するプログラムです。

from sense_hat import SenseHat
sense = SenseHat()
sense.clear()
pressure = sense.get_pressure()
print(pressure)

実行すると、測定した気圧の値が表示されます。

1018.3173828125 

Sense HAT で温度を検出する

Sense HATには、周囲温度を読み取ることができる2つのセンサー、湿度センサーと圧力センサーがあります。

  • get_temperature_from_humidityは湿度センサーから温度を読み取ります(get_temperatureは同じコマンドの短いバージョンです)。
  • get_temperature_from_pressureは、圧力センサーから温度を読み取ります。
from sense_hat import SenseHat
sense = SenseHat()
sense.clear()
temp = sense.get_temperature()
print(temp)
temp = sense.get_temperature_from_pressure()
print(temp)

実行したところ、以下の結果です。

38.38426971435547
35.349998474121094

温度が3℃も違いますね。うーん、どちらが合っているんだろうか?この場では結論が出せませんね。

ラズパイにかぶせてあるので、秋なのに、こんな高温になっています。


Sense HAT で湿度を検出する

今度は、湿度を測ってみます。

from sense_hat import SenseHat
sense = SenseHat()
sense.clear()
humidity = sense.get_humidity()
print(humidity)

実行すると以下の結果が出ました。

48.57493591308594 

48.6%ですか。まあ、低い方なんでしょうかね?

気圧、温度及び湿度のスクロールテキスト表示

さて、次の演習は、気圧、温度及び湿度を測定して、測定結果をスクロールテキスト表示をするプログラムです。

「テキストの表示」で用いたスクロール・テキストの表示コードを使用します。

while True:
# Take readings from all three sensors
t = sense.get_temperature()
p = sense.get_pressure()
h = sense.get_humidity()
# Round the values to one decimal place
t = round(t, 1)
p = round(p, 1)
h = round(h, 1)
  ※------※ 下記参照
# Create the message
# str() converts the value to a string so it can be concatenated
msg = "Temperature = {0}, Pressure = {1}, Humidity = {2}".format(t,p,h)
# Display the scrolling message
sense.show_message(msg, scroll_speed=0.05)

国際宇宙ステーションでは、気温で言うと、18.3℃~26.7℃の間で環境を維持しているようです。

そこで、次のプログラムは、気温が18.3度以上、26.7度以下なら、背景を緑、それ以外は、背景を赤くします(上記※------※に下記のif文が入っています)。

60爺の環境では、気温が35.0度(Sense Hatをずっとかぶせてあるので気温が高くなっているようです)だったため、背景が赤くなりました。

if t > 18.3 and t < 26.7:
bg = [0, 100, 0] # green
else:
bg = [100, 0, 0] # red

ただ、このプログラムでは、次の問題があります。

①メッセージスピードが速い
②背景が赤くて60爺の目に痛い
③気温他の見出しが長い
④全体をクリアしていないので、中断するとLEDに、それまでの結果が残る

そこで、次のように、プログラムを修正しました。 それと、⑤各数値は、小数点第二位まで表示するようにしました。

while True:
t = sense.get_temperature()
p = sense.get_pressure()
h = sense.get_humidity()
t = round(t, 2)  ⑤
p = round(p, 2)  ⑤
h = round(h, 2)  ⑤
if t > 18.3 and t < 26.7:
bg = [100, 0, 0] # red    ②
else:
bg = [0, 100, 0] # green    ②
# msg = "Temperature = {0}, Pressure = {1}, Humidity - {2}".format(t, p, h)
msg = "Temp = {0}, Pres = {1}, Humi = {2}".format(t, p, h)    ③
# sense.show_message(msg, scroll_speed=0.05, back_colour=bg)
sense.show_message(msg, scroll_speed=0.1, back_colour=bg)    ①
sense.clear()    ④
sleep(1)      ④

修正したプログラムを実行すると、問題点は、以下のように変更されています。

①メッセージスピードが先ほどより遅くなった
②背景は緑にした
③気温他の見出しは4桁になった
④最後に全体をクリア(1秒間)しているので、中断は、この時点で行う

スポンサーリンク

以下に結果を動画で載せますね。

最後に

今回は、sense hat上にあるセンサーに着目しました。Sense HATには、周囲の状況を検出するための一連の環境センサー(気圧、温度及び湿度)があります。

簡単なプログラムで、それらの値を検出することが出来ました。

ただ、温度はラズパイが熱を発するので、少々高い温度になってしまうようですね。

最後に測った内容をディスプレイ表示しましたが、早く流れすぎるのでプログラム修正をかけて見ました。これらを使用することで、簡単に周囲の環境を計測できますね。

■「sense hatで遊ぶ!」の記事は次の通りです

参考
IT女子のラズベリーパイ入門奮闘記第45回

スポンサーリンク
この記事を書いた人

60爺

60路を越え、RaspberryPi と出会い、その関係でブログ開設(2017/2~)となりました。始めてみると、コツコツやるのが性に合ってしまい、漢字の記事から家の補修・将棋・windows10関係・別名・言い方などジャンルを拡大して今に至ってます。まだまだ、元気なので新たな話題を見つけて皆様に提供できればと思っています。「プロフィールはこちら