- 前提条件:
- 作業コンセプト:
- ESP8266用のArduinoIDEプログラム:
- 回路図とハードウェア:
- ESP8266 IPのポート転送:
- Moni Androidアプリケーションのインストール:
- IFTTTサービスを使用したアプレットの作成:
- プロジェクトのテスト:
ESP8266 Wi-Fiモジュールを使用して音声制御ホームオートメーションシステムを構築する別のエキサイティングなプロジェクトへようこそ。このプロジェクトでは、世界中のどこからでもAndroidアプリを介して音声を使用してホームACアプライアンスを制御できます。はい、音声コマンドを使用するだけで負荷(ライト/ファン)をオンまたはオフにするというあなたの夢は、このプロジェクトの終わりに実現する予定です。このプロジェクトは、以前のプロジェクトであるホームオートメーション用のスマートジャンクションボックスのバリエーションであり、ネットワーク経由でWebサーバーを使用して家電製品を制御しました。
このIOTベースの音声制御ホームオートメーションプロジェクトは、構築が非常に簡単で、高価な音声モジュールを購入する必要がないため、それほど費用はかかりません。プロジェクト全体で、私がそれを構築するのに約500INR(8 USD)かかりました。また、これはマイクロコントローラーに依存しないプロジェクトです。つまり、ArduinoやRaspberrypiのようなMCU / MPは必要ありません。プロジェクト全体がESP8266モジュールで実行されます。ESP8266の詳細については、こちらをご覧ください。それでは、話を始めましょう。
これまで、次の ようなさまざまなテクノロジーを使用したさまざまなタイプのホームオートメーションについて説明してきました 。
- DTMFベースのホームオートメーション
- Arduinoを使用したGSMベースのホームオートメーション
- Arduinoを使用したPC制御のホームオートメーション
- 8051を使用したBluetooth制御のホームオートメーション
- Arduinoを使用したIRリモート制御ホームオートメーション
- MATLABとArduinoを使用したホームオートメーションプロジェクト
- RaspberryPiを使用したRFリモート制御LED
- Arduinoを使用したスマートフォン制御のホームオートメーション
前提条件:
このプロジェクトは、ESP8266を使用したホームオートメーション用の以前のプロジェクトSmart Junction Boxの続きであるため、ハードウェア部分のほとんどはすでにそのチュートリアルで説明されています。そのチュートリアルでカバーされている情報をスキップするので、これを続行する前にそれを読んでください。以前のプロジェクトを簡単に要約するために、そのチュートリアルで、2つのリレーとESP8266モジュールで構成されるPerfボードをコンソールできるジャンクションボックス(拡張ボード)を変更しました。 2つのリレー(AC負荷)は、ESP8266によって作成されたWebページを使用して(Webサーバーとして機能することにより)切り替えることができます。このチュートリアルでは、スマートフォンから音声コマンドを使用してAC負荷を制御できるように、いくつかの機能を追加します。このチュートリアルではハードウェアの部分については説明しません。ハードウェアとコードは前のチュートリアルと同じままです。
また、www.IFTTT.comの使用方法を知っていると、このプロジェクトで優位に立つことができます。IFTTTに慣れていない場合でも、この特定のチュートリアルでIFTTTを使用して機能させる方法を説明しますので、ご安心ください。
作業コンセプト:
前のチュートリアルを読んだことを前提としています。その場合は、ジャンクションボックスを作成する方法と、Webブラウザからリモートで負荷を切り替える方法を知っている必要があります。これを可能にするために、ESP8266に割り当てられたIPアドレスを公開しています。これは、「ポート転送技術」を使用して実行できます。次に、Android / iPhoneモバイルデバイスに「Moni」というモバイルアプリケーションをインストールします。このアプリケーションは、私たちのスピーチを認識し、情報をIFTTアプレットに伝達します。このアプレットは、MakerWebフックを介してロードを制御します。
少し退屈に聞こえるかもしれませんが、これらすべてのことはこのチュートリアルで明確に説明されており、数回クリックするだけで上記のすべてを行うことができます。このチュートリアルは、写真とビデオの助けを借りて、可能な限り最善の方法であなたを助けます。このチュートリアルの最後に、世界中のどこからでも音声で家電製品の電源をオンまたはオフにできるようになります。チュートリアルの最後にある完全なコードとデモビデオを確認してください。
また、RaspberryPiを使用した音声制御ライトと16x2LCDでの音声入力も確認してください。
ESP8266用のArduinoIDEプログラム:
前のプロジェクトと同じように、ArduinoIDEを使用してESP8266モジュールをプログラムします。プログラムに若干の変更が加えられています。この変更は、ESP8266がルーターとの接続を確立するたびに一定のIPアドレスに接続するように行われます。プログラムは、これらの4行を除いて、前のコードとまったく同じです。
// IPAddress ip(192、168、0、104);のたびに一定のIPを取得します。//これはESPモジュールのIPである必要がありますIPAddressgateway(192、168、0、1); //ネットワークに一致するようにゲートウェイを設定しますほとんどのゲートウェイはデフォルトで同じになりますSerial.print(F( "Setting static ip to:")); Serial.println(ip); IPアドレスサブネット(255、255、255、0); //ネットワークに一致するようにサブネットマスクを設定しますWiFi.config(ip、gateway、subnet);
ここでは、 IPAddress の代わりに ip(192、168、0、104); 希望のIPアドレスを入力してください。この場合、ESPは常に192.168.0.104に接続され、ブラウザーでこのIPを使用して簡単にアクセスできます。このチュートリアルの最後に記載されている完全なコード。
回路図とハードウェア:
このIoTベースの音声制御家電の回路図とハードウェアは以前のスマートジャンクションプロジェクトと同じであり、そこで回路図を説明したので、親切に説明しました。ここでは、参照用の完全な回路図を見ることができます。
ESP8266 IPのポート転送:
最初のステップは、ルーター(モデム)でポート転送を有効にして、パブリックIPを入力するだけで、世界中のどこからでもESPにアクセスできるようにすることです。 ESP8266がホーム/オフィスルーターに接続するたびに、一意のIPアドレスが割り当てられ、このIPアドレスを使用してWebブラウザーを介してESP8266にアクセスします。このIPアドレスは、ホーム/オフィスネットワーク内で制限されているため、グローバルにアクセスすることはできません。ルーターに接続されているデバイスからのみアクセスできます。ポートフォワーディングは、このWebページをグローバルにロードするための手法です。 ポート転送後、パブリックIPを使用して、世界中のどこからでもこのWebページにアクセスできます。かっこいいですね!これをどのように行うことができるか見てみましょう。これを行うには、事前に次のことを知っています。
1.ルーターの製造元名とIPアドレス。これは、ルーターを見れば簡単にわかります。IPアドレスもステッカーに記載されています。GoogleがルーターのIPを知らない場合。
2.ルーターのログインページのユーザー名とパスワード。ほとんどのルーターのユーザー名は「admin」、パスワードは「admin」です。
3.ESP8266モジュールに割り当てられたIPアドレス。これは、ESPモジュールのWebページにアクセスするために使用するアドレスです。
4.インターネットサービスプロバイダーのIPアドレス(パブリックIPアドレス)。これは、「私のIPとは」をゴーグルするだけで見つけることができます。
すべてが手元にあると、以下の手順に従ってポート転送を行うことができます。何かを見つけるのに苦労している場合は、以下のコメントセクションを使用してください。私はあなたを助けます。
手順1:ルーターのIPアドレス(通常は192.168.1.1)を使用して、ルーターのWeb管理ユーティリティページにログインします。私の画面は以下のようになります
ステップ2:デフォルトでユーザー名「admin」とデフォルトでパスワード「admin」を入力し、「ログイン」をクリックします。以下のようなユーティリティページが表示されます。
ここに表示される情報のほとんどは機密情報であるため、インターネットのセキュリティを危険にさらす可能性のある他の未知の情報と共有しないでください。
ステップ3:上記のように、ページの左下にすべてのオプションが表示されます。私たちの目的は、「仮想サーバー」という名前を見つけることです。転送オプションの下に私のリストがあります。ほとんどのルーターでは、6、7、または8番目のオプションとしてリストされます(ほとんどの場合、DHCP設定より下)。それを見つけてクリックしてください
ステップ4:次に、ESPモジュールに割り当てられたIPアドレスと、IPを転送するためのポート番号を入力する必要があります。私の場合、[新規追加]をクリックして、それらの詳細を入力する必要があります。少し違うかもしれません。IPアドレスは、ESPモジュールのWebページにアクセスするために使用するものです。ポート番号は任意ですが、わかりやすくするために「80」を使用します。ESP8266モジュールに割り当てられたIPは192.168.0.104であるため、転送は次のようになります。
ステップ5:パブリックIPアドレスを知る必要があります。これは「WhatismyIP」の私のゴーグルです。ISPIPの機密性を高める必要があります。このチュートリアルのために、私のIPアドレスが987:654:321:123であると仮定します。これを残りのチュートリアルのISPIPとして使用します。
注: ISPが静的/動的IPを提供している可能性があります。動的IPの場合、モデム/ルーターを再起動するたびにIPが変更されます。その場合、DynDNSのようなものを使用する必要があります。しかし、それはこのチュートリアルの範囲外です。ダイナミックIPであっても、ルーターをリセットしない限り機能します。
これでポート転送が成功しました。ブラウザにISPIP:portname(987:654:321:123:80)を入力して、ESPWebページが読み込まれるかどうかを確認できます。すべてが期待どおりに進んだら、ISPのIPアドレスを使用して、世界中のどこからでもロードを切り替えることができるはずです。
Moni Androidアプリケーションのインストール:
Moniは、Android、Windows、iTunes、さらにはSkypeでも利用できるアプリケーションです。このアプリケーションを携帯電話にダウンロードできます。Moni.aiには、音声コマンドに応答するだけでなく、開発者にとって非常に使いやすい機能があり、会話を視覚的にすばやく定義して、サービスに接続できます。Moni.aiは、Node-Redと呼ばれるアプリケーションを使用します。このアプリケーションを使用すると、音声チャネルを簡単に作成し、ビジネス/プロジェクト用に独自のChabot(AI)システムを構築して、自然言語で自動化できます。最高のことは、Moniが非営利目的で完全に無料であるということです。
私はAndroidスマートフォンを使用しているため、GooglePlayストアからMoniを直接ダウンロードします。インストール後、無料アカウントを作成してサインインすると、アプリは次のようになります。
これは、天気や時間などを尋ねるなど、他の仮想アシスタントと同じように使用できます。ただし、追加の機能は、Iftttサービスによって作成されたアプレットに応答できることです。アプリケーション用のアプレットを作成する方法を今すぐ見てみましょう。
IFTTTサービスを使用したアプレットの作成:
私たちはこのプロジェクトを完了することから一歩離れています。最後のステップは、IFTTTWebサイトでアプレットを作成することです。ここで、自宅のさまざまな家電製品を制御するためのさまざまな音声コマンドをMoniに指示します。
下のビデオに示すように、この音声制御のジャンクションボックスを使用して、水族館の負荷(ライト/フィルター)を切り替えています。したがって、私はその要件に合わせてアプレットをカスタマイズしています。目的に合わせてカスタマイズできます。以下の手順に従ってください。
ステップ1: www.IFTTT.comにアクセスし、アカウントでログインします。新規の場合はサインアップしてください。
ステップ2:「検索」をクリックして「Webhookを作成」と入力します。それを選択し、「接続」をクリックします。手順に従って接続します。
ステップ3:もう一度[検索]をクリックして、Moniと入力します。Moniを選択し、「接続」をクリックします。IFTTTアカウントでログインして、接続を有効にします。
ステップ4:「MakerWebhooks」および「Moni」サービスに接続しました。次に、これらのサービスを使用してアプレットを作成しましょう。[マイアプレット]、[新しいアプレット]の順にクリックします。次のようなものが表示されます。
この画面で「これ」をクリックして「モニ」を選択する必要があります。次に、「モニにアクションを実行するように依頼する」をクリックすると、画面の下に移動します。
ステップ5:上の画像に入力したように、詳細を入力します。ここでの私のタスクは、「水族館の照明をオンにする」と言ったときに、水族館の照明(負荷1)をオンにすることです。次に、「トリガーの作成」をクリックします
ステップ6:「IFTHISTHANTHAT」画面に戻ります。次に、「それ」をクリックし、「MakerWebhooks」と入力して選択します。次に、「Webリクエストを作成する」をクリックします。以下の画面に移動します
これは、間違いを犯す可能性が最も高い重要なステップです。このページに、ロードするURLを入力するだけです。私の場合、switch1に接続されている負荷をオンにしたいので、http:// 987:654:321:123 / switch1Onという行を使用して、IPをパブリックIPアドレスに置き換える必要があります。これは、前のチュートリアルで私のコードを使用した場合にのみ機能します。ロードを切り替えるためのURLの完全なリストを以下に示します。
URL |
プログラムからのキーワード |
アクション |
http:// 987:654:321:123 / switch1On |
Switch1On |
GPIO_0がハイになり、負荷1がオンになります |
http:// 987:654:321:123 / switch1Off |
Switch1Off |
GPIO_0がローになり、負荷1がオフになります |
http:// 987:654:321:123 / switch2On |
Switch2On |
GPIO_2がハイになり、負荷2がオンになります |
http:// 987:654:321:123 / switch2Off |
Switch2Off |
GPIO_2がローになり、負荷1がオフになります |
目的のURLを入力したら、[アクションの作成]をクリックします。次に、[完了]をクリックします。同様に、4つのアプレットを作成して、ジャンクションボックスの両方の負荷をオン/オフにすることができます。
つまり、アプレットはアクションの準備ができており、以下に示すように「マイアプレット」の下に表示されます。
コードをテストする時間…….
プロジェクトのテスト:
最後に、プロジェクトの準備が整いました。テストしてみましょう。電源を入れ、携帯電話でMoniアプリケーションを開きます。マイクアイコンをクリックして、コマンドを発声します。私の場合は「水族館の照明をつけて」で、「OK」と返信して照明をつけてください。以下の完全なコードとデモビデオを確認してください。
あなたがプロジェクトを気に入って、それが機能するようになったことを願っています。どこかで行き詰まっている場合は、下のコメントセクションを使用してください。きっとお手伝いします。それまでは、別の興味深いプロジェクトでお会いしましょう。
他のIoTベースのプロジェクトもここで確認してください。