[ラズパイ] WS2812B LEDテープ(NeoPixel RGB)を使ってみる

さて、クリスマスも近づき、窓に演出するイルミネーションをLEDテープを探していたら、NeoPixelなるものを発見。これは、1つのラインで大量のフルカラーLEDを制御できる代物らしく、リングLED、テープLED、パネルLEDなど色々なものが発売されている

けっこうメジャーな製品らしい。NeoPixelはRaspberry Piでも制御できるようだ。ライブラリを探すと

For NeoPixels to work on Raspberry Pi, you must run the code as root! Root access is required to access the RPi peripherals.

このライブラリの注意は上にあるように、RPiにアクセスするのでsudoで実行させないと動かないということ。ラズパイとの接続は以下のサイトを参考にしたけど、3.3Vだと、どう考えても電流オーバーで5Vにつなげた。5Vすら電流が足りるのか、ちょっと怪しい、後で実測してみようと思う。

GPIO18に信号ラインをつなぐ。10、12、18、21のGPIOのいずれかじゃなければダメとのこと(多分ハードウエアPWM?)。ロジックレベルは3.3Vなので5Vに変換するために、いつも通りロジックレベルコンバーターを経由させる。ちなみに5VのままGPIOに接続する(ほんとはダメ!)と一応は点灯はするが、端のLEDの挙動があきらかにおかしかった。ロジックレベルコンバーターを挟むと、その症状は消えたためレベル変換はちゃんとしたほうがいい。ロジックレベルコンバーターは下の記事にも出で来るので参考にしてほしい。

サンプルコードをちょこっといじって、開始時間と終了時間指定でレインボー点灯させるようにした。それ以外は消灯させている。

実際、ラズパイzeroでこのコードを動かしてみたけど、どうもマシンのパワーによるところが大きく、ちょっと負荷をかけると動きが鈍る。

結構明るいけど、電流量は大丈夫なのかちょっと不安。一応計測してみた。

ちょっとしたパリピ感が・・・w

とりあえず、900mA程度かなぁと思う。ちなみに brightness=0.5となってるけど、これを明るくすると当然、電流量も増える。ちなみに実際1200mAで10分ぐらいやってみたが、特にシャットダウンするとかおかしくなるような感じはなかった。ラズパイの5Vpinのトータル電流は500mAだとか750mAだとか色々なことを書いてあるサイトが多くよくわからない。5Vpinは入力電源に直結されてるみたいなのでACアダプタやUSBアダプタの出力が十分であれば大丈夫なのかな。でもやっぱり、別電源を用意してやったほうがイイのかもしれない。

人柱的な実験で1A出力USBとpiZeroとLEDテープでしばらく点灯させてみたけど、とくに問題なく動いてる様子。でも1AのUSBアダプタは点灯すると少し熱を持つ(40-50度くらい?)ので、それなりに電流量はあると思う。

後日、レインボーの感じがどうもノロいので早くするために、rainbow_cycle関数を下のコードに改変。

5個飛ばしでforループを早く回すことでレインボーを早くさせてみた。でも管理者権限で実行しないとダメなのでいちいちコンソールで実行するのめんどくさい・・・