NeoPixelをLチカする
とりあえずNeoPixelとは何者か
NeoPixelってなんですか
Adafruitが販売している、シリアル通信でRGB値が制御できるLEDのこと。ここではトップ画像にあるような、マイコンを内蔵したRGB LEDチップについて述べる。厳密にはNeoPixelとはこれらマイコン付RGB LEDを総称したadafruitの商品シリーズ名である。
必要な機材は以下のURLを参考に
- 制御ソフト
- ArtNet - DMX変換器
- DMX-SPI変換器
- 電源
- LED
- ArtNet - DMX変換器
- DMX - SPI変換器
これらは会社に転がっている https://ja.aliexpress.com/item/32998514224.html を利用する
- 電源
は、同じく会社に転がっている スイッチング電源 を利用する
- LED
こちらも会社に転がっている60LEDs/Mの5メートル(300発)のストリップを利用する
なぜスイッチング電源が必要か??
大量のLEDストリップを扱う場合、流れる電流も増えていくので、電源アダプタでは追いつかなくなり、スイッチング電源ユニットを使用する必要が出てくる場合があります。
電源の基本技術を知るために好適なのは、商用交流を直流に変換するACアダプタです。かつてACアダプタといえば、ズシリと重いというのが通例でしたが、現在では携帯電話の充電器のように、ずいぶん軽くコンパクトなものに代わっています。これは2000年頃から従来のリニア方式にかわり、スイッチング方式のものが主流になってきたからです。
流し読みした感じ、リニア方式(普通のACアダプタ)だと大量のLEDを点灯させる場合には大きすぎるということか?
まずは、led controllerのテストモードでLチカ
LEDの点灯が確認できたので、Art-Net経由で操作する。
Art-Netとは?
◎Artistic Licence社が開発した、照明イーサネットプロトコル
◎DMX512をイーサネットで使用できるようにしたプロトコルで、ロイヤリティフリー のため多くのメーカーで採用されている
DMX(DMX512)って何?
DMX(DMX512)は、照明器具の調光や調色などの制御を行うための通信規格です。1本のケーブルで、512チャネルのデジタル信号を送受信することができ、1チャネルあたり256段階の制御が行えます。DMX512、または単にDMXと呼ばれます。ちなみに、DMX512は「Digital Multiplex with 512 pieces of Information」の略だそうです。
まとめると
- DMXは0-255階調の情報を512チャンネル分送受信できる
- DMXをイーサネットで利用可能にしたプロトコルがArt-Net
- DMX 1系統を16個にまとめたのがArt-NetのUniverse
- Universeを16個にまとめたのがArt-NetのSubNet
- SubNetを128個にまとめたのがArt-NetのNet
- Net:SubNet:Universeの表記でUniverse番号を表す
- 最大32,768系統の送受信が可能
手っ取り早くLチカする制御ソフトにはtouch designerが良い
- LFO CHOPで
Type
をGaussian
にして0-255を周期的に送信 - DMX Out CHOPにつないで、
Interface
Art-Net
Network
タブNetwork Address
をled controllerのIPアドレスにすると、1つめのLEDが赤く点滅する。
Network Address
を 255.255.255.255
にして、ArtNetView なんかでデータを可視化してもわかりやすい。
LEDストリップはシリアルにデータを受信するので、1Universeが最大で制御できる発光は512/3 = 170.666で、1個目から順番に170個目と、171個目のRとGのみのはず。だが、次のUniverseで0チャンネル(R)に値を送ると、ちゃんと171個目のLEDのRが点滅する。ここの端数の切り捨てはどこで制御してるのか?
いや、勘違い。
512はDMXのチャンネル数なのでx16を1Universeで出せるはず。
またまた勘違い。1Universeで送信できるチャンネルはDMXと同じ。0-15Universeまでを単純に1SubNetと呼ぶだけ。なので1Universeで制御できる発光は512/3(RGB) = 170LEDsで正しい。
1Universeが最大で制御できる発光は512/3 = 170.666で、1個目から順番に170個目と、171個目のRとGのみのはず。だが、次のUniverseで0チャンネル(R)に値を送ると、ちゃんと171個目のLEDのRが点滅する。ここの端数の切り捨てはどこで制御してるのか?
これは完全にコントローラーの設定次第になる。LEDの玉単位で、1unvあたり何玉光らせるか設定するものもあるし、1unvあたりのチャンネル数を固定できるものもある。チャンネル数で固定する場合、上限は3の倍数(170x3 = 510とか)にしておくとわかりやすい。