Unicorn HAT HDというデバイスがあります。これは16 x 16 に256色出力できるLEDを備えたディスプレイデバイスです。プログラマブルに出力内容を指定できるので、メッセージを流したり温度や湿度を表示したりするのに便利です。

今回はこのUnicorn HAT HDとisaaxを組み合わせたデモを紹介します。

必要なもの

今回のデモコードでは以下のデバイス、技術を使います。

  • Raspberry Pi
  • Unicorn HAT HD
  • Python3
  • isaax

作るもの

isaaxでは環境変数をクラウドから設定できます。今回のデモではこの環境変数を読み取り、Unicorn HAT HD上に表示します。動かしたデモは以下の動画です。

isaax上で環境変数を変更すると、ディスプレイにそれが反映されているのが分かるでしょう。

Pythonのコードのベース

Unicorn HAT HDのサンプルコードがGitHubで公開されていますので、unicorn-hat-hd/text.py at master · pimoroni/unicorn-hat-hdをベースにします。これは任意の文字列(英語に限ります)を表示するものです。

デモコードは一度コードを表示して完了してしまうので、全体を関数で囲んで繰り返し実行するようにします。

#!/usr/bin/env python

import colorsys
import signal
import time
from sys import exit

try:
    from PIL import Image, ImageDraw, ImageFont
except ImportError:
    exit("This script requires the pillow module\nInstall with: sudo pip install pillow")

import unicornhathd

def show():
  lines = ["In the old #BILGETANK we'll keep you in the know",
           "In the old #BILGETANK we'll fix your techie woes",
           "And we'll make things",
           "And we'll break things",
           "'til we're altogether aching",
           "Then we'll grab a cup of grog down in the old #BILGETANK"]
  # 省略
  unicornhathd.off()
  return True

while True:
  show()
  time.sleep(3)

Raspberry Piの環境設定方法は後ほど説明します。

isaaxプロジェクトの登録

新規プロジェクトを作成し、Gitリポジトリを指定します。後はダッシュボードで表示されるisaaxインストールコードを実行すれば、isaaxdが開始し、コード更新を待ち受ける状態になります。

環境変数の設定

isaaxダッシュボードにて、環境変数を設定します。これはクラスター(デバイスグループ)ごとに設定しますので、デバイスのクラスタ(ほとんどの場合はDefault)へドリルダウンします。

そしてギアアイコンをクリックして設定画面を表示します。そしてユーザ変数をクリックして、さらに環境変数追加をクリックします。

出てきたモーダルウィンドウで、名をMESSAGE、値を任意の文字列(英数字のみ)を入力します。今回はカンマ(,)ごとに文字列を区切りますので、注意してください。例えば以下のように設定します。

Hello Python,Hello isaax,I call you later.

環境変数の取得

isaaxで設定した環境変数はPython標準のやり方であるos.environ.get('MESSAGE')で取得できます。カンマ区切りの文字列を配列に変換するので以下のようにプログラミングします。

message = os.environ.get('MESSAGE')
 lines = message.split(",")

ただし、この環境変数は実行中は不変です。つまりクラウド側で新しい値にアップデートしたとしてもスクリプト側では変わりません。メッセージを変えるにはアプリケーションを再起動する必要があります。

なお、isaaxプロジェクトは環境変数の値を /etc/sysconfig/isaax-project というファイル名で保存します。

フォントの設定

今回、フォントはRobotoを使っています。これは apt-get でインストールできます。

$ sudo apt install fonts-roboto

ライブラリのインストール

Unicorn HAT HDのライブラリをインストールします。

$ sudo apt-get install python3-pip python3-dev python3-spidev libopenjp2-7-dev
$ sudo pip3 install unicornhathd

画像ライブラリのPILをインストールします。指定したフォントで書いた文字を画像とし、その画像をUnicorn HAT HDに表示するためです。

$ sudo pip3 install pillow

環境変数を更新する

isaaxクラウドで環境変数を変更してアプリケーションを再起動してみましょう。数秒後にメッセージが変わるのが分かるはずです。

まとめ

Unicorn HAT HDはテキストや絵文字などを簡単に表示できます。センサーの値であったり、センサーの値を表示することもできます。さらにisaaxと組み合わせることで、表示内容の変更も容易です。皆さんのIoTシステム開発にお役立てください。

なお、コードはisaaxug/isaax-unicorn-hat-hd-demoにアップロードしてあります。実装時の参考にしてください。

isaax IoT