紹介動画
特長
Cree MC-E Red/Green/Blue/Neutral White LED (各色1W)
Wakefield製 LEDヒートシンク Starboard
Cree MC-E LED用 Ledil 26°レンズ(±13°)
Diodes Inc. AL8805 1A定電流LEDドライバ 4個
Microchip PIC24FJ16GA002 16ビット32MHzマイクロコントローラ
115,200bps、8N1のUARTインターフェース。XBee(シリーズ1が望ましい)またはPAN1555 Bluetooth Breakoutボード用の間隔をあけた2個の10ピン2mmピッチのソケットを経由します。
Windows GUIインターフェースにより、色、強度、位置の制御や、カスタムパターン、シーケンスの作成
DMX-512インターフェース
機能の説明
ムービングRGB LEDは、1W x 4色LED(赤、緑、青、ニュートラルホワイト)、光学系、ヒートシンク、調整可能な4つの定電流コントローラ、2つのサーボモータ(パンとチルト)、マイクロコントローラ、3枚の基板、お好みの無線インターフェースを組み合わせ、コンパクトでパワフルなムービングRGBW光源を構成したものです。光源は、Windows GUI、DMX512、ジョイスティックリモート(詳細は近日公開予定)、またはお好みの無線シリアルインターフェースを介して制御することができます。ソケットは、DigiのXBee無線機、または同じランドパターンとピン配置を使用する無線機に対応しています。XBee(または同様の機器)への必要な接続は、+3.3V(1ピン)、グランド(10ピン)、UARTデータ出力(2ピン)のみです。
通信
Moving RGB LEDは、現在、位置と色の2種類のパケットを受け付けます。チルダ [ ~ ]文字は位置パケットを表し、アスタリスク[ * ]文字は色パケットを表します。チルダに続いて、システムは8ビットのパン値とそれに続く8ビットのチルト値を想定しています。アスタリスクの後に続くのは、赤、緑、青、白の順で8ビットの調光値です。コントローラは、いつでもどちらのパケットタイプを送信してもよく、パケットの連続したストリームも受け入れられます。受信機は、色[ * ]または動作[ ~ ]の状態に入るための簡単なステートマシンを実装し、他の文字が受信された場合、開始状態にリセットされます。また、データのパケットが破損したり不完全になったりすると、ステートマシンはリセットされます。
回路図
3枚の別々のプリント基板が存在するため、3つの回路図が作成されました。
左:
中央:
右:
プリント基板
プリント基板はOSH Park で制作しました。
機械構造
ムービングRGB LEDは上から順に、LED光学系、LED、LEDヒートシンク、スペーサ2つ、プリント基板3枚、サーボ2個、ジップタイ数本、大量のホットボンドで構成されます。プリント基板は、ヒートシンクとプリント基板の重量を2点で支えることができるように、上下逆「U」字型に構成されています。逆「U」の片側はチルトサーボ出力軸と機械的に接続され、反対側は出力軸と同心のブッシュを中心にスライドします。プリント基板は、10極の0.1インチ直角ヘッダピンを両基板にはんだ付けして直交に接続されています。 これらのヘッダピンは、サイド基板2枚とセンター基板の間に、10個の電気的接続と同時に機械的結合を提供しています。
ソフトウェア
組み込み
ムービングRGB LEDは、PIC24FJ16GA002によりローカルに制御されています。PIC24はPWM信号を生成して各LEDの輝度を調光(変調)し、各サーボを制御するためのPWM信号を生成します。LEDのPWMはハードウェアのPWM発生器によって動作し、サーボ信号はタイマ割り込みを介してソフトウェアで生成されます。通信ステートマシンは、UART受信割り込みで動作します。
main.c (7.7 KB)
Windows GUI
GUIは、Visual Basic 2010 Express(Microsoftのフリーソフト)で開発しました。
GUIのソースファイルをダウンロードし、Visual Basic内でビルドすることができます。現在のところ、コンパイルする前にソースでCOMポートを設定する必要があります。Digi-KeyのPAN1555ブレークアウトボードを使用する場合は、デバイスをペアリングし、仮想COMポートを接続してCOMポート番号を決定してください。
Imports Microsoft.VisualBasic
Imports System
Imports System.Timers
Imports System.IO.Ports
'Imports System.Threading
Public Module global_variables
Public timer1_toggle As Boolean = False
Public timer1_started As Boolean = False
Public BlueTooth As IO.Ports.SerialPort = My.Computer.Ports.OpenSerialPort("COM33", 115200, IO.Ports.Parity.None, 8, IO.Ports.StopBits.One)
End Module
Public Class Form1
'Dim FTDI As IO.Ports.SerialPort = My.Computer.Ports.OpenSerialPort("COM1", 115200, IO.Ports.Parity.None, 8, IO.Ports.StopBits.One)
Dim color_MouseDown As Boolean = False
Dim vector_MouseDown As Boolean = False
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Integer, ByVal x As Integer, ByVal y As Integer) As Integer
Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Integer) As Integer
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer)
Shared _timer As Timer
Shared _list As List(Of String) = New List(Of String)
Private Sub Start()