Raspberry Piに接続したマトリックスLEDにProcessingで作ったアニメーションを表示させる
はじめに
Processingはビジュアルアートやインタラクティブな作品を作ることができるプログラミング環境です。
プログラミング初心者でも基本的な文法を学ぶだけでグラフィックの描画が簡単にできるので、幅広い層に使われています。
オリジナルのProcessingはJavaで動作しますが、JavaScriptやPythonの実装などもあります。
また、最近マトリックスLEDを使ったサイネージを多く見かけます。広告用の大型ディスプレイはもちろんアート作品にも多く用いられています。
マトリックスLEDは発色が良く、応答性も高いため、非常に表現力があります。たとえばこのような作品があります。
しかし、マトリックスLEDを動かすには電子工作の知識が必要なので、ちょっと敷居が高いのではないでしょうか。
本記事ではProcessingで作った作品をマトリックスLEDに表示させるための環境をつくってみたので、ご紹介します。
こんな感じのものが出来上がります。
※まだ、手順の再現性を確認していないので、情報が抜けているかもしれません・・・。ご容赦ください。
しくみ
まず、マトリックスLEDを動かすためには電気信号を送る必要があります。HUB75というコネクタ経由で送るのですが、PCから送るためにはコンバータなど専用の機材が必要になります。
ここではRaspberry Piを使って、信号を送ります。Raspberry Pi用にマトリックスLEDを動かすためのライブラリrpi-rgb-led-matrixこれを使います。Raspberry PiとマトリックスLEDはAdafruitから出ているAdafruit RGB Matrix Bonnet for Raspberry Piという基板を使います。
Processingは本来、PCの画面上に描画するようにできているため、直接マトリックスLEDすることができません。その一方で、上記のrpi-rgb-led-matrixはC言語やPython用ですので、Processingから直接使うことができません。
そこで、まずPythonで画像をマトリックスLEDを描画するプログラムをつくります。このPythonのプログラムに対して、Processing内で描画した画面を送るという二段構えで、Processingで作った画面をマトリックスLEDで表示できるようにします。
具体的にはProcessingでつくった画面を一旦PNG形式に変換し、ソケット通信でPythonのプログラムに送って、PNG画像をマトリックスLEDに表示します。まとめるとしたのような構造になっています。
必要なもの
- Matrix LED (HUB75に対応しているもの)
- Raspberry Pi (スペック的に4以上がよいかも)
- Adafruit RGB Matrix Bonnet for Raspberry Pi など
動作方法
以下の通りで動作できるはずです。
- rpi-rgb-led-matrixのPython用ライブラリをドキュメントに従ってインストールする。
- Processingをダウンロードしてインストールする。
- Python側のプログラム実行に必要なライブラリ(pillow, websockets)をインストールする。
- 作成したソースコードをこちらからダウンロードもしくはクローンする。
- main.pyを実行する。
- Processingを起動し、本リポジトリのprocessing/sampleを開く
こんなものを作ってみました。
まとめ
マトリックスLED楽しいので、ぜひ使ってみましょう!
Discussion