あまりやろうとする人も居ない気もしますが、シリアルRGBフルカラーLEDの PL9823と、WS2812Bを両方使ったモノを作りたくなったので、基板データを作り始めました。
しかし、よくよく考えてみるとこの2つのLED、互換性があるとはどこにも書いてないようです。
(疑問) 君たち、同じバスで...動くの?
左が PL9823、 右が WS2812B
情報を漁る
WS2812Bの方はめちゃくちゃ普及してて、カラーLEDがたくさん並んだLEDテープライトとかは、だいたいこれなので、Arduinoとかでも簡単に制御できます。ライブラリとかも これ とかが使えます。もちろん私も使う気満々です。
一方で、砲弾型が使いたい!という理由で追加したPL9823の方は、というと、販売元の秋月電子のサイトを見ると、少し情報がわかりにくいです。 WS2811(内蔵しているIC) PDFデータシート というリンクがあるので内蔵ICは WS2811互換?に見えるのですが、このデータシートを見ると電圧が 12Vとあります。
同じページにある PL9823-F5 PDFデータシート を見ると、[Power supply DC4.5-6V]とありますので、WS2811とは明らかに仕様が違いそうです。3.7-5.3VのWS2812Bとも違うみたいです。
なんとなく、データ制御まわりは WS2811 互換? で、 電気特性は独自、ってことっぽい気がします。
さらに WS2812B の方も最近バージョンアップして仕様が変わったとの情報もあります。
私の家にストックしてある WS2812Bは5年以上前に買ったリール(1000個!)なので、明らかに新Ver.ではなさそうですが、秋月で買ったものではないので、秋月の旧Ver.とも違う可能性もありますが、おそらく旧Ver.だと思います(リールに詳細Ver.の情報はないので確認難しい....)
うん。わからん!
実験するしかなさそうだ。
情報だけ漁ってても、よくわかりません。
仕方ないので、重い腰をあげて実験開始です。
実験回路
下記のような回路で実験しました。
WS2812B 1コ、PL9823 1コ、計2個だけで実験です。
こういう時は 5Vの Arduino UNOとか使った方が明らかに楽ですねー。
面倒ですが、作ろうとしている基板のマイコンにXIAO RP2040を使いたかったので、そちらで実験してみました。
地味に、表面実装用のWS2812BにLEDの足を移植するハンダ付けと、レベルシフター回路部分をブレッドボードに刺せるようハンダ付けするのが面倒でしたが、それらが終わればあとはブレッドボードに雑に組めました。
本当に雑!
実験スケッチ
Arduino で簡単なスケッチを書いて XIAO RP2040に書き込みます。
#include <Adafruit_NeoPixel.h>
#define LED_PIN D7
Adafruit_NeoPixel pixels(2, LED_PIN);
void setup() {
}
int out = 0;
void loop() {
out ^= 1;
pixels.setPixelColor(out, pixels.Color(0, 0, 32));
pixels.show();
delay(1000);
pixels.setPixelColor(out, pixels.Color(0, 32, 0));
pixels.show();
delay(1000);
pixels.setPixelColor(out, pixels.Color(32, 0, 0));
pixels.show();
delay(1000);
pixels.clear();
pixels.show();
delay(1000);
}
結果
動きました!
が、ここで1点気づきが!
-
pixels.Color(R, G, B)
が、PL9823ではpixels.Color(G, R, B)
になってるようです。Rを指定するとGが光り、Gを指定するとRが光ります。
ソフトウエア側でなんとかなりそうなので、問題ないということで!(雑!)
データシートを確認
なんでこんなところ変えたのかなー?
まとめ
- PL9823とWS2812B(旧Ver.)はとりあえず同一バス上で動きました!
- PL9823とWS2812Bは、制御コマンドのRGB指定の並びが異なる
- 細かい互換性のチェックはできてないです。何か問題が発生するかもしれません。
というわけで、基板データの続きやります。
リファレンス(多謝!)
下記サイトを参考にさせていただきました。