Taylor Roorda(記)、最終校正2018年1月4日
はじめに
インターネットとモノの時代、ありふれたプロジェクトでも、インターネット接続を加えることで面白くなるものがたくさんあります。LED照明もその1つです。例えば、Philips Hueのような既製の商用ソリューションがいろいろとあります。これらのほとんどは、Zigbee無線プロトコルを使用しており、デバイスとWiFiルータの間に追加のゲートウェイが必要です。このプロジェクトでは、Particle Photonを使用して、純粋にWiFiベースのシステムを実装しています。Photonは家庭のWiFiネットワークに直接接続できるため、ゲートウェイが不要になります。Blynkを使用して、AndroidおよびiOSデバイスで使用できるカスタマイズされたリモート制御機器を作成しました。
本プロジェクトの目標は次のとおりです。
- スマートフォンからWiFiで制御できるRGB LEDコントローラを作成
- ブリージング、カラーチェンジなど、複数のエフェクトモードを利用可能
- 近くの音楽ソースに合わせてLEDの点滅を同期可能
必要なリソース
- Particle Dev IDE - クラウド版のParticle Buildも使えますが、デスクトップ版で作業する方が楽でした。
- Blynk App
- LED-Controller-Source.zip - KiCad回路図/レイアウト、ガーバーファイル、ソースコード、エンクロージャSTLファイルが含まれています。
部品表
数量 | 参照名 | Digi-Key品番 | 値 |
---|---|---|---|
6 | C1, C2, C5, C6, C7, C8 | 445-173583-1-ND | 1u |
5 | C3, C9, C10, C11, C12 | 490-8809-ND | 0.1u |
1 | C4 | 478-1883-ND | 0.33u |
1 | J1 | CP-050AH-ND | Barrel Jack |
1 | J2 | S5479-ND | 4 Pos R/A Conn |
1 | MK1 | 102-1721-ND | Microphone |
3 | Q1, Q2, Q3 | FDP8880FS-ND | NMOS |
1 | R1 | 2.2KH-ND | 2.2k |
3 | R2, R3, R4 | 10KH-ND | 10k |
1 | R5 | 1.0MH-ND | 1M |
2 | R6, R7 | 1KH-ND | 1k |
1 | R8 | 680QBK-ND | 680 |
1 | RV1 | PDB12-H4301-105BF-ND | 1M |
1 | U1 | 296-1857-5-ND | TLC555 |
1 | U2 | MCP601-I/P-ND | MCP601P |
1 | U3 | 1878-1000-ND | Photon Module |
1 | U4 | MC78M05CTGOS-ND | MC78M05CDT |
3 | U5, U6, U7 | MCP1407-E/AT-ND | MCP1407 |
1 | 1647-1035-2-ND | RGB LED reel | |
1 | 102-3665-ND | 12V 60W Power Supply | |
2 | S6100-ND | 12 Pos 0.1" Female Header | |
4 | 1772-1337-ND | #4-40 Hex Standoff 3/16" | |
4 | 36-9901-ND | Phillips #4-40 Machine Screw |
表1:部品表
ハードウェア
図1に示すように、回路は3つの主要部分と4つの補完部分から構成されています。各部の概要は以下の通りです。
- 上の列は電源回路です。
- バレルジャックから12Vが供給され、リニアレギュレータU4を経由してLEDコネクタに供給されます。
- 次にマイクロフォンのセクションです。
- マイクロフォンMK1は、PhotonがLEDの同期に使用するBGMを拾うために使用されます。
- 抵抗R2とR3は、オーディオ信号に約1.65VのDCバイアスを加えます。
- R6とC12は、カットオフ周波数2400Hzのローパスフィルタを構成します。Photonは音楽の「パルス」に合わせてLEDを同期させるので、低周波(100 Hz~1 kHz)のみ必要とします。
- オペアンプU2はR5とポテンショメータRV1により決まるゲインで信号を増幅します。基本ゲインは1000に設定されていますが、ポテンショメータを最大値に設定することにより2000まで上げることができます。必要に応じてR5の値を調整し、感度を上げ下げしてください。
- オペアンプのフィードバックループに接続されたコンデンサC2により、信号のAC成分のみが増幅され、DC成分は影響を受けません。
- 左下の回路では、555タイマが非安定モードで4.8kHzの矩形波を発生し、PhotonのADコンバータのサンプリングレートを決定するのに使われています。
- Photonは、増幅されたオーディオ信号と555タイマからのトリガを受け取り、サンプリングレートを設定します。また、LEDのPWM信号も生成します。
- PhotonからのPWM信号は、MOSFETドライバU5、U6、U7に送られます。これらのドライバにより、出力MOSFET(Q1、Q2、Q3)のゲートが高電圧で駆動され、MOSFETのRDSonが減少します。また、LEDの12V信号とPhotonの間に追加の絶縁バリアも形成されます。
図1:回路図
下の図2にプリント基板のレイアウトを示します。手作業での組み立てを容易にするため、すべての部品はスルーホールになっていますが、面実装部品を使用すればサイズを大幅に縮小することができます。
図2:プリント基板のレイアウト
Blynkのセットアップ
このプロジェクトのBlynkリモートは7つのウィジェットを使用し、無料ユーザーが利用できるすべてのクレジットを必要とします。そのレイアウトを図3に示します。
図3: Blynkのリモートアプリ
ウィジェットの設定は以下のとおりです。データ使用量を最小限にするために、すべてのウィジェットでSend on releaseが有効になっています。各設定には、独自の仮想ピンが割り当てられ、設定が変更されると、Photonのユーザー定義関数が呼び出されます。
-
色変調メニュー(V0)
- 一定(コンスタント)
- レインボー - 色のスペクトルを一定のサイクルで循環
-
輝度変調メニュー(V1)
- 一定(コンスタント)
- 呼吸(ブリージング)- フェードイン、フェードアウト
- オーディオ同期 - 音楽のビートに合わせたパルス
-
輝度スライダ(V2)
- 全体の明るさの最大値を設定
- 範囲:→ 100%
- デフォルト:25%
-
輝度速度スライダ(V3)
- ブリージングモードまたはオーディオモードで輝度が変化する速度を設定
- 範囲:80 → 5 ms
- デフォルト:30 ms
-
音声閾値スライダ(V4)
- オーディオモードでLEDを点灯させるのに必要なレベルを調整
- 範囲:0 → 2048
- デフォルト:1500
-
色速度スライダ(V5)
- レインボーモードで色が変化する速度を設定
- 範囲:80 → 5 ms
- デフォルト:30 ms
-
zeRGBa色選択(V6)
- 出力を1つの仮想ピンに統合
- 範囲:0 →RGB各色に対し0 → 255
ソフトウェア
Photonのアプリケーションコードと、フィルタ係数のヘッダファイルの生成に使用したOctave/Matlabスクリプトの全容は以下の通りです。要約すると次のようになります。
- アプリケーションコードは、SYSTEM_THREAD(ENABLED)を使用してバックグラウンドのParticleタスクと並行して実行されます。これにより、setup()はブロックされることなく、WiFi接続を必要とする時点まで実行することができます。
- RGBコントローラプログラムのメインループは、単に Blynk.run() を呼び出してアプリからの更新を取得するだけです。それ以外の処理は、輝度タイマとカラータイマのコールバック関数で行います。
- BLYNK_WRITE()マクロは、図3に示すように、Blynkアプリのウィジェットから変更を検出したときのアクションを定義しています。
- update_leds()は、タイマコールバック関数のいずれかが呼ばれるたびに、PWMデューティサイクルを変更します。
- get_sample()は、約4800Hzのレートで呼び出されます。オーディオモードが選択されている場合、この関数はADCを読み込み、下記のOctaveスクリプトで作成した100次FIRバンドパスフィルタで入力をフィルタリングします。
- 計算は、20ビットの小数精度の固定小数点演算で行われます。乗算の実行にはfixed_mult()Cが使用され、正しい結果を得るために必要な追加の型キャストとシフトが組み込まれています。
rgb_conrtoller.ino.txt (10.2 KB)
rbg_fir.m (1.2 KB)
coeffs.h (818 Bytes)
エンクロージャ
PCBを収納するために、シンプルな箱を3Dプリンティングで作成しました。基板とスタンドオフの取り付け穴は、M3または#4-40のネジに対応した緩いサイズになっています。STLファイルは以下からダウンロードできます。
LED-Box-STL.zip (50.7 KB)
むすび
このプロジェクトでは、比較的シンプルなワイヤレスLED照明システムをセットアップすることができます。LEDはWiFi経由でBlynkアプリを使用して制御します。色や明るさはアプリから調整できるほか、一部の特殊なモードも搭載しています。また、マイクを内蔵しており、音声の同期効果も得られます。これらの機能は、WiFi制御のLEDシステムを自作しようと考えている人にとって、確かな基盤となるでしょう。