以前aliexpressで購入した8×8のNeoPixelボードをRaspberry Pi Zero Wにつないでみました。
(おそらくこれと同じものだと思います。価格は1/5くらいでしたが・・・)
ソフトウェアは、こちらのツールを使いました。
jgarff/rpi_ws281x: Userspace Raspberry Pi PWM library for WS281X LEDs
解説がこちらにあります。
Overview | NeoPixels on Raspberry Pi | Adafruit Learning System
NeoPixelは以前も書いたように1ビットの信号線で色信号を送ります。
この信号はかなり高速で、Linuxの上でソフトウェアでGPIOをオン・オフしていては間に合いません。
そのため、上記のソフトウェアではRaspberry Piのハードウェア機能のうち、シリアル通信を高速に行えるSPI、PWM、PCMのいずれかを使用して信号を送るようになっています。
今回はSPI(GPIO10/SPI0_MOSI)に接続してみました。電源は3.3Vに接続します。5Vだと信号がうまく送れないようでした。
まず、
sudo raspi-config
で「5 Interfacing Options」を選択し、SPIをenabledにしておきます。
また、ソフトウェアのビルドにsconsというツールが必要なので、これも
sudo apt-get install scons
でインストールしておきます。
sconsは初めて使いましたが、Software Constructerの略でmakeの代わりになるようです。
git clone https://github.com/jgarff/rpi_ws281x
でソフトウェアをダウンロードし、
scons
でビルドできます。
testというコマンドが作成されますので、
sudo ./test -g 10 -c
で起動してみます。
これでLEDが点灯すればOKです。
ちなみに、Pimoroniからもunicorn HATが出ていて、ソフトウェアも提供されていますが、このソフトウェアが使えるかどうか試してみたところ、LEDの配列が違っているようです。
Adafruit版は
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
と並んでいるのに対し、Pimoroni版は
8 7 6 5 4 3 2 1 9 10 11 12 13 14 15 16
というように一筆書きで並んでいました。
そこだけ修正すれば利用することができます。
unicorndというデーモン形式のソフトウェアがあるので、NeoPixelを出力デバイスとして使用する場合には便利かもしれません。
コメント
scons インストールコマンド は、api-get のところ apt-get が正しいかと思います〜
あっ、そうですね。修正しておきます。ありがとうございます!