電動ガレージシャッターをリモコンで手動操作ではなく全自動制御にしたくて作ってみたのが4~5年ほど前。その後、HW/SWの改良を重ねつつ汎用的に使えそうな3世代目がようやく完成。
リモコン操作しなくても自動開閉してくれるので家族や知人からの評判も良くアメリカ映画によく出てくる高級住宅街の自動電動ガレージを思い出させてくれる。
ちなみにシャッター・メーカーの自動車用デバイスを使えば同じようなことは可能ではあるが、価格が高い、調整不可、外部連携できないことなどへの不満点がある。
1世代目...CPUはESP8266。WiFiアクセスポイントの設置場所により想定外の場所で開いたりしてしまうのでボツ。
2世代目...CPUはnRF24LE1。ビットレートの問題なのかスイートスポット現象なのか車庫内の通信が極めて不安定。CPUの入手性にも問題あり。
3世代目...CPUはTWELITE。車庫内の通信は安定している。CPU入手性も良くMONOSTICK/CUEなどがあり自作するものが少なく済むし機能と使いやすさのバランスがとても良いデバイスだ。最初からこれにしておけば良かったかもと思う今日この頃。
【システム構成】
Openhab3は、1Gb以上のメモリが必要なためRaspberry Pi 4Bにて運用中。我が家のシャッターとカーテンは全てOpenhab3で管理されているがAlexa連携出来たりするのが面白い。
“アレクサ、何々を開けて”とか”アレクサ、何々を閉めて”と言うだけで制御できるのはSF映画のようだ。
【シャッター・マネージャによりOpenhab(MQTT)連携が可能】
写真は車庫内の壁に設置したボックス内の様子。CPUはOrange Pi Zero 256Mb (armbian)。FTDIチップ(ftdi_sio)対応のOSなら何でもよい。
【シャッター・コントローラ】
電動シャッターの手動スイッチ回路に接続する。基板上のフォトリレー部品の交換により文化シャッターと東洋(ハアーモニー)に対応できる。シャッター制御パラメタはシャッター・マネージャにより設定できファームウェアのOTAアップデートも可能だ。ちなみにTWELITEのアンテナはPCB(基板パターン)アンテナとなっている。
手動スイッチ操作は安全のために停止ボタンを押してから開閉操作するのが一般的であるようだが同様な制御をすることで自動制御を実現している。タイマーだけで開閉状態を管理していてタイマー調整によりシャッター全開だけなく途中で停止させることも可能だ。
基板上のボタン操作によりペアリング・モード、メンテナンス・モードに切り替えることができペアリングモード時にペアリングするデバイスを電源オンすることでペアリング完了となる。一度ペアリングしたデバイスは再ペアリングで解除。メンテナンスモードは基板上の操作ボタンが手動スイッチ代わりになるモードだ。
ペアリング・モード...3つのボタンを全て押下したまま5秒待ちLED点滅が少し早くなったら黒ボタンだけ放す。黒ボタン押下で解除。
メンテナンス・モード...3つのボタンを全て押下したまま10秒待ちLED点滅がさらに早くなったら黒ボタンだけ放す。再度同じ操作で解除。
あと事故防止のためシャッター下の障害物感知機能が別途必要だ。シャッターに光電管式などの障害物感知機能がない場合はアマゾンでも売ってるABT-100などにより自作しシャッター・コントローラのアラーム(AL-GN)端子(B接)に接続する必要がある。
赤外線警報センサー 赤外線探知器 ビームバリアアクティブ検出 デジタルパルス赤外線センサー 100メートルIRアラーム
【シャッター・コントローラの回路図】
Sasapea’s Lab 作『Shutter Controller』はクリエイティブ・コモンズ 表示 – 継承 4.0 国際 ライセンスで提供されています。
【自動車のメインスイッチでシャッター開閉(AUTOデバイス)】
メインスイッチONで開きメインスイッチOFF後の設定時間経過後に閉まる。同様に車庫から離れると設定時間後に閉まり車庫に近づくと開く。シャッター・コントローラとペアリングが必要。
【電動自転車の電源スイッチでシャッター開閉(AUTOデバイス)】
黒いプラボックスの中には自動車用のMONOSTICKが入ってる。電動自転車のバッテリー電圧(27V)をレギュレターにより5Vに降圧しているが電圧差による発熱回避のためシャント型ではなくチャージポンプ型のレギュレターを使用している。シャッター・コントローラとペアリングが必要。袋を被せてあるので防水対策も完璧だ。(笑)
【TWELITE-CUEを強く振ることでシャッター開閉(HANDデバイス)】
車庫内の物や自転車などを出し入れするときの簡易リモコン。シャッターが閉まっていれば開いて開いていれば閉まる。電池がどのくらい持つかは不明だが数年程度は持つのではと思う。シャッター・コントローラとペアリングが必要。
【openHABアプリでシャッター開閉】
スマホから開け閉めしたりシャッターの開閉状態がわかる。データ通信可能なら全世界どこにいても開閉可能。Opnehab3で設定するだけでこんな画面が表示されるのは便利かも。
【シャッター開閉ログ】
シャッター開閉時にログ出力される。こっそりシャッター開けようとしてもバレバレだ!(笑)
【ソフトウェア】
シャッターマネージャのみLinux/makeで開発しているが、その他は全てWindows/eclipseで開発している。
【ファームウェア(eclipse)】
シャッターコントローラ(TWELITE)
AUTOデバイス(MONOSTICK)
HANDデバイス(TWELITE-CUE)
【シャッターマネージャ(Linux)】
シャッターマネージャ
OTAアップデート
その他に下記投稿内のプロジェクトが必要。
NXP JN516X (TWELITE) をプログラミングする(Flash Programmer)
NXP JN516X (TWELITE) をプログラミングする(OTA Update)
【Windows-eclipse-project】
JN516X-PROG-eclipse.zip
【JN516X-eclipse-project】
JN5164-MWSDK-OTA-BRIDGE-eclipse.zip
JN5164-MWSDK-OTA-BOOT-eclipse.zip
JN5169-MWSDK-OTA-BRIDGE-eclipse.zip
JN5169-MWSDK-OTA-BOOT-eclipse.zip
※シャッターマネージャのMONOSTICKのファームウェアは、上記のJN516x-MWSDK-OTA-BRIDGE-eclipse.zipプロジェクトの.binを書き込む。
※各ファームウェアをOTAアップーデート対応にするには、上記のJN516x-MWSDK-OTA-BOOT-eclipse.zipプロジェクトの.binを書き込む。但し、HANDデバイスについては短時間しかパワーオンしないためOTAアップデートは不可能。
※Openhab3側については、openhabからDL&INSTALL後、設置環境に合わせてGUIで設定するだけ。
※MQTTは、mosquittoからDL&INSTALL。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
/* wpan_security.h - Wireless Personal Area Network Library for NXP-JN516x (IEEE802.15.4) Copyright (c) 2022 Sasapea's Lab. All right reserved. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "aes.h" #ifndef WPAN_SECURITY_ENABLE #define WPAN_SECURITY_ENABLE 1 /* 0=disable, 1=enable */ #endif #define WPAN_SECURITY_AES_MODE AES::AESMODE_CCM_16 /* 16, 32, 64, 128 */ ★#define WPAN_SECURITY_KEY_DATA "Please rewrite to any data." |
core/wpan_security.hのWPAN_SECURITY_KEY_DATAにより通信を暗号化しているので各プロジェクトの暗号キーの変更を忘れずに。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
/* shutter.conf - Garage Shutter Controller Manager Configuration File Copyright (c) 2022 Sasapea's Lab. All right reserved. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ # # device address # DEVICE.ADDRESS1=00:1B:C5:01:21:08:0E:22 DEVICE.ADDRESS2=00:1B:C5:01:21:08:06:BD DEVICE.ADDRESS3=00:1B:C5:01:21:08:13:89 DEVICE.ADDRESS4=00:00:00:00:00:00:00:00 DEVICE.ADDRESS5=00:00:00:00:00:00:00:00 DEVICE.ADDRESS6=00:00:00:00:00:00:00:00 DEVICE.ALARM.DISABLE1=1 # # default config # # DEFAULT.PULSE_TIME : pulse width (ms) {HARMONY= 300, BUNKA= 1000} # DEFAULT.PULSE_INTERVAL: pulse interval (ms) {HARMONY= 100, BUNKA= 100} # DEFAULT.OPEN_INIT : open init time (ms) {HARMONY= 0, BUNKA=40000} # DEFAULT.OPEN_TIME : open time (ms) {HARMONY=29000, BUNKA=23000} # DEFAULT.RESUME_TIME : resume time (ms) # DEFAULT.AUTODW_TIME : auto-down time (ms) DEFAULT.PULSE_TIME=300 DEFAULT.PULSE_INTERVAL=100 DEFAULT.OPEN_INIT=0 DEFAULT.OPEN_TIME=29000 DEFAULT.RESUME_TIME=15000 DEFAULT.AUTODW_TIME=30000 DEFAULT.ALARM_DISABLE=0 |
シャッターマネージャの構成ァイルの例。DEVICE.ADDRESSxにシャッターコントローラのMACアドレスを登録しOPEN_TIME値は実測したシャッターの開閉時間(ミリ秒)より少しだけ大きめな値で設定する。全シャッターに共通な設定はデフォルトに設定し、特定のシャッター設定を個別設定するのがお勧め。
全体を詳しく説明したいところだが少し大変そうなのでとりあえず回路図やソースコードなどから読み取ってほしい。あしからず...