このシリーズ記事もいよいよ終盤になりました。今回からNode-REDでマイコン内蔵フルカラーLEDの制御をします。
なんでまたフルカラーLED?
今回の記事からマイコン内蔵フルカラーLEDの回路を製作します。
って、このシリーズの最初の方でフルカラーLEDの回路を作りましたよね。なんでまた?という疑問も出てくるかと思いますので、最初にこの回路を製作する背景を説明したいと思います。
今回使用するフルカラーLEDは、製品名に「マイコン内蔵」と付いています。
この「マイコン内蔵フルカラーLED」には次の特徴があります。
- 1本の信号線のみで複数のLEDをそれぞれ独立に制御できる
- 世の中の「マイコン内蔵フルカラーLED」は(ほぼ)すべて同じ方法で制御できる
言葉だけではわかりづらいと思いますので、少し詳しく説明します。
1本の信号線で複数のLEDを個別に制御できる
最初に製作したフルカラーLEDの回路は、以下のように3本のGPIOピンを使用して3本の信号線で制御しました。
これはこれでいいとして、フルカラーLEDを追加したい場合はちょっと困ったことが出てきます。
ラズベリーパイのGPIOピンは限られているので、当然ながら追加できるフルカラーLEDには上限があります。さらに配線の数も多くなり回路製作も大変になってしまいます。何かのイルミネーションを作りたい場合、LEDが5個とか10個というのはちょっと寂しいですよね。
一方で、マイコン内蔵フルカラーLEDの場合、以下のように1本の信号線で制御できます。この信号線は以下のように数珠つなぎできるようになっています。
制御信号は1本ですが、以下のように特定の位置のLEDを、指定した色と明るさで光らせることができます。ちょっと不思議ですよね。
このマイコン内蔵フルカラーLEDが使えるようになると、何かのイルミネーションを作りたい場合など、いろいろと使える場面があると思います。
世の中の「マイコン内蔵フルカラーLED」は(ほぼ)すべて同じ方法で制御できる
フルカラーLEDにマイコンが内蔵されているタイプの製品は、非常にたくさんの種類があります。
「マイコン内蔵フルカラーLED」というと一般製品名のような気がしますが、実は世の中のほとんどが同じタイプの製品なんです。つまり、どの製品も同じ方法で制御ができるようになっています。
ここで部品名について少し深掘りしておきます。
このような制御を実現してるのは「WS2811」というフルカラーLED専用のコントローラ(制御モジュール)です。このシリーズ記事で使用するマイコン内蔵フルカラーLEDは、以下のように「WS2811」コントローラと、3色(赤・緑・青)のLEDが一つのパッケージに入っています。
また「WS2812B」という、WS2811相当のコントローラと3色のLEDが5mm四方のパッケージにまとめられている製品もあります。
さらに、アメリカのAdafruit Industries社が、「WS2812B」をあらかじめいろいろな形状にまとめた「NeoPixel」というシリーズ製品を販売しています。
Adafruit Industries社 NeoPixelシリーズ製品
https://www.adafruit.com/category/168(別ウィンドウで開きます)
WS2812Bを使用した製品には、テープ型のものもあります。
この製品は、テープ状ですので曲げることができて、さらに必要な個数分切断して使用できます。1リール買っておくと必要な分ハサミで切って使えるので便利です。
Amazonや楽天、Yahooショッピングなどで、「ws2812b」や「neopixel」で検索すると非常に多くの製品が出てきます。ご興味があればちょっと調べてみてください。
ということで、この「マイコン内蔵フルカラーLED」の回路構成と制御方法を理解しておくと、用途に応じた「WS2812B」や「NeoPixel」製品を使えるようになりますので、ちょっと無理矢理という感じですがシリーズ記事に採用してみました。
それではさっそく始めていきましょう!
一般的なWS2811/WS2812Bの回路
WS2811/WS2812B使った製品は、以下のように4個のピン(端子)があります。
この4ピンは以下のような役割になっています。ピン名は製品によって若干差がありますが、ほとんどの製品が以下のピン名で表記されています。
ピン名 | 使い方 |
---|---|
VDD | 電源のプラス側に接続します。必要な電源電圧は製品によって異なります。 |
GND VSS |
電源のマイナス側に接続します。 |
DIN DI |
制御信号を入力するピンです。「Data In」の略です。 |
DOUT DO |
制御信号を出力するピンです。「Data Out」の略です。 数珠つなぎにする場合、このピンを次のLEDの「DINまたはDI」ピンに接続します。 |
複数のLEDを接続する場合、以下のように接続します。
各LEDのVDDとGNDを電源に接続して、制御信号線を数珠つなぎになるように接続するだけでOKです。
なお、メーカーから回路が指定されている場合もありますので、そのような場合はメーカー推奨回路を使用するようにしてください。
WS2811/WS2812Bの仕組み
回路を組み立てる前に、WS2811/WS2812Bがどのように動作するのか確認しておきます。
例として、ラズベリーパイのGPIOピンにWS2811/WS2812Bを3個接続した場合を例に説明します。
上のように3個接続した場合、ラズベリーパイのGPIOピンから、3個分の発光色のデータを送ります。1個分の発光色データはRGBそれぞれ1バイトの3バイトです。3個分の発光色データは9バイトになります。
1個目のLEDは、最初のデータ(データ1)を自分用に受け取り、そのデータの色で発光します。残りのデータは次のLEDに渡します。
2個目のLEDは同様に、自分にとって最初のデータ(データ2)を自分用に受け取り、そのデータの色で発光します。残りのデータは次のLEDに渡します。
3個目のLEDも同様に、自分にとって最初のデータ(データ3)を自分用に受け取り、そのデータの色で発光します。ただ、残りのデータはありませんので、これで処理は終わりになります。
なお、3個のLEDは次のデータを受け取るまで、受け取ったデータを保持して発光を続けます。
このように、ラズベリーパイのGPIOピンからLEDの個数分の発光色データを送れば、それぞれのLEDを好きな色で発光させることができます。
なお、3個目だけ変えたい場合でも、3個分のデータを送る必要があります。その場合は、1個目と2個目のデータは前回送ったデータと同じにする必要があります。
マイコン内蔵フルカラーLED回路
それでは回路を製作していきましょう。
今回はマイコン内蔵フルカラーLEDを2個接続する回路を作成します。せっかく数珠つなぎで何個も接続できるのに2個はちょっと寂しい気もしますが…
とはいっても、制御方法は3個以上でも今回の制御と同じ要領になりますので、今回の2個の回路で制御のポイントを理解するようにしてみてください。
実は、今回使用する「PL9823」はメーカーから回路の指定があるのですが、その目的がよくわからなかったためいろいろ調べたところ、すでに調べられている方がいました。結果、メーカーの指定回路にある部品(抵抗)は必要ないようです。
http://play-arduino.seesaa.net/article/439256124.html
そこで、今回製作する回路はこの情報を参考にさせていただいて、最初に説明した一般的な接続にしました。
なお、今回使用するマイコン内蔵フルカラーLEDのピンは以下のようになっています。
なお、この制御に使用できるラズベリーパイのGPIOピンは限られています。今回は物理ピン番号12番を使用することにしました。また、このLEDの電源はラズベリーパイGPIOピンの5Vピンを使用することにします。
ラズベリーパイのGPIOピンとの接続は以下のようになります。
回路製作
ブレッドボードは残りのスペースはそれほどありませんので、以下のように配置することにしました。
動作確認
動作確認は、次回の記事で実際にフローを作成して確認します。
なお今回使用する製品は、電源を入れるとデフォルトで青色に光るようになっています。そのため、電源が問題なく接続されているか確認できます。
動作確認というわけでもありませんが、ラズベリーパイの電源を入れるとLEDが青色に光はずですので、問題なく点灯するか確認してみてください。
更新履歴
日付 | 内容 |
---|---|
2022.8.23 | 新規投稿 |