名刺サイズの超小型PC「ラズパイ」で遊ぶ(第30回)
ラズパイの拡張ボード「Sense 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の湿度、気圧センサーでさまざまな測定ができることはおわかりいただけましたでしょうか。気温を正確に測定できない点はちょっと残念ですが、そのほかのセンサーも付けられているので、いろいろと応用はできそうです。
Copyright © ITmedia, Inc. All Rights Reserved.
名刺サイズの超小型PC「ラズパイ」で遊ぶ
今やスマートフォンアプリで何でも完結できてしまう時代。しかし、一から自分の手でデバイスを作り上げ、試行錯誤しながらアイデアを具現化する楽しさは格別です。この連載では、テーマや用途にあわせてマイクロコンピュータ(マイコン)と呼ばれる名刺サイズの超小型PC「Raspberry Pi」(通称ラズパイ)の活用方法から具体的な工作手順までを紹介します。
この記事の著者
関連記事
こんなメディアも見られています
ITmedia NEWSに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
SpecialPR
本日の新着記事
アクセスランキング
-
1
Anthropic、「Claude Opus 5.5」公開 Fable 5.1並みの性能で利用コスト4割減
-
2
OpenAI、数学者の独立諮問グループと連携 内部モデルは「100件超の未解決問題を解決」
-
3
Google、「Googlebook」の予約受付開始 899ドル(約14万円)から
-
4
今度は“ディスプレイなし”のAIグラス、「Rokid Ai Glasses Style」を試す
-
5
FANZA、成人向けAI創作・公開サービス「FANZAスタジオ」発表 先行体験は8月24日から
-
6
OpenAI、フロンティアAIの国際標準づくりを米国主導で進めるよう提言 「RSIはまだ起きていない」
-
7
経営「AIでラクして早く帰って」→社員「帰らない」 工数最大9割減のDeNAも悩むAI効率化の壁
-
8
YouTube、収益化基準を2027年に大幅引き上げへ 新規参加条件が従来の2倍に
-
9
“自動で耳コピ”アプリ、ヤマハが無料公開 音源読み込み→3分でピアノ譜に
-
10
OpenAI、ChatGPTの日常使いをテーマにした新CM動画を公開
ITmedia NEWS SNS
インフォメーション
注目情報をチェック
ITmediaNEWSをフォロー
あなたにおすすめの記事PR