フルカラーシリアルLED簡単に制御できるコントローラ開発
フルカラーシリアルLED(WS2812系)の表示をUARTのコマンドで制御できるコントローラを開発しました。
※最後に記述しましたが、実際はまだ開発途中ですけど・・・
※最後に記述しましたが、実際はまだ開発途中ですけど・・・
超小型のパッケージ(DIP8)にフルカラーシリアルLED制御するためのコマンドを多数実装しました。
有名な音声合成モジュールや、LCDモジュールと同じような感覚で、簡単にWS2812系のフルカラーシリアルLEDを制御し光の演出を作ることができます。
有名な音声合成モジュールや、LCDモジュールと同じような感覚で、簡単にWS2812系のフルカラーシリアルLEDを制御し光の演出を作ることができます。
使い方も簡単!ホストから8バイト固定長コマンドを、シリアル(UART)インタフェースを介して送るだけ。
コマンドを解釈して動きのある光の演出を行います。
コマンドを解釈して動きのある光の演出を行います。
■開発の背景
フルカラーLEDを使っていくつかの電子工作作品を作ってきましたが、1本の信号線だけでフルカラー表示できるこのLED(WS2812)は非常に便利です。しかし、信号線の周期が800kHzと低速のマイコンにはちょっと辛い速度なので、動きのあるLED表現を行うと他の仕事がおろそかになり不便に感じるがあります。そこで、低速なマイコンでも簡単に扱えるようなコントローラがあったらみんな幸せになると思い、このLED制御に特化したファームウェアを開発することにしました。このコントローラがLED制御してくれることで、親となるマイコンは、自分の作業に集中することができます。
フルカラーLEDを使っていくつかの電子工作作品を作ってきましたが、1本の信号線だけでフルカラー表示できるこのLED(WS2812)は非常に便利です。しかし、信号線の周期が800kHzと低速のマイコンにはちょっと辛い速度なので、動きのあるLED表現を行うと他の仕事がおろそかになり不便に感じるがあります。そこで、低速なマイコンでも簡単に扱えるようなコントローラがあったらみんな幸せになると思い、このLED制御に特化したファームウェアを開発することにしました。このコントローラがLED制御してくれることで、親となるマイコンは、自分の作業に集中することができます。
さらに、動きのあるLED表現やフルカラーの色を自分で考えるのは骨の折れる作業です。そんな作業を楽にしたいと考え専用のWindows用GUIアプリケーションも開発しました。このアプリで色の演出を作成することで思いのままのLED演出を考えることができます。
■特徴
・8バイト固定長のコマンドを送るだけのシンプルインタフェース
・UARTの速度は19200bps/57600bpsの2種類を選択可能
・実装に便利な8pin DIP(NXP LPC810利用)
・外付け部品無しでも利用可能
・LEDのシリアル接続数は最大32個
・LED演出中のステータス端子あり
・LED演出用のコマンドは5種類あり、組み合わせは無限大
(色指定/左右シフト動作/虹色動作/棒の伸長動作/シーソー表示(ナイトライダー風))
・制御用のコマンドは4種類あり、Waitやループ再生可能
(システム設定/Delay/ループ/スクリプト制御)
・コマンドをまとめて送っておき、トリガーで順番にコマンド再生可能
・トリガーは、端子変化もしくはコマンドで可能
・コマンドを作成するための専用Windowsアプリケーションも提供
・8バイト固定長のコマンドを送るだけのシンプルインタフェース
・UARTの速度は19200bps/57600bpsの2種類を選択可能
・実装に便利な8pin DIP(NXP LPC810利用)
・外付け部品無しでも利用可能
・LEDのシリアル接続数は最大32個
・LED演出中のステータス端子あり
・LED演出用のコマンドは5種類あり、組み合わせは無限大
(色指定/左右シフト動作/虹色動作/棒の伸長動作/シーソー表示(ナイトライダー風))
・制御用のコマンドは4種類あり、Waitやループ再生可能
(システム設定/Delay/ループ/スクリプト制御)
・コマンドをまとめて送っておき、トリガーで順番にコマンド再生可能
・トリガーは、端子変化もしくはコマンドで可能
・コマンドを作成するための専用Windowsアプリケーションも提供
※Arudino用のプログラムを自動生成
・制御できるWS2812系はスイッチサイエンスさんが扱っている製品だと以下が制御できるはずです。
# | 製品名 |
1 | フルカラーシリアルLEDテープ(1m) |
2 | フルカラーシリアルLEDテープ(17cm) |
3 | フルカラーシリアルLEDモジュール |
4 | NeoPixel Ring - 16連フルカラーシリアルLED |
5 | NeoPixel Ring - 12連フルカラーシリアルLED |
※全てを動作を保障する訳ではありません。
■製品仕様動作電圧 | 3.3V~3.6V |
ベースチップ | LPC810(ARM Cortex-M0+) |
通信方式 | UART 19200bps/57600bps |
LED通信方式 | WS2812/WS2812Bの2種類 |
LED制御可能数 | 1~32 |
入力コマンド | 9種(演出用5種+制御用4種)の8バイト固定長 |
出力コマンド | 2種(ACK:0x06、NAK:0x15)の1バイト固定長 |
動作クロック | 内蔵 |
■制御するマイコンは?
開発したコントローラは、フルカラーシリアルLED(以降シリアルLED)を制御するサブマイコンとしての位置づけになり、主となるメインマイコンが別途必要になります。メインマイコンになれる条件は、シリアル通信(UART)が19200bpsまたは57600bpsでできることです。Arduino系のマイコンを想定しています。コントローラで利用しているマイコンLPC810は、3.3Vで動作するマイコンですが、ポートは5Vトランスペアレントな耐圧端子であるため、5Vもしくは3.3Vのマイコンと直結して利用できます。
■シリアルLEDを利用する上での注意点
接続するシリアルLEDは、WS2812とWS2812Bを制御する(※)ことができます。データシートを確認すると、WS2812は6~7V駆動で、WS2812Bは3.5~5.3V駆動です。HIレベルのスレッショルドが0.7VDDなので、5Vそのままだとちょっと足りません。5V電源をダイオード一つで少し降下させて利用するのが良いと思います。推奨はしませんが、私の手持ちのシリアルLEDは3.3Vでも動作しています。
※コマンドで2種類のタイミングを選択できます。
接続するシリアルLEDは、WS2812とWS2812Bを制御する(※)ことができます。データシートを確認すると、WS2812は6~7V駆動で、WS2812Bは3.5~5.3V駆動です。HIレベルのスレッショルドが0.7VDDなので、5Vそのままだとちょっと足りません。5V電源をダイオード一つで少し降下させて利用するのが良いと思います。推奨はしませんが、私の手持ちのシリアルLEDは3.3Vでも動作しています。
※コマンドで2種類のタイミングを選択できます。
■簡単接続例
・19200bps固定で通信するのであれば、UARTだけ接続すればOK。
・19200bps固定で通信するのであれば、UARTだけ接続すればOK。
★LED接続の注意点
・シリアルフルカラーLEDの通信線HIのスレッショルドは0.7であり5Vの電圧だと
・シリアルフルカラーLEDの通信線HIのスレッショルドは0.7であり5Vの電圧だと
少し足りません。そこで、ダイオードで0.3V程度電圧を降下させることをお勧めします。
・利用しているLPC810は、3.3Vで動作しますが5Vトランスペアレントであるため直結が可能です。■パソコンとの接続例(動作確認含む)
・USBシリアル変換モジュールを利用する。
・リセットやステータスの確認も行えるように全機能確認可能。
・本構成の場合、先のWindowsソフトより制御し即座に演出確認可能
・USBシリアル変換モジュールを利用する。
・リセットやステータスの確認も行えるように全機能確認可能。
・本構成の場合、先のWindowsソフトより制御し即座に演出確認可能
■現在の状況と今後について
アウトプット | 状況 |
制御ファーム | 実装完了(3/15) |
Windowsソフト | 実装完了(3/15) |
Arduinoシールド | 基板設計中(3/15) |
ドキュメント | このブログだけ。(10%ぐらい?) |
動画 | 未 |
Windowsソフトは、近いうちに公開します。(シミュレーションで演出確認しかできませんけど。)
興味を持っていただけた方に触ってもらえると嬉しいです。
※今後、ドキュメント等を整備し配布を計画しています。ターゲットをどこにするか決めかねているのでどうしようかな?