naoki86star

インターネットの片隅でなにかしら書いてみる

led-matrix on raspi

 pi-zeroでRGBのLEDマトリクスを使ってみてる、という内容。具体的にはpimoroniって会社の製品の話だけども別に宣伝したいわけではない。

動機:
 いくらかセンサーデバイスで集めている値表示の手段のうちの一つとして適当なサイズのシグナリング表示が欲しくなった。テキスト表示でなく緑とか赤で光るいわゆる状態表示モノが欲しい。カラーLCDdisplayみたいなのとかは大げさで実装もそこまでしたくないくらいのレベル。*1
 最初4点表示くらいをフルカラーLEDで試してみようと思ったら入手したLEDがアノードコモンになっていて、色ごとにトランジスタとかつけたほうがよいだろう*2。1色表示するのにちょっとした回路付加してそれからGPIOも3pin占めるとなると、もうディスクリートで組むのをあきらめた。LEDを追加したくなっても大変そう。

経過:
 それで、なにかイイモノないか探していて、これpimoroniのunicorn-phatてのをつかってみたという次第。amazonで自分が購入したときは\2000くらいだった。
 20pinx2列のコネクタが添付でついていたけども、ras-piのピンの利用がまとまっているここによると、この回路が使っているのは5VとGPIO18(+GND)ということなので、LEDの基盤の4,6,8,10,12の5pinだけコネクタ接続。まぁそうしていいとは彼らのドキュメントに書かれてはいないけども。
 でも今回これを実際に選んだのは、例えばi2cセンサーがSCL/SDA+3.3Vを使っている、のように、このガジェットの使っているピンがはっきり事前に分かったのでちょっと使ってみようと思った。*3

f:id:naoki86star:20201129154728j:plain

 今時点、このpimoroniの基盤ともう一枚回路板をスタックして赤外線リモコン受信(GPIO17)とi2c(bus-1)を同時に使っている。消費電流は、pi-zeroの電源をディジタル電流・電圧系を介してつないでその表示をで見ている限りで、100-120mA。今はマトリクスの表示更新を1秒間隔程度で、32led全部を同時に表示することをしていないので、条件如何でもう少し上がるかも。それとか電流計で見えないレベルだと瞬間的にたくさん流れているときもあるのかもしれない。pimoroniのwebサイトにはraspi公式電源推奨とある。

 ledの制御はpythonにて。スクリプトはsudoで動かす必要がある。単プロセスで動かしてる、できるのかもしれないけども複数プロセスは考えない。

 LEDは結構な明るさのように感じたのでunicorn.brightness(0.5)で使っている。けれどもどうやらこれだとRBG指定で87以下は発光してくれない。

 githubの説明のfull install一度やってみたけども開発とかしないならあまりメリットないかも。pipによるinstallで事足りるように思った。

 このLEDマトリクスの(I/)OピンになっているGPIO18のメジャーな用途だと赤外線送信があって、それを使っていると被ってしまう。あとPWMを使っているから”アナログオーディオの再生と干渉する可能性”はどこかに書かれていた。(今のところオーディオは全く使ってない。)

その他:

  • 4x8なのでASCIIアートするにはちょっと小さい。
  • 1列単位で用途を定めて使う程度が自分にはちょうどいい感じ。
  • 表示速度というか制御の反応性は、表示だけならばオーディオのレベルメータもいけそうな感じ*4

 実質3線で接続できてるので、zeroの基盤にスタックさせるよりケーブルで接続していい感じのケースに格納したほうが可搬性も増すので、もっといいかな。。。



 て振り返ったらこのUnicorn pHATはもう生産停止になったみたいでした。。。

*1:それ系はブラウザ表示でやればいい

*2:RBGごとに消費電流が違うからアノードコモンになっているのであろう

*3:20x2コネクタピン接着済みで1~2pin(+power)しか使っていないもしくは不明なようだと購入は決断できない

*4:音域分割表示のためFFTとか同じCPUでやらせ始めたらどうなるか?zeroだとちょっと厳しい?