sense hatに搭載のセンサーにて気圧、温度、湿度を測定する
※リニューアルしました 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で遊ぶ!」の記事は次の通りです
ディスカッション
コメント一覧
まだ、コメントがありません