最近、市場に出回っているすべての新しいホームオートメーション製品に興味を持ったので、照明、ファン、ACなどを制御するためにGoogle HomeMiniと他のいくつかのスマートデバイスを購入しました。それは機能し、すべてが楽しく使用できましたが、これらすべてのワイヤレス接続が私の周りで発生することに少し問題がありました。私の寝室だけでも5つのスマートデバイスがあり、ラップトップと電話を含めて、私の周りには合計7つのワイヤレスデバイスがあり、常にルーターに接続されています。これらすべてのWi-Fi信号が私たちの健康に悪い可能性があるのではないかと心配し、Sciencedirectに関するこの研究論文は私の考えに証拠を追加しました。これは、Wi-Fi / Bluetoothを必要としない代替のワイヤレスホームオートメーションソリューションについて考え始めたときです。
Chirpを使用したホームオートメーションデバイスの新しいアプローチ
Wi-FiやBluetoothがなくても動作するIRリモートコントロールホームオートメーションプロジェクトを以前に構築しましたが、それはもはやクールではなく、音声でデバイスを制御したかったのです。Google home miniがスマートデバイスと直接通信する技術を探していたので、基本的にはWi-FiやBLEを使わないマシンツーマシンの無線通信方式が必要です。
チャープのCTOであるダン・ジョーンズへのインタビューで、チャープは「チャープは音波を使って情報を伝達する方法です。無線周波数を使用するWi-FiまたはBluetoothとは対照的に、Chirpは、RFチップなどの追加のハードウェアを必要とせずに、任意のコンピュータースピーカーを使用して再生(送信)し、任意のコンピューターマイクを介して受信できるトーンでデータをエンコードします。これにより、Chirpは、携帯電話、ラップトップ、PAシステムなど、スピーカーとマイクを搭載したあらゆる消費者向けデバイスで使用でき、YouTubeストリームやTV放送でも情報を送信できます。」これは、Google Home miniを使用して、スマートデバイスと直接(チャープを使用して)話すことができることを意味します。必要なのは、これらのスマートデバイス内のマイクとプロセッサで、チャープオーディオデータをデコードして必要なアクションを実行することです。 Chirpは最近、Arduinoのdata-over-soundの統合も発表しました。これは、新しいArduino nano 33BLEセンスボードを使用してプロジェクトのChirpSDKを実行できるようにする必要があることを意味します。
そのため、このプロジェクトでは、Wi-FiやBluetoothなどのワイヤレス接続を使用せずにこのスマートデバイスを制御できる音響ホームオートメーションデバイスを構築します。私たちは、使用するGoogleのためのアクションとDialogflowを、それがエンコードされたオーディオ(チャープ)を再生するには、弊社のGoogleのアシスタントのためのテスト・アプリケーションを構築します。このオーディオは、ChirpArduinoプログラムを実行しているArduinonano BLEセンスボードによってキャプチャされます。データにエンコードされたメッセージに基づいて、ArduinoボードはRGBLEDを制御するAC負荷の切り替えなどのアクションを実行できます。たくさんありますが、それは比較的簡単で、完全な手順を以下に示します。それでは始めましょう。
GoogleアシスタントでChirpAudioを再生する
音声制御のホームオートメーションを構築する最も簡単な方法は、ホームオートメーション用のGoogleアシスタントでIFTTTを使用することです。ただし、この記事の執筆時点では、ChripにはIFTTT上のアプレットがないため、Googleプラットフォーム用のネイティブアクションを使用します。この記事を読んでいるときに、ChirpがIFTTTで独自のアプレットを提供している可能性が高いので、それを確認してください。そうでない場合は、Actions forGoogleに進んでGoogleアシスタントアプリケーションを作成しましょう。
手順1: Dialogflowコンソールを開きます。まだサインアップしていない場合は、サインアップする必要があるかもしれません。次に、以下に示すように「CreateNewAgent」をクリックします。
ステップ2:新しいエージェントに名前を付けて、[作成]をクリックします。エージェントに「Circuitdgest_Automation」という名前を付けました
ステップ3:インテントセクションに移動します。ここで、さまざまな目的のために新しいエージェントをトレーニングします。この場合、2つのインテントを記述します。1つはライトをオンにすることで、もう1つはライトをオフにすることです。エージェントが理解する必要のあるアプリケーションとコマンドに基づいて、任意の数のインテントを作成できます。デフォルトではウェルカムインテントがありますが、「インテントの作成」をクリックしてライトをオンにする新しいインテントを作成し、このインテントにライトオンという名前を付けます。
新しいページで「トレーニングフレーズの追加」をクリックし、アシスタントが理解する必要のあるコマンド(この場合は「ライトをオンにする」)を入力します。同じ意図の意味を伝えるトレーニングフレーズをいくつでも書くことができます。
ステップ4:下にスクロールして、[応答の追加]をクリックします。ここで、この特定のインテントがトリガーされた場合に応答する方法をアシスタントに指示します。デフォルトでは、ここにテキストレスポンスを入力できますが、アシスタントで音声を再生する必要があるため、[デフォルト]タブの近くにある[+]記号をクリックして、Googleアシスタントを選択し、[レスポンスを追加]をオンにして、[シンプルレスポンス]を選択します」。単純な応答テキストボックス内にこのコードを入力します
これは、URLからオーディオを再生し、「LightsTurnedON」と言う単純なSSMLコードです。このオーディオは、Chirpからエンコードされたオーディオであり、jovo.techにアップロードされている必要があります。
チャープからエンコードされたオーディオを取得する:
このエンコードされたオーディオは、ChripAndroidアプリケーションから取得できます。アプリをインストールし、エンコードするメッセージを入力し、[送信]ボタンをクリックしてエンコードされた音声を聞きます
ここで「Lightson」と入力しました。同様に、任意のメッセージを入力し、[送信]ボタンをクリックして、エンコードされたオーディオを確認できます。その後、任意のサウンドレコーダーを使用してこのオーディオファイル(mp3形式)を保存できます。「ライトオン」と「ライトオフ」というエンコードされたメッセージを使用して、このような2つのオーディオファイルを録音しました。時間を節約したい場合は、ここからダウンロードできます。オーディオファイルの準備ができたら、jovo techオーディオコンバータに移動してmp3ファイルをアップロードし、そのリンクを取得します。
これはテストツールであり、ファイルは24時間のみ有効であることに注意してください。長期間動作させる必要がある場合は、このサンプルのFirebaseGoogleアシスタントインターフェースのようなGoogleFirebaseのような独自のウェブサーバーを使用する必要があります。リンクを取得したので、ダイアログフローでの応答は次のようになります。
このインテントを保存するには、必ず[保存]をクリックしてください。
ステップ5: 同様に、別の新しいインテントを作成して、ライトをオフにします。もう一度、トレーニングフレーズと応答を入力します。今回は、他のオーディオファイルのリンクを挿入し、以下に示すようにライトがオフになったことを伝えるように依頼します。
繰り返しますが、これも必ず保存してください。
ステップ6:次に、左側で[統合]タブをクリックし、[Googleアシスタント]を選択します。これは、Googleアシスタントを使用してアプリケーションをテストするのに役立ちます。Googleアシスタントアプリケーションを選択し、「テスト」をクリックします
ステップ7:これにはしばらく時間がかかります。その後、次のようなテスト画面が表示されます。左隅に、テストコマンドを入力して、アプリケーションがどのように応答するかを確認できるテキストボックスが表示されます。画面の左側にいくつかのデバッグアプリケーションもあります。
「読書灯をオンにする」と入力すると、チャープ音が鳴り、ライトがオンになったことを示します。これは、「読書灯をオフにする」の場合と同様です。ここで機能するようになったら、GmailIDに接続されているスマートフォンやGoogleHomeMiniなどのGoogleアシスタントデバイスで試すことができます。テストアプリに話しかけて、デバイスの制御を開始してください。
Arduino Nano33の準備
ハードウェア側では、Arduino Nano 33 BLESenseボードのおかげで物事がかなり簡単になりました。ボードには、ArduinoIDEから直接展開できるマイクとチャープライブラリが組み込まれているためです。このボードを初めて使用する場合は、この「Arduino Nano33BLE入門」の記事を読んで理解することをお勧めします。