【IoT×キャンプ|Sense HATテスト編】意地でもラズパイとキャンプへ!らずキャン△プロジェクト第7回

2021/03/04

IoT Python ガジェット らずキャン△ ラズパイ 開発

らずキャンプロジェクトSenseHATテスト編

IoTの代表格Raspberry Pi(ラズベリーパイ)を何とかキャンプで使ってやろうというこのプロジェクト、題して「らずキャン△プロジェクト」。

手段が目的化してしまっていますが、そんなことは気にしない!らずキャン△プロジェクトスタート!

連載第7回は【Sense Hatテスト編】。Raspberry Pi OS(旧Raspbian)へ、Sense Hatを取り付けて動作確認していきますよ〜。

RaspberrypiにSenseHATを取り付けたイメージ

第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に出力していきます。流れは以下のとおりです。

  1. Sense HAT取り付け
  2. Sense HATライブラリインストール
  3. コード記述と動作確認

Sense HAT取り付け

まずはSense HAT本体をラズパイに取り付けます。第一回準備編で紹介したケースであればピッタリ取り付けることができます。そのケースに取り付ける前提で進めます。

こちらが内容物の写真です。

Sense HAT内容物

まず付属のGPIOスタッキングコネクタを取り付けます。

スタッキングコネクタ取り付け

次にSense HAT本体を取り付けていきます。GPIOピンに対してしっかり差し込んでいきます。ちゃんと差し込むとケースに取り付けてある支柱までピッタリ届きます。

Sense HAT取り付け

最後に付属のネジで四隅を止めて完了です。

Sense HATをネジで取り付けた状態

電源を入れると立ち上げ時に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 Reference

VSCode右上の実行ボタンで動作確認できます。気温、湿度、気圧、方位が順番に表示されます。ただし気温に関しては、本体からの熱の影響を受けておりかなり高めにでます。今回の構成で正しい気温取得は難しそうですね。しかし正確な気温を取得することが目的ではないので気にしない!

LEDにデータが表示されている状態

ソフトは無限ループするようになっています。停止したいときはターミナルにカーソルを合わせて「Ctrl + C」を押してください。強制的にループを抜けることができます。

最後に

いかがでしたか?

Sense HATの動作確認が完了しましたね。いよいよ次回はキャンプで使える機能を実装していきます。

【IoT×キャンプ|機能実装編】意地でもラズパイとキャンプへ!らずキャン△プロジェクト第8回

記事まとめ

スポンサーリンク

フォロワー

Labels

Amazon (3) Apache (3) Apple (9) AppleSilicon (7) Bloggerカスタマイズ (12) EchoShow15 (1) IoT (25) Jetson (1) MySQL (1) PHP (3) Python (20) Web (3) アウトドア (11) アメリカ生活 (19) ガジェット (35) キャンプ (9) ディープラーニング (1) らずキャン△ (11) ラズパイ (24) 暗号資産 (5) 開発 (31) 旅行 (8)

QooQ