前回の続きで、Arduinoからの制御に成功したので記事にすることにした。
基板はこんなかんじ。
材料
ユニバーサル基盤
これはサンハヤト社から出ている、ハサミでカットできる薄型の基盤。DCジャックと12v ACアダプター
元の製品から拝借。
DC-DC 降圧コンバーター
最初はArduinoのから取った5Vを昇圧しようと考えて昇圧コンバーターを買ったんだけど、電力不足のため元のACアダプターから取った12Vを使うことにした。
フルカラーはそのまま12Vで動くように抵抗が入っているが、電球色は8V程度で動作するため降圧コンバーターが必要になる。
抵抗器
1kΩの金属皮膜抵抗
電子ワイヤー
適宜
回路図(もどき)
本当は厳密にルールが決まっているんだけろうけど、知識がないので記号だけ拝借。
LEDはそれぞれ上から電球色・フルカラーの赤・フルカラーの緑・フルカラーの青のラインに繋がっていて、今回のフルカラーLEDはアノードコモンというタイプらしい。アノード側(+)が共通(Common)でカソード側(-)が分岐しているタイプである。
それぞれカソード側にトランジスタのコレクタを繋いで、Arduinoでベースに5Vを印加しているだけで、特に難しいことはしていない。
PWMに対応したピンを使えばanalogWrite命令でPWM調光もできるのである程度色を制御できる。
ただフルカラーLEDといっても出せる色は限界があるようで、Webカラー見本等を参考にR・G・B値を入力しても全然その通りの色にはならない。
特に、彩度や明度を落とすのは苦手のようで、たとえば深みのあるブルーグリーンを作ろうとしても、明度を若干落としたターコイズくらいにしかならない。
少し残念ではあるけど、それでも元の製品よりは細かく色を調整できるようになったので嬉しい。
Arduinoコード
割と適当なサンプル。暗めのブルーグリーンを作ろうとしてターコイズになったコード。
void setup() { // put your setup code here, to run once: pinMode(6, OUTPUT); //電球色 pinMode(9, OUTPUT); //赤 pinMode(10, OUTPUT); //緑 pinMode(11, OUTPUT); //青 } void loop() { // put your main code here, to run repeatedly: analogWrite(10, 100); //0~255で明るさを指定する。 analogWrite(11, 15); //0~255で明るさを指定する。 }
今後の展開
特に記事にする予定はないけど、いつも通り常時稼働させているラズパイからシリアル通信経由で動かそうと思っている。
そうすれば時刻やその他の環境によって色や明るさを変えたりといった制御がPythonスクリプトで簡単に実現できる。
しかしそろそろラズパイ1台になんでも集中させすぎて怖くもなってきた。
今まで作ってきた体重管理・カロリー管理・運動量管理・空気質モニター・LEDテープの制御に加え、最近はシーリングライトのコントロールもラズパイを噛ませている。更に今回のベッドサイドランプの制御もラズパイでやるので、まさに単一障害点である。もう少し分散化させた方がよさそうだなと思う今日この頃である。
以上