スマートブラインド:Arduinoとソーラー電源で実現する自動光制御
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| SparkFun Arduino Pro Mini 328 (5V/16MHz) | 1 | メインマイコン |
| Arduino UNO | 1 | Pro Mini書き込み用 |
| 温度センサ(LM35DZ等) | 1 | 室温監視用 |
| PN2907A PNPトランジスタ | 1 | サーボ電源制御用(ハイサイドスイッチ) |
| フォトレジスタ(LDR) | 1 | 照度検出用 |
| 抵抗 10kΩ | 1 | LDR分圧用 |
| 抵抗 1kΩ | 1 | トランジスタベース用 |
| ソーラーパネル(5V 1.5W) | 1 | 充電用 |
| DC-DCブースター(5V出力) | 1 | 電圧昇圧用 |
| リチウム電池充電モジュール | 1 | LiPo充電制御 |
| JSTコネクタセット | 1 | 着脱可能な接続用 |
| 単4電池ホルダ×4 | 1 | プロトタイピング用 |
| サーボモータ(Tower Pro MG996R等) | 1 | ブラインド駆動用 |
| 充電式3.6Vリチウム電池 | 1 | メイン電源 |
| サーボモータカップリング | 1 | ブラインド軸との接続用 |
| コンデンサ 100nF | 1 | 電源安定化用 |
| OSH Park製カスタムPCB | 1 | 基板実装用 |
| 各種ジャンパワイヤ | 1式 | 配線用 |
必要な工具
- はんだごて
- ドリル
- はんだ
- ニッパー
- ワイヤストリッパー
- マルチメーター
- ドリルドライバー(Dremel等)
- ユニバーサル基板/ブレッドボード
- 熱収縮チューブ
使用ソフトウェア
- Arduino IDE
プロジェクト概要
このプロジェクトは、筆者が以前作成した「自動ソーラー駆動横型ブラインド」を改良したものです。オリジナル版は約4ヶ月正常動作しましたが、いくつかの設計上の欠点が判明しました。
ブラインドの動作仕様
- 朝: 羽根を開く(85度回転)して採光
- 夕方: 羽根を閉じる(0度、下向き)してプライバシー確保
- 高温時: 羽根を上向き(165度)にして日射遮蔽(閾値:30℃≒86℉、任意調整可)
- 完全ワイヤレス: 外部配線・ボックス・デバイスなしで「妻受け入れテスト(WAF)」をクリア
- 持続可能: 電池交換頻度を最小限に抑制
- 低コスト: 材料費約50ドル(工具・時間除く)
設置環境と課題
対象窓は2階の玄関上、南南東向きです。冬は日中ずっと日が当たりソーラー充電に有利ですが、夏は正午過ぎには日陰になり充電不足に。また、元のソーラーパネル位置では朝方に影がかかる問題もありました。
発見された問題と解決策
| 問題 | 解決策 |
|---|---|
| 家が真南向きでないため季節による日照変化が大きい | ソーラーパネルの設置位置を最適化 |
| サーボモータがスリープ時でも13mA消費 | PNPトランジスタによるハイサイドスイッチで完全遮断 |
| 6Vソーラーパネルが充電モジュール(入力4.5〜5.5V)の過電圧保護を誤作動させる | 5V仕様のパネルに変更 |
| ログ/テレメトリ機能がなく故障診断が困難 | EEPROMログ機能を実装 |
| 診断・修理用に電源を着脱できない | バッテリーとソーラーパネル間にJSTコネクタを挿入 |
| センサ基準電圧がDC-DCブースター出力(変動あり)になっていた | Arduino Pro Miniのレギュレート済み5V(VCCピン)を基準に使用 |
製作手順
Step 1: 部品調達
主要部品の入手先と参考価格を記載しています。SparkFunは現地調達可能、Banggoodは安価だが配送に時間、Tayda Electronicsはまとめ買いで送料がお得です。
Step 2: 工具準備
上記工具一覧を揃えてください。
Step 3: ブレッドボードでプロトタイピング
- リチウム充電モジュールのバッテリー端子とソーラーパネル端子をそれぞれ接続(極性注意)
- ソーラーパネルのプラス端子からアナログA0へ配線(パネル電圧ログ用)
- バッテリーもDC-DCブースターに接続
- バッテリープラスからアナログA1へ配線(バッテリー電圧ログ用)
- ブースターの5V出力をArduino RAWピンへ
- ブースターのGNDを共通グラウンドとして使用
- Arduino VCCピン(レギュレート済み5V)を全センサの基準電源に使用
- サーボ電源はブースター出力からPNPトランジスタ経由で供給
- LDRと10kΩ抵抗で分圧回路を作り、中点をアナログA3へ(照度検出)
- LM35DZ:VCC→5V、GND→GND、出力→アナログA2(温度検出)
- PN2907A:エミッタ→ブースター5V出力、ベース→1kΩ抵抗経由でD11、コレクタ→サーボ電源線
- サーボGND→共通GND、信号線→D10(PWM)
重要な発見: サーボを直結するとアイドル時に14mA流れ続けます。NPNトランジスタでのローサイドスイッチでは解決せず、PNPトランジスタによるハイサイドスイッチでようやく待機電流をほぼゼロにできました。
Step 4: プログラミング
Arduino UNOからATmega328Pチップを取り外し、以下のように接続してPro Miniへ書き込みます。
- UNO 5V → Pro Mini VCC
- UNO GND → Pro Mini GND
- UNO TX → Pro Mini TX0
- UNO RX → Pro Mini RXI
- UNO RESET → Pro Mini RST
Arduino IDEで「Arduino Pro or Pro Mini」を選択すれば書き込み可能です。ブラインド設置後も再プログラミングできます。
使用スケッチ:GitHubリポジトリ および EEPROMログライブラリ:EEPROMLog
Step 5: 基板実装と組み立て
- JSTコネクタに単線をはんだ付けして延長(デフォルトは短すぎる)
- ソーラーパネルにも約60cmの延長線を半田付けし、窓の最適位置に配置可能にする
- PCBをブラインドのトップレール内に収まるサイズにカット
- 配線は必要最小長にカットし、コーナーで折り曲げて基板穴に通す
- サーボコネクタの高さを考慮し、干渉しないようレイアウト
- DC-DCブースターの電源LEDパターンをカットして約1mA節約
Step 6: 最終組み立てとラストプログラミング
- プロトタイピング中はコメントアウトしていたEEPROMログ機能を有効化
- Pro MiniのEEPROMは1024バイト。1エントリ24バイト(データ22+同期2)で約42エントリ、1日2動作なら約3週間分記録可能
- 最終待機電流測定:約1.5mA。900mAhバッテリーで理論上600時間(実用では充電ありで無限動作)
Step 7: ブラインドへの取り付け
- 既存のコード巻き取り機構(コルクスクリュー式)を取り外し(サーボの負荷になるため)
- LDR用の小穴をブラインド外側面にドリルで開ける
- Dremel等でサーボモータがぴったり収まる四角穴を切り出す(外側面推奨)
- 切り口をテープ等で保護
- PCBをレール内に挿入し、LDRが穴から出るようにする
- サーボを軸にカップリングで固定。起動時の90度位置合わせ待機(10秒)を利用して手動で羽根を90度に合わせてから固定
- ブラインドを窓に取り付け
- ソーラーパネルを窓の中央付近、上部1/3の位置にテープ固定。配線は桟に沿わせて目立たなくする
- ソーラーパネルとバッテリーをコネクタで接続し、速やかにブラインドをセット
- 装飾トリムを戻す
Step 8: 完成・動作確認
数ヶ月の運用で完全に期待通り動作しています。面白い現象として、2階の廊下灯と1階玄関灯が両方点いていると照度センサが「まだ明るい」と判断し、夜になってもブラインドが開いたままになるため、来客時にデモしやすいです。真夏の猛暑日には室温が快適なうちに高温判定でブラインドが閉じ、遮熱効果を発揮しました。
回路図・設計ファイル
- Fritzingファイル:GitHub
製造プロセス
- スマートバーテンダー:Raspberry Pi駆動の自作カクテルステーション
- スマートブラインド:Arduinoとソーラー電源で実現する自動光制御
- Arduinoでシンプルな障害物センサーを自作 – IR LEDとフォトダイオード入門
- スマート自動靴紐シューズ:発電機能内蔵で実用性抜群
- IoT対応ソーラートラッカー:Arduinoによるスマートエネルギー管理
- スマートなArduino制御ロボットアームの製作:簡単DIYチュートリアル
- 学校向けスマート体温監視システム: 正確、リアルタイム、安全
- スマート手話グローブ:ジェスチャーをテキスト/音声に変換
- Arduinoで作る多チャネル・スマートバッテリー充電器:自動切替・電圧表示・近接センサー付き
- Arduino用絶縁アナログ入力回路の設計:LM331 V-F変換+フォトカプラでノイズ耐性を確保
- Arduino UNOで作る信頼性の高いスマートエネルギーモニター – ステップバイステップガイド