IoTの代表格Raspberry Pi(ラズベリーパイ)を何とかキャンプで使ってやろうというこのプロジェクト、題して「らずキャン△プロジェクト」。
手段が目的化してしまっていますが、そんなことは気にしない!らずキャン△プロジェクトスタート!
連載第7回は【Sense Hatテスト編】。Raspberry Pi OS(旧Raspbian)へ、Sense Hatを取り付けて動作確認していきますよ〜。
第6回【Python開発環境VSCode編】はこちら。
【IoT×キャンプ|Python開発環境VSCode編】意地でもラズパイとキャンプへ!らずキャン△プロジェクト第6回この記事でわかること
Sense Hatで環境データを取得し、取得したデータをLED出力する方法がわかります。コピペで行けますんで、この機会にPython × IoTにチャレンジしてみたいよ、という方でも大丈夫です。
- Sense Hatの取り付け方。
- Sense Hatで気温、湿度、気圧、方位を取得する方法。
- Sense HatのLEDに色付き文字を出力する方法
プロジェクトを通して最初の着地点として実装を目指す機能はこちら。
- 炎っぽくゆらぐランタン機能
- 環境データを記録する機能
私の環境
- Raspberry Pi 4 Model B 8GB
- Raspberry Pi OS 32bit (Released:2021-01-11)
- Visual Studio Code ver 1.53.2
- Python 3.7.3
準備物
第6回までで準備してきたラズパイを使用します。VSCodeでPython3を使えるようにしてある状態です。
モニター、マウス、キーボード接続のラズパイ直接操作を前提としており、SSHやVNCは不要なのでONにはしません。
Sense HATとは
Sense HATとは「宇宙ステーションでラズパイ使おうぜ!」という「Astro Pi」プロジェクトのために作られたアドオンボードです。
主な機能はこちら
- 8x8LEDディスプレイ
- 4方向+1方向ジョイスティック
- 温度センサ
- 湿度センサ
- 気圧センサ
- IMU(慣性測定ユニット)
Pythonライブラリが用意されており、簡単にデータの入出力ができるようになっています。
https://www.raspberrypi.org/products/sense-hat/
The Sense HAT is an add-on board for Raspberry Pi, made especially for the Astro Pi mission – it launched to the International Space Station in December 2015 – and is now available to buy.
The Sense HAT has an 8×8 RGB LED matrix, a five-button joystick and includes the following sensors:
Gyroscope
Accelerometer
Magnetometer
Temperature
Barometric pressure
Humidity
We’ve also created a Python library providing easy access to everything on the board.
Sense HATで環境データ出力
ではこのSense HATを使って環境データの取得と、そのデータをLEDに出力していきます。流れは以下のとおりです。
- Sense HAT取り付け
- Sense HATライブラリインストール
- コード記述と動作確認
Sense HAT取り付け
まずはSense HAT本体をラズパイに取り付けます。第一回準備編で紹介したケースであればピッタリ取り付けることができます。そのケースに取り付ける前提で進めます。
こちらが内容物の写真です。
まず付属のGPIOスタッキングコネクタを取り付けます。
次にSense HAT本体を取り付けていきます。GPIOピンに対してしっかり差し込んでいきます。ちゃんと差し込むとケースに取り付けてある支柱までピッタリ届きます。
最後に付属のネジで四隅を止めて完了です。
電源を入れると立ち上げ時にLEDがレインボーに点灯します。目だと全LEDが点灯しているように見えますが、スマホカメラだとシャッタースピードの関係で一部が光っている状態しか撮れませんね。(LEDを高速で切り替えながら順番に光らせているため)
Sense HATライブラリーインストール
Raspberry Pi OSにはPython3用のSense HATライブラリーがプリインストールされています。もし何かの理由でインストールが必要な場合は次のコマンドでインストールできます。
sudo apt install sense-hat
コード記述と動作確認
では実際にコードを書いて動作確認していきます。今回は以下の機能をテストします。
- 気温、湿度、気圧、方位データの取得
- 取得した気温によって表示する文字の色を設定
- 取得したデータを設定した文字色で表示
まずVSCodeでPythonファイルを作成します。それへ次のコードを全部コピペすればOKです。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sense_hat
def main():
sense = sense_hat.SenseHat()
try:
while True:
#データ取得し小数点1桁まで表示
temp = round(sense.get_temperature(),1)
humd = round(sense.get_humidity(),1)
pres = round(sense.get_pressure(),1)
comp = round(sense.get_compass(),1)
#表示内容
message = f"Temperature: {temp} C Humidity: {humd} % Pressure: {pres} hp Compass: {comp} deg"
#表示用テキストカラー取得
tc = get_temperature_color(temp)
#スクロールメッセージ表示
sense.show_message(message, scroll_speed=0.05, text_colour=tc)
#表示クリア
sense.clear()
except KeyboardInterrupt:#ターミナルCtrl+C強制終了
sense.clear()
def get_temperature_color(t):
"""温度(摂氏)によってRGBを返す"""
#文字色設定
if t < 0:
tc = BLUE
elif 0 <= t <10:
tc= SKYBLUE
elif 10 <= t <30:
tc = GREEN
elif 30 <= t <40:
tc= YELLOW
elif 40 <= t <50:
tc= ORANGE
elif 50 <= t:
tc = RED
else:
tc= WHITE #念の為
return tc
##色の定義RGB#####
WHITE = [255,255,255]
RED = [255,0,0]
ORANGE = [255,127,0]
YELLOW = [255,255,0]
GREEN = [0,255,0]
SKYBLUE = [0,255,255]
BLUE = [0,0,255]
##############
if __name__ == '__main__':
main()
ライブラリのリファレンスはこちら
Sense HAT API ReferenceVSCode右上の実行ボタンで動作確認できます。気温、湿度、気圧、方位が順番に表示されます。ただし気温に関しては、本体からの熱の影響を受けておりかなり高めにでます。今回の構成で正しい気温取得は難しそうですね。しかし正確な気温を取得することが目的ではないので気にしない!
ソフトは無限ループするようになっています。停止したいときはターミナルにカーソルを合わせて「Ctrl + C」を押してください。強制的にループを抜けることができます。
最後に
いかがでしたか?
Sense HATの動作確認が完了しましたね。いよいよ次回はキャンプで使える機能を実装していきます。
【IoT×キャンプ|機能実装編】意地でもラズパイとキャンプへ!らずキャン△プロジェクト第8回
0 件のコメント:
コメントを投稿