- Googleアシスタントが制御するホームオートメーションの回路図
- Blynkアプリケーションのセットアップ
- 文字列を読み取るためにGoogleアシスタントとBlynkを使用してIFTTTを設定する
- Blynkホームオートメーション用のArduinoのプログラミング
- PCBGoGoを使用したPCBの製造
- PCBの組み立て
- ボードをAC電源ユニット/延長ボードに接続する
GoogleアシスタントやAlexaなどの仮想アシスタントの進歩により、ホームオートメーションと音声制御アプリケーションは正常になりつつあります。現在、私たち自身が、単純な自動階段ライトからRaspberry Piを使用したIoTベースのWeb制御ホームオートメーションまで、多くのホームオートメーションプロジェクトを構築してきました。しかし、ここでのこのプロジェクトは異なります。ここでのアイデアは、壁のAC電源ユニットに収まり、その中に隠されたままにできる実用的なホームオートメーションボードを作成することです。ボードは、パワーユニットスイッチの通常の動作を中断してはなりません。つまり、手動スイッチでもオンまたはオフにする必要があります。また、言うまでもなく、Googleアシスタントを使用して音声で同じ負荷を制御し、タイマーを設定して、事前に設定された時間帯に負荷を自動的にオンまたはオフにできるようにする必要があります。
このプロジェクトはESP8266スマートWi-Fiプラグと非常に似ていますが、ここではESP12を使用するため、4つのAC負荷を同時に制御できるGPIOピンが増えます。また、BlynkとGoogleアシスタントを統合したため、プロジェクトは面白くて実用的になります。このプロジェクトでは、PCBGOGOPCB製造サービスを使用して回路基板を構築しました。記事の後半のセクションでは、回路用に設計されたガーバーファイルを提供し、PCBGOGOからPCBを注文するための完全な手順についても説明しました。
警告:このプロジェクトには、AC主電源電圧の操作が含まれます。高いAC電圧で作業する場合は、細心の注意を払う必要があることに注意してください。あなたが新しい場合は、経験豊富な人によって監督されていることを確認してください。
Googleアシスタントが制御するホームオートメーションの回路図
ホームオートメーションの完全な回路図は以下にあります。
ご覧のとおり、回路は非常に単純です。ESP12EWi-Fiモジュールから説明を始めましょう。プロジェクトの詳細な説明については、以下のビデオをチェックすることもできます。モジュールはnodeMCU開発ボードと同じようにプログラムでき、多くのスペースを削減します。デフォルトでは、電源を入れると、ESP12Eは動作モードに入ります。それをプログラムするには、リセットとフラッシュボタンを使用する必要があります。つまり、ESP12をプログラミングモードにし、リセットボタンとフラッシュボタンの両方を押し続けてから、リセットボタンを放します。これにより、フラッシュボタンを押した状態でESP12Eが起動します。次に、フラッシュボタンを放すと、ESP12Eがプログラミングモードになります。プログラミング後、アップロードされたプログラムを実行するには、リセットボタンをもう一度押してESP12Eを通常の操作モードで起動する必要があります。プログラミングピンRx、Rx、およびGroundは、FTDIボードまたはUSBからTTLへのコンバーターに接続できるように拡張されています。 ESP12のTxピンをプログラマーのRxピンに、またはその逆に接続してください。
他のフラグピンI1〜I4およびR1〜R4は、スイッチとリレーを接続するために使用されます。ピンI1〜I4は入力ピンを表します。これらのピンはすべて内部プルアップ抵抗をサポートしているため、以下に示すように、拡張ボックスのスイッチをプルダウン抵抗を介して入力ピンに接続するだけです。
同様に、リレー出力ピンR1〜R4は、リレーを制御するために使用されます。以下に示すように、BC547およびIN4007ダイオードを備えた標準のリレードライバ回路を使用しました。リレーは5Vでトリガーする必要がありますが、ESP12E出力ピンは3.3Vしかないことに注意してください。したがって、リレーを駆動するためにトランジスタを使用することが必須です。また、トランジスタのベースパスにLEDを配置して、トランジスタがトリガーされるたびにLEDもオンになるようにしました。
最後に、すべての回路に電力を供給するために、Hi-LinkAC-DCコンバーターを使用して220VACを5VDCに変換しました。この5VDCは、AMS117-3.3V電圧レギュレータを使用して3.3Vに変換されます。5Vはリレーのトリガーに使用され、3.3VはESP21Wi-Fiモジュールへの電力供給に使用されます。
Blynkアプリケーションのセットアップ
以前、Wi-Fi制御のArduino Robotなどの多くのBlynkプロジェクトを構築してきたため、blynkアプリケーションの設定の詳細については説明しません。ただし、簡単に言うと、アプリケーションをインストールし、NodeMCUの新しいプロジェクトを作成して、以下に示すようにウィジェットの配置を開始します。
プロジェクトのリレー1から4を制御するために、仮想ピンV1からV4を使用しました。切り替えるボタンの種類は必ず変更してください。タイマーオプションを使用すると、電話の電源がオフになっている場合でも、設定した時間だけ仮想ピンを自動的にトリガーできます。たとえば、ここでは仮想ピンV1のみにタイマーを使用しましたが、必要に応じて4つのピンすべてにタイマーを使用できます。
プロジェクトページからblynk認証トークン値を取得してください。ナットアイコン(上の画像で赤い丸で囲んだ部分)をクリックし、[すべてコピー]オプションを使用して認証トークンをコピーし、安全な場所に貼り付けるだけです。Arduinoボードをプログラミングするときに必要になります。
文字列を読み取るためにGoogleアシスタントとBlynkを使用してIFTTTを設定する
ホームオートメーションにGoogleアシスタントを使用する最も簡単な方法は、IFTTTを使用することです。また、以前はNodeMCUとRaspberryPiを使用して多くのIFTTTプロジェクトを構築しました。このプロジェクトでは、Blynkアプリを使用して、Googleアシスタントを使用してWebhookをトリガーします。これは、音声制御のホームオートメーションおよび音声制御のFMラジオプロジェクトと非常によく似ています。ただし、ここでは、IFTTTでblynkを使用して文字列を送信します。これにより、文字列が非常に簡単で興味深いものになります。
基本的に、トリガーコマンドを送信するためにblynkの仮想ピンV5とV6を使用します。V5はターンオンコマンドに使用され、V6はターンオフコマンドに使用されます。たとえば、テレビとランプをオンにするとします。ここでの文字列コマンド「TVandLamp」は、APIを使用してNodeMCUに送信されます。APIの構文は以下のとおりです。
http://188.166.206.43//update/V5?value=TV and Lamp
IFTTTで行う必要があるのは、GoogleアシスタントをIFとして使用し、Webhookをそのように使用することだけです。このコマンドをリッスンし、上記のAPIを使用してNodeMCUに情報を送信します。同じフォームのターンオンアプレットを以下に示します。
Googleアシスタントのレシピを作成するときは、テキストの材料を含むフレーズを選択する必要があることに注意してください。同様に、リレーをオフにするには、仮想ピンV6についても同じことを繰り返す必要があります。詳細については、このページの下部にあるビデオを確認してください。
Blynkホームオートメーション用のArduinoのプログラミング
このプロジェクトの完全なArduinoコードは、このページの下部にあります。その説明は以下のとおりです。その前に、ArduinoIDEからBlynkとProgramNodeMCUを使用できることを確認してください。ESP12の開始に関する記事に従わない場合。また、ボードマネージャーを使用してblynkライブラリをArduinoIDEに追加します。
いつものように、入力ピンと出力ピンを定義することからコードを開始します。ここでは、入力はスイッチから、出力はリレーからです。以下に示すように、4つのスイッチすべてのピン名をswとして、リレーをrelとして定義しました。
#define sw1 13 #define sw2 12 #define sw3 14 #define sw4 16 #define rel1 4 #define rel2 5 #define rel3 9 #define rel4 10
次の段階では、blynk authトークンや、nodeMCUが接続するWi-Fiルーターのユーザー名とパスワードなどの資格情報を入力する必要があります。まばたき認証トークンは、blynkアプリケーションから取得できます。これについては、blynkアプリケーションの設定のセクションで詳しく説明します。
char auth = "Fh3tm0ZSrXQcROYl_lIYwOIuVu-E"; // blynkアプリケーションから取得charssid = "home_wifi"; char pass = "fakepass123";
次に、 read_switch_toggle() という関数の定義を示しました。この関数では、スイッチの現在の状態と以前の状態を比較します。スイッチがオンまたはオフになっている場合、つまりスイッチが切り替えられている場合。スイッチの状態に変化があり、関数はこの変化を監視してスイッチ番号を返します。変更が検出されない場合は、0を返します。
int read_switch_toggle(){int result = 0; //(int i = 0; i <= 3; i ++)の以前のすべての値に注意してくださいpvs_state = crnt_state; //スイッチの現在のステータスを読み取りますcrnt_state = digitalRead(sw1); crnt_state = digitalRead(sw2); crnt_state = digitalRead(sw3); crnt_state = digitalRead(sw4); //現在の状態とpvs状態を比較するfor(int i = 0; i <= 3; i ++){if(pvs_state!= crnt_state){result =(i + 1); //いずれかのスイッチが切り替えられると、結果としてスイッチ番号が返されます。 } else result = 0; //変更結果がない場合0}結果を返す; //結果を返します}
次に、blynkアプリケーションのコードがあります。スマートジャンクションボックスを制御するために、仮想ピンV1からV6を使用します。ピンV1からV4は、それぞれブリンクアプリケーションから直接リレー1から4を制御するために使用されます。以下のコードは、V1がblynkアプリケーションからトリガーされたときに何が起こるかを示しています。ステータス(HIGHまたはLOW)を読み取り、それに応じてリレーを制御するだけです。
BLYNK_WRITE(V1){digitalWrite(rel1、param.asInt()); Serial.println( "V1"); }
同様に、仮想ピンを使用して、blynkアプリケーションから文字列を読み取ることもできます。後でIFTTTとGoogleアシスタントを使用してGoogleアシスタントからNodeMCUに文字列を送信する方法を学習しますが、今のところ、NodeMCUコードがこの文字列を読み取り、特定のキーワードを検索し、それに応じてリレーをトリガーする方法を見てみましょう。
以下のコードでは、仮想ピンV5がトリガーされると、仮想ピンV5によって渡された文字列が ON_message という文字列変数に渡されることが わかり ます。次に、この文字列変数とinderOfメソッドを使用して、「lamp」、「LED」、「music」、「TV」などのキーワードが存在するかどうかを検索し、存在する場合は、その特定の負荷をオンにします。キーワード「everything」が検出されると、すべてがオンになります。 V6でリレーをオフにする場合も同じことができます。 IFTTTのセクションに入ると、これについて詳しく理解できます。
BLYNK_WRITE(V5){文字列ON_message = param.asStr(); Serial.println(ON_message); if(ON_message.indexOf( "lamp")> = 0)digitalWrite(rel1、HIGH); if(ON_message.indexOf( "LED")> = 0)digitalWrite(rel2、HIGH); if(ON_message.indexOf( "music")> = 0)digitalWrite(rel3、HIGH); if(ON_message.indexOf( "TV")> = 0)digitalWrite(rel4、HIGH); if(ON_message.indexOf( "everything")> = 0){digitalWrite(rel1、HIGH); digitalWrite(rel2、HIGH); digitalWrite(rel3、HIGH); digitalWrite(rel4、HIGH); }}
最後に、ループ関数内で、スイッチの位置が変更されているボタンがあるかどうかを確認するだけです。はいの場合、以下に示すようなスイッチケースを使用して、その特定のリレーの位置を切り替えます。
スイッチ(toggle_pin){ケース0:ブレーク; ケース1:Serial.println( "Toggling Relay 1"); digitalWrite(rel1、relay_state); ブレーク; ケース2:Serial.println( "Toggling Relay 2"); digitalWrite(rel2、relay_state); ブレーク; ケース3:Serial.println( "Toggling Relay 3"); digitalWrite(rel3、relay_state); ブレーク; ケース4:Serial.println( "Toggling Relay 4"); digitalWrite(rel4、relay_state); ブレーク; }}
PCBGoGoを使用したPCBの製造
回路図がどのように機能するかを理解したので、ホームオートメーションプロジェクトのPCBの構築に進むことができます。上記の回路のPCBレイアウトは、リンクからGerberとしてダウンロードすることもできます。
- Googleアシスタントを使用して音声制御のホームオートメーション用のGERBERをダウンロードする
これで設計の準備が整いました。ガーバーファイルを使用して設計を行うときが来ました。PCBGOGOからPCBを完成させるのは非常に簡単で、以下の手順に従ってください-
ステップ1: www.pcbgogo.comにアクセスし、初めての場合はサインアップします。次に、[PCBプロトタイプ]タブで、PCBの寸法、層の数、および必要なPCBの数を入力します。PCBを80cm×80cmとすると、以下のように寸法を設定できます。
ステップ2: [今すぐ見積もり ]ボタンをクリックして 続行し ます。使用するトラック間隔など、必要に応じていくつかの追加パラメータを設定するページが表示されます。ただし、ほとんどの場合、デフォルト値で問題なく機能します。ここで考慮しなければならないのは、価格と時間だけです。ご覧のとおり、ビルド時間はわずか2〜3日で、PCBのコストはわずか5ドルです。その後、要件に基づいて希望の配送方法を選択できます。
ステップ3: 最後のステップは、ガーバーファイルをアップロードして支払いを続行することです。プロセスがスムーズであることを確認するために、PCBGOGOは、支払いを続行する前に、ガーバーファイルが有効かどうかを確認します。このようにして、PCBが製造に適していて、コミットされたとおりに到達することを確認できます。
PCBの組み立て
ボードが注文された後、それはきちんとラベル付けされたよく詰められた箱の中で宅配便を通して数日後に私に届きました、そしていつものように、PCBの品質は素晴らしかったです。私が受け取ったPCBを以下に示します。ご覧のとおり、上層と下層の両方が期待どおりになっています。
ビアとパッドはすべて適切なサイズでした。回路を動作させるためにPCBボードに組み立てるのに約15分かかりました。組み立てたボードを以下に示します。
ボードをAC電源ユニット/延長ボードに接続する
ボードは、私たちの家のAC電源ソケットの内側に固定されるように設計されています。ただし、このプロジェクトでは、拡張ボックスを使用します。より永続的な解決策が必要な場合は、これをAC電源ソケット内に配線します。以下に示すように、PCBの長さはAC電源ソケット内に配置できるほどコンパクトです。
AC電源を使用するときは、安全上の注意事項に必ず従ってください。以下の回路図に従って、リレーとスイッチをPCBボードに接続する方法を理解してください。
接続図は1つのリレーとスイッチでのみダウンしていますが、残りの3つでも同じように複製できます。接続が完了すると、ボードは次のようになります。
接続が完了したら、ネジ留め式端子でしっかりと固定されていることを確認し、安全性を高めるためにホットグルーを使用します。すべてを箱に戻し、テストの準備ができているはずです。このプロジェクトの完全な動作は、以下のビデオで見つけることができます。
この記事を楽しんで、何か役立つことを学んだことを願っています。ご不明な点がございましたら、下のコメントセクションに残すか、フォーラムをご利用ください。