daikiojm’s diary

ブログを書くときがやってきたどん!

Unicorn pHATを試してみる

pHATシリーズはRaspberry PiのGPIOに接続して、機能拡張ができるというもの。
今回買った、Unicorn pHATは 8x4のRGB LEDが乗ったものです。
スイッチサイエンスでRaspberry Pi Zeroを買うついでにノリで買ってしまったので、セットアップして動かしてみました。

ハードウェアの準備

まずは、Unicorn pHATに付属するピンヘッダーのソケットを取り付けます。 久しぶりにはんだ付けしたので、かなり汚いです…

f:id:daikiojm:20170702155733j:plain

Raspberry Pi ZeroにはGPIOのピンヘッダが付いていないので、こちらもはんだ付けしました。
使ったのは コレ 。 前に他の用途で買ったものだと思うけど、Unicorn pHATを取り付けると長すぎる気がする。 →強く押し込んだらしっかり刺さった…

f:id:daikiojm:20170702155805j:plain

ソフトウェアの準備

ターミナルから、必要なソフトウェアの準備を行います。
今回は、Macからssh経由で操作し、ファイルはCyberduckを使いsftp経由で転送しました。

UnicornHatをPythonから操作するためのライブラリをインストールします。
まずは、適当なディレクトリで以下を実行。

$ curl https://get.pimoroni.com/unicornhat | bash

一連のインストースクリプトの実行が終わると再起動を促されるので、yを選択して再起動します。

Would you like to reboot now? [y/N]

再起動後、再度Raspberry Piのターミナルを開きPythonインタープリタが使用できることと、インストールしたUnicornHatのライブラリがimportできることを確認します。
一般ユーザーpiで実行したところ、unicornhatのライブラリが/dev/memへのアクセスを要求するため、アクセス権限の問題で実行できませんでした。
今回は、以後rootでPythonを実行することにしました。

$ sudo python
Python 2.7.9 (default, Sep 17 2016, 20:26:04)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import unicornhat
>>>

とりあえず光らせてみる

上記のPythonインタープリタ上で以下のように続けます。

>>> unicornhat.set_layout(unicornhat.AUTO)
>>> unicornhat.brightness(0.5)
>>> unicornhat.set_pixel(0,0,255,0,0)
>>> unicornhat.show()
>>>

すると、次のように左上のLEDが赤色に点灯します。

f:id:daikiojm:20170702155821j:plain

unicornhat.set_layout(unicornhat.AUTO)

UnicornHATには通常サイズ(HAT)と半分サイズ(PHAT)があるらしく、それぞれLEDのレイアウトが異なるため、ここで使用するHATの種類を設定します。
ここでは、自動で判別させるためAUTOと指定しました。

unicornhat.brightness(0.5)

1.0を最大値としてLEDの明るさを設定します。
最大の明るさだとかなり明るいので、ここでは半分の0.5としています。

unicornhat.set_pixel(0,0,255,0,0)

点灯するLEDと色を指定します。
第1~2引数でLEDの位置を設定し、第3~5引数は色を設定します。

f:id:daikiojm:20170702155846p:plain

unicornhat.show()

実際に表示させる命令です。

他も試す

全部点灯

import unicornhat as unicorn
from time import sleep

unicorn.set_layout(unicorn.AUTO)
unicorn.brightness(0.5)
width,height=unicorn.get_shape()

for x in range(width):
    for y in range(height):
        unicorn.set_pixel(x, y, 0, 255, 255)
unicorn.show()

while True:
    sleep(1)

get_shape() でレイアウトの幅と高さを取得できるようです。

その他

Unicorn HATのリポジトリにサンプルがたくさんありました。
まずは、ここらへんで遊んでみると楽しいです(雑)。

github.com

雑感

ノリで買ったはいいものの1ヶ月ぐらい放置してしまっていたので、ひとまず動作確認?レベルですが触れてよかった。
「GPIOに接続したLEDを操作する」などに比べると、ハードウェアの組み立て的にも、プログラムの容易さ的にも格段と簡単にLED表示が実現できるデバイスだと感じました。
ライブラリさえインストールしてしまえばPythonから操作できるという点は、WebアプリやSlackBotなどとの組み合わせで可能性が広がりそうです。