Raspberry PiのGPIO操作(3)NeoPixelを光らせる

rpi-8x8-neopixel.jpg

以前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を出力デバイスとして使用する場合には便利かもしれません。

コメント

  1. @asuki_craft より:

    scons インストールコマンド は、api-get のところ apt-get が正しいかと思います〜

  2. boochow より:

    あっ、そうですね。修正しておきます。ありがとうございます!