- 常に明るさ3段階で点灯する常夜灯を1段階まで下げるため、電源投入時にボタンを3回の代わりに押してくれるATtiny85ベースのPCBを製作
- コンデンサ降圧電源は数mAしか供給できないため、ESP8266やRaspberry Pi Zeroではなく、1MHzで1mA未満しか消費せずスリープ時にはμAレベルまで下がるATtiny85を選択
- 8.3Vを3.3Vに下げるHT7333と、ボタンをGNDへ短絡する2N3904を中心に回路を構成し、EasyEDAとJLCPCBで設計・製作
- Raspberry Pi 3のGPIOとavrdudeでチップをプログラムし、Home Assistantが常夜灯を点けると少し待ってからボタンを3回押し、最小輝度へ自動で切り替え
- 設計ファイルとCコードはMITライセンスで公開したが、内部電圧が4〜12Vで、ボタン入力がGNDへ短絡される機器にしか適用できず、トランスレスの商用電源機器では特に注意が必要
毎日繰り返していた3回のボタン操作
- Home Assistantは、スマートフォンが睡眠集中モードに入るとZigbee壁面プラグ経由で常夜灯を点けるよう設定されている
- 低価格の常夜灯には自動点灯の有無を決めるスイッチと明るさ段階を変えるボタンがあるが、電源を入れるたびに明るさ3段階から始まる
- ボタンを1回押すと4段階、もう1回で5段階、3回目で1段階になる
- 望みの最小輝度にするには毎晩ボタンを3回押す必要があった
- 内部を開けてみたがチップ名は見えず、調整用の可変抵抗もなかった
- ボタンを約10秒押し続けるとEEPROMのデフォルト輝度を変えられるというオンライン情報も、この製品では動作しなかった
限られた電力に合わせたマイコン
- ボタン入力を自動で作るマイクロコントローラが最適な解決策だった
- この常夜灯はトランスの代わりにコンデンサで商用電圧を下げているため、電源部から供給できるのは数mAだけ
- Wemos D1 MiniのESP8266は起動して無線機能を有効にする際に数百mAを必要とする
- Raspberry Pi ZeroはOSを起動しなければならない完全なLinuxコンピュータである
- どちらの機器でも別電源、または起動時をしのぐ大きな蓄電コンデンサと追加回路が必要だった
- 最終的に選んだATtiny85はクラシックなArduinoと同系統のAVR系で、Arduino IDEでコードを書ける
- 1MHz動作時の消費電流は1mA未満
- 省電力状態では水晶時計のようなμAレベルまで下がる
- 常夜灯のLEDはATtiny85より数千倍多くの電力を使う
実際のボタン押下を再現する回路
- 常夜灯内部の電源レールは8.3Vで、ATtiny85には3.3Vが必要なため、HT7333電圧レギュレータを使用
- 2N3904トランジスタがボタン信号線をGNDへ短絡し、実際にボタンを押す動作を再現する
- 周辺部品は電流制限、誤入力防止、電源安定化を担う
- ATtiny85とトランジスタの間の1kΩ抵抗は、トランジスタへ流れる駆動電流を制限する
- 10kΩ抵抗は、電源投入中にトランジスタをオフのまま保ち、意図しないボタン入力を防ぐ
- 小型コンデンサ3個は、電圧レギュレータとチップに供給される電源を平滑化する
- 3ピンヘッダは電源・GND・ボタン信号線に接続される
- 決まった回数だけボタンを代わりに押してくれる汎用デバイスとして使え、PCB製作の工程も学べるよう、別基板として設計した
EasyEDAで回路と基板を設計
- EasyEDAで部品と接続関係をまず回路図として作成
GND、3V3のように名前が同じ接続点はルータが相互接続する- 実際に使う部品を指定すると、PCB配置や部品表の作成に活用できる
- PCB編集段階では、部品位置、配線経路、基板形状、印刷要素を自分で決められる
- 基板にはオープンソースハードウェアのロゴとユーザー名を印刷した
- 回路が単純なので片面基板で作成し、複雑な配線や線長・形状補正は不要だった
JLCPCBでの製造と部品実装
- JLCPCBで実際の部品と組み立ての有無を選んで基板を注文
- 最小注文数は5枚だったが必要な基板は1枚だけだったため、部品の大半は自分ではんだ付けした
- 非常に小さい抵抗やコンデンサは追加費用が少ないため、JLCPCBの実装サービスを利用した
- 注文後4日で基板が届いた
ATtiny85の書き込みと事前検証
- 空のATtiny85にはブートローダがなく、ArduinoのようにUSBへ直接接続できないため、別途プログラマが必要
- Raspberry Pi 3のGPIOとavrdudeを使って書き込んだ
- Piヘッダとチップをジャンパ線6本でつないだ後、コマンド1つを実行した
- 常夜灯へすぐに接続せず、出力ピンにLEDを付けて先に動作を検証した
- 最終動作は3回点滅したあと、そのまま停止する順序である
- テスト動画では必要回数をあとから修正したため4回点滅している
取り付け工程と商用電源の安全性
- 完成した基板を常夜灯内部にはんだ付けしたが、部品もスペースも非常に小さく作業は難しかった
- 既存基板の大型コンデンサは極性が逆に取り付けられており、マルチメータ検査でそれを確認した
- この常夜灯にはトランスがないため、追加PCBを取り付けると回路全体が商用電源に接続される
- ATtiny85は機器に入れる前にフラッシュしておく必要がある
- 取り付け後はUSBケーブルやRaspberry Piを再接続してはならない
就寝自動化と最終動作
- 時計が就寝状態をスマートフォンへ伝えると、スマートフォンがHome Assistantに通知し、Home AssistantがZigbeeプラグ経由で常夜灯を点ける
- 通電したPCBは常夜灯が誤動作しないよう少し待ってからボタンを3回押し、明るさ1段階へ切り替える
- 拡散板の裏に内部配線の影は見えるが、部屋の壁には映らないため実使用では問題なかった
オープンソース資料と適用条件
- tymscar/button-presserで以下の資料をMITライセンスで公開
- 同じ基板を製作できるGerberファイル
- 部品表と回路図
- ATtiny85で動作する短いCコード
- 適用前にREADMEで案内されているマルチメータ検査2項目を実施する必要がある
- この回路は、内部に4〜12Vの電源レールがあり、ボタンを押すと信号がGNDへ短絡される機器でのみ動作する
- 複数の低価格機器がこの条件に当てはまるが、すべての製品に適用できるわけではなく、商用電源で動く機器では作業前に安全ガイドを確認する必要がある
まだコメントはありません。