$ 20 Zigbee Door Chime
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 |
アプリとオンラインサービス
> |
|
このプロジェクトについて
マイセットアップ
インターネットに接続されたホームオートメーションシステム用のかなり広範なzigbee / z-waveメッシュネットワーク(SmartThingsを介して)があり、照明の制御や電力使用量の監視から、異常気象の警告や犬への給餌の通知まで、すべてを実行します。
ユーザーインターフェイス全体はスマートフォンアプリを介して行われ、アラートはアプリを介してプッシュするか、SMSを介して送信できます。私がひび割れをすり抜けたと感じるユースケースの1つは、家の中の状態の変化(ドア/窓/金庫/ゲートの開放、悪天候の到来、または保育園の温度が高すぎる)を居住者に警告するフレンドリーなチャイムです。
問題
モーションセンサーまたはウィンドウ/ドアセンサーが作動したときに超大音量のサイレンを鳴らすためのオプションがすでにいくつかありますが、単純なドアチャイムは見つかりませんでした。これは、ほぼすべてのホームセキュリティシステムの基本的な機能であるため、存在しないことに本当に驚きました。リモートドアベルセンサーをハッキングすることを検討しましたが、困難で高価な部分は、z-wave / zigbeeメッシュネットワークでそれを取得することでした。 SmartThingsにはSONOSスピーカー用のAPIがあり[高価]、SmartThingsからIFTTT、Twitter、wifi接続のarduino [過度に複雑で遅い]までの複数の統合をデイジーチェーン接続しているのを見てきました。
全体として、これらのソリューションはいずれも40ドルをはるかに超えるものであり、同じ機能を20ドル未満でより優れたパフォーマンスで実現したいと考えています。
Cree ConnectedLED電球を入力してください
HomeDepotはCreeConnected Bulbを15ドルで販売しており、これは私のお気に入りのスマート電球です。光出力、色温度、調光可能範囲、寿命、またはワイヤレス範囲で50ドル未満のものは他にありません。
私はすでに古いスマート電球をすべてこれらと交換し、いくつか残っていたので、この安価で信頼性の高いハードウェアで他に何ができるかを確認したいと思います。他の人は電球を分解し、すべてのzigbeeコンポーネントが単一のブレイクアウトボード上にあり、3.3vの電力を使用していることを発見しました...私のarduinoの感覚はうずきます。
zigbeeボードには、実際には256KBのフラッシュメモリ(pdf)を備えた32ビットARMCortexチップであるAtmelSAMR21が搭載されていることがわかりました。 Atmelは開発用SAMR21ボードを42ドルで販売しているので、これを15ドルで入手するのは盗みです。
20ドル未満のハードウェアSmartThingsを使用した概念実証
これは、arduinoの状態変化モニターを使用してピエゾブザーのトーン「チャイム」をトリガーする簡単なPoCです。電球の調光とオン/オフ出力ピンは引き続き機能し、SmartThingsアプリエンジンを使用して、必要なロジックを構築できます。
arduinoがなくても、デジタルピンをリレーに直接接続して、ほぼすべてのオン/オフを切り替えることができます。これにより、LEDストリップライトの駆動、ガレージドアの開閉、モーター/ポンプのオンなどが可能になります。
ピンの1つがPWMを出力するので、1〜100%の値を読み取るようにマップされたarduinoのアナログI / Oピンの1つにそれを結び付けることができます。 SmartThingsでは、これらは10%の間隔に分割されているため、その間隔とオン/オフの間に、zigbeeボードを介して送信できる11の異なる出力があります。これにより、開いているドア/窓に基づいてさまざまなアラートをトリガーできます。
これは、単なるアラートやチャイムを超えて拡大する可能性があります。私がウィンドウACユニット用のarduino制御IRブラスターに取り組んでいる別のプロジェクトで、上記の方法を使用してSmartThingsと直接統合できるようになったので、自分の存在/占有センサーと家の状態を認識します。
また、これはすべて3.3vであるため、超小型でポータブルなパッケージ用のATtiny85および3.7vLi-Ionバッテリーの完璧な使用例です。また、電球からの電源は120vACから3.3vDCに低下するため、今後のプロジェクトに役立つことは間違いありません。
このコミュニティは他の用途も考え出すことができると確信しているので、これをどのように使用するかについてコメントするか、独自のレンディションを作成してプロジェクトを投稿してください!
コード
- DoorChimeスケッチ
- ピッチ.h
DoorChime Sketch C / C ++
DoorChime用のArduinoスケッチ#include#include "pitches.h" / * Cree Connected LEDのジグビーボードを使用して他のデバイス(この場合はスピーカー)を駆動するためのPoCとしてのクイックスケッチ。 BuddyCrotty- 2015年3月バージョン0.1.2TomIgoeのサンプルスケッチから完全にコピー:状態変化検出(エッジ検出)toneMelodyこのサンプルコードはパブリックドメインにあります。 http://arduino.cc/en/Tutorial/ButtonStateChange http://arduino.cc/en/Tutorial/ToneZigbeeボード(Cree接続)LEDピン1アースピン23.3Vinピン3PWM出力ピン4デジタル出力回路:* 8 -デジタルピン8のオームスピーカー*ジグビーボードのピン4に接続されたピン2 * ///この定数は変更されません:const int buttonPin =2; //プッシュボタンが接続されているピンconstint SpeakerPin =8; //スピーカーが接続されているピン//変数が変更されます:int buttonPushCounter =0; //ボタンを押した回数のカウンターintbuttonState =0; // buttonintの現在の状態lastButtonState =0; //ボタンの以前の状態//メロディーの音符(7nationArmy):int melody [] ={NOTE_GS2、NOTE_GS2、NOTE_B2、NOTE_GS2、NOTE_FS2、NOTE_E2、NOTE_DS2}; //音符の長さ:4 =四分の一音符、8 =8番目の音符など:intnoteDurations [] ={4、8、8、8、8、3.5、3}; void setup(){//ボタンピンを入力として初期化します:pinMode(buttonPin、INPUT); // LEDを出力として初期化します:pinMode(speakerPin、OUTPUT);} void loop(){//プッシュボタン入力ピンを読み取ります:buttonState =digitalRead(buttonPin); // buttonStateを以前の状態と比較しますif(buttonState!=lastButtonState){//状態が変更された場合は、カウンターをインクリメントしますif(buttonState ==HIGH){//現在の状態がHIGHの場合、ボタンは// wendオフからオンへ:buttonPushCounter ++; //トーンを再生します//メロディーの音符を繰り返します:for(int thisNote =0; thisNote <8; thisNote ++){//音符の長さを計算するには、1秒かかります//音符の種類で割った値です。 //例えば。四分音符=1000/4、八分音符=1000/8などintnoteDuration =10000 / noteDurations [thisNote];トーン(speakerPin、melody [thisNote]、noteDuration); //音符を区別するために、音符間の最小時間を設定します。 //ノートの持続時間+ 30%はうまく機能しているようです:int pauseBetweenNotes =noteDuration * .32; delay(pauseBetweenNotes); //トーンの再生を停止します:noTone(speakerPin); }} else {//現在の状態がLOWの場合、ボタンは//オンからオフになりました:Serial.println( "off"); } //バウンスを避けるために少し遅延しますdelay(50); } //現在の状態を最後の状態として保存します。//次回はループを通過しますlastButtonState =buttonState; // 2つの状態が変化するたびにChimeをオンにします(ドアが開いたときのみ)//モジュロ関数は// 2つの数値の除算の余りを提供します:if(buttonPushCounter%2 ==0){digitalWrite(speakerPin、HIGH ); } else {digitalWrite(speakerPin、LOW); }}
pitches.h C / C ++
ライブラリを売り込むので、自分で検索する必要はありません/ ********************************* ******************パブリック定数******************************* ****************** /#define NOTE_B0 31#define NOTE_C1 33#define NOTE_CS1 35#define NOTE_D1 37#define NOTE_DS1 39#define NOTE_E1 41#define NOTE_F1 44#define NOTE_FS1 46#define NOTE_G1 49#define NOTE_GS1 52#define NOTE_A1 55#define NOTE_AS1 58#define NOTE_B1 62#define NOTE_C2 65#define NOTE_CS2 69#define NOTE_D2 73#define NOTE_DS2 78#define NOTE_E2 82#define NOTE_F2 87#define NOTE_FS2 93 define NOTE_G2 98#define NOTE_GS2 104#define NOTE_A2 110#define NOTE_AS2 117#define NOTE_B2 123#define NOTE_C3 131#define NOTE_CS3 139#define NOTE_D3 147#define NOTE_DS3 156#define NOTE_E3 165#define NOTE_F3 175#define NOTE_FS 196#define NOTE_GS3 208#define NOTE_A3 220#define NOTE_AS3 233#define NOTE_B3 247#define NOTE_C4 262#define NOTE_CS4 277#define NOTE_D4 294#define NOTE_DS4 311#define NOTE_E4 330#define NOTE_F4 349#de fine NOTE_FS4 370#define NOTE_G4 392#define NOTE_GS4 415#define NOTE_A4 440#define NOTE_AS4 466#define NOTE_B4 494#define NOTE_C5 523#define NOTE_CS5 554#define NOTE_D5 587#define NOTE_DS5 622#define NOTE_E5 659 740#define NOTE_G5 784#define NOTE_GS5 831#define NOTE_A5 880#define NOTE_AS5 932#define NOTE_B5 988#define NOTE_C6 1047#define NOTE_CS6 1109#define NOTE_D6 1175#define NOTE_DS6 1245#define NOTE_E6 1319#define NOTE_ define NOTE_G6 1568#define NOTE_GS6 1661#define NOTE_A6 1760#define NOTE_AS6 1865#define NOTE_B6 1976#define NOTE_C7 2093#define NOTE_CS7 2217#define NOTE_D7 2349#define NOTE_DS7 2489#define NOTE_E7 2637#define NOTE_F7 2794 3136#define NOTE_GS7 3322#define NOTE_A7 3520#define NOTE_AS7 3729#define NOTE_B7 3951#define NOTE_C8 4186#define NOTE_CS8 4435#define NOTE_D8 4699#define NOTE_DS8 4978
回路図
スケッチコード付きのDoorChimeのフリッティング回路図製造プロセス