工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduinoに話しかけ、Googleアシスタントで制御する

コンポーネントと消耗品

>
Arduino UNO
× 1
Espressif ESP8266 ESP-01
× 1

アプリとオンラインサービス

>
Arduino IDE
Microsoft Visual Studio 2017

このプロジェクトについて

このプロジェクトでは、インターネットサービスとArduinoボードを接続する方法を学びます。この記事の最後に、次のことを行います。

  • Googleアシスタントからデータを取得する方法を知っている
  • IFTTTプロトコルの使用方法を知っている
  • Webhookとhttpリクエストに精通している
  • Arduinoと話すことができる

<図>

GoogleアシスタントとIFTTTアプレット

Googleアシスタントは、Googleが開発した人工知能を利用した仮想アシスタントで、主にモバイルデバイスとスマートホームデバイスで利用できます。会社の以前の仮想アシスタントであるGoogleNowとは異なり、Googleアシスタントは双方向の会話を行うことができます。それはあなたの言葉をどのデバイスよりもよく認識し、あなたのコマンドに素早くそして正しく反応することができます。キーボード入力もサポートされていますが、ユーザーは主に自然な音声でGoogleアシスタントを操作します。 Google Nowと同じ性質と方法で、アシスタントはインターネットの検索、イベントとアラームのスケジュール設定、ユーザーのデバイスのハードウェア設定の調整、ユーザーのGoogleアカウントからの情報の表示を行うことができます。 Googleはまた、アシスタントがデバイスのカメラを介してオブジェクトを識別し、視覚情報を収集し、商品の購入と送金、曲の識別をサポートできるようになることを発表しました。

If This Then Thatは、IFTTTとも呼ばれ、アプレットと呼ばれる単純な条件ステートメントのチェーンを作成するための無料のWebベースのサービスです。アプレットは、Gmail、Facebook、Telegram、Instagram、Pinterestなどの他のWebサービス内で発生する変更によってトリガーされます。たとえば、アプレットは、ユーザーがハッシュタグを使用してツイートした場合に電子メールメッセージを送信したり、誰かが写真のユーザーにタグを付けた場合にFacebookの写真をユーザーのアーカイブにコピーしたりできます。 Webベースのアプリケーションに加えて、このサービスはiOSとAndroidで実行されます。 2015年2月、IFTTTは元のアプリケーションの名前をIFに変更し、ユーザーがショートカットアプリケーションとアクションを作成できるDoと呼ばれる新しいアプリスイートをリリースしました。 2015年の時点で、IFTTTユーザーは毎日約2,000万のレシピを作成しています。その後、Doスイートのアプリのすべての機能が、再設計されたIFTTTアプリに統合されました。

<図>

WebhookとJSONコンテンツ

Web開発におけるWebhookは、カスタムコールバックを使用して、WebページまたはWebアプリケーションの動作を拡張または変更する方法です。これらのコールバックは、元のWebサイトまたはアプリケーションと必ずしも提携していない可能性があるサードパーティのユーザーおよび開発者によって維持、変更、および管理される場合があります。 「webhook」という用語は、2007年にコンピュータプログラミング用語のフックからJeffLindsayによって造られました。

コンピューティングでは、JavaScript Object Notation(JSON)は、人間が読めるテキストを使用して、属性と値のペアと配列データ型(またはその他のシリアル化可能な値)で構成されるデータオブジェクトを送信するオープンスタンダードのファイル形式です。これは、一部のAJAXスタイルのシステムでXMLの代わりとして使用されるなど、非同期のブラウザとサーバーの通信に使用される非常に一般的なデータ形式です。

<図>

ArduinoのGoogleアシスタント

このプロジェクトでは、GoogleアシスタントからArduinoシリアルポートに文字列を送信することで、I / Oピン、PWM、シリアルポートなどのArduinoのさまざまな部分を制御したいと考えています。まず第一に、私たちが何を意味するのかを知るために、Googleアシスタントのためにいくつかの特定のフレーズを定義する必要があります。次に、IFTTT Webサイトでアプレットを作成し、Googleアシスタントとデータベースを接続します。その後、ESP8266モジュールでデータベースからデータを読み取り、Arduinoに送信します。始めましょう!

回路

<図>

実装

まず、Googleアシストを実行するためのデバイスが必要です。 Assistant.google.comにアクセスして、アシスタントをサポートするすべてのデバイスを確認してください。このプロジェクトでは、Androidフォンデバイスを使用します。 ifttt.comを開き、アカウントを作成します。サインインした後、[マイアプレット]をクリックしてから、[新しいアプレット]をクリックします。これで、アプレットにこれとしてサービスを追加できます。これをクリックして、Googleアシスタントを検索してください。グーグルアシストのフレーズを定義するための4つの選択肢があります。数字の成分を含むフレーズを選択してください。次のページであなたはあなたのフレーズを追加することができます。たとえば、「ピン9のPWMを255に設定」と言います。フレーズとして入力し、「255」を「#」記号に置き換えてください。 「PWM9〜255」のように同じ意味のフレーズを追加できます。次に、応答を追加して、コマンドが理解され、必要なアクションが実行されたことをGoogleアシスタントが通知できるようにします。たとえば、「PWMが更新されました」などです。完了したら、[トリガーの作成]をクリックします。アプレットの「THAT」部分には、「Webhooks」のフォーム検索を選択してそれを選択するための多くのサービスがあります。 [ウェブリクエストを作成]をクリックします。データを受信するサーバーのURLを追加します。POSTでメソッドを設定し、コンテンツタイプとしてApplication / jsonを選択します。次に、コンテンツの本文を追加する必要があります。次のようになります。{“ Number”:” { {NumberField}}”}。次に、[アクションの作成]をクリックします。

<図>

サーバーとデータベース

IFTTTからデータを取得してデータベースに保存するサーバーのサンプルコードを記述します。モデルを変更して、データを関心のあるものとして保存することができます。こちらからダウンロードしてください。

ESP8266とArduinoコード

まず、データベースからデータを取得し、シリアルポート経由でArduinoに送信するESP-01のコードを記述します。次に、Arduinoに別のコードを記述して、ESP-01からデータを取得し、コマンドを実行します(たとえば、PWMを変更します)。 Arduino IDEを使用して、両方のコードをコンパイルし、ボードにアップロードできます。

ArduinoJsonライブラリを使用する前に、ライブラリがコンピュータにインストールされていることを確認する必要があります。簡単に確認するには、Arduino IDEのライブラリマネージャーに移動し([スケッチ]> [ライブラリを含める]> [ライブラリの管理])、名前の横に緑色の「インストール済み」ラベルが表示されている場合は、テキストボックスに「ArduinoJson」と入力します。ライブラリ、つまり、すべての準備が整っており、次のステップに進むことができます。ラベルが表示されない場合は、ボックス/分割を1回クリックすると、[インストール]ボタンが表示されます。インストールを押すと、次のステップに進む準備が整います。

<図>

次に、このコードをESP-01にアップロードします

  #include "ESP8266WiFi.h" #include "ESP8266HTTPClient.h" #include "ArduinoJson.h" // WiFiパラメーターconstchar * ssid ="YOUR_SSID"; const char * password ="YOUR_PASSWORD"; void setup (){Serial.begin(115200); WiFi.begin(ssid、password); while(WiFi.status()!=WL_CONNECTED){delay(1000); Serial.println( "接続中..."); }} void loop(){// WiFiステータスを確認するif(WiFi.status()==WL_CONNECTED){HTTPClient http; //クラスHTTPClientのオブジェクトhttp.begin( "http:// yourip / api / Home / GetAllApp"); int httpCode =http.GET(); //返されるコードを確認しますif(httpCode> 0){//要求応答ペイロードを取得しますStringpayload =http.getString(); // TODO:Serial.println(payload);の解析} http.end(); //接続を閉じる} // Delay delay(3000);}  

これは、ArduinoがGoogleアシスタントから注文を取得して実行するためのコードです。

  String inputString =""; //受信データを保持する文字列Stringbuff; bool stringComplete =false; //文字列が完全かどうかboolid; int f、buf; char x; void setup(){//シリアルを初期化します:Serial.begin(9600); // inputString用に200バイトを予約します:inputString.reserve(200);} void loop(){//改行が到着したときに文字列を出力します:if(stringComplete){while(f <100){if(inputString.substring( f)=="id"){id =true;壊す; } f ++; } if(id ==true){x =inputString.charAt(f + 4); } if(x =='4'){f =0; while(f <100){if(inputString.substring(f)=="number"){f + =9; for(int i =0; i <3; i ++){if(inputString.charAt(f + i)=='"')i =3; else buff + =inputString.charAt(f + i);} buf =buff.toInt(); analogWrite(9、buf); break;} f ++;}} //文字列をクリアします:inputString =""; stringComplete =false;}} void serialEvent(){while(Serial.available()) {//新しいバイトを取得します:char inChar =(char)Serial.read(); // inputStringに追加します:inputString + =inChar; //着信文字が改行の場合、メインループになるようにフラグを設定します//それについて何かをすることができます:if(inChar =='\ n'){stringComplete =true;}}}  

<図>

次は何ですか?

このプロジェクトは必要に応じて改善できます。ここにいくつかの提案があります:

  • 出力ピンの制御など、お気に入りのコマンドを追加してみてください。リレーモジュールを使用して、部屋の照明を制御できます。
  • ArduinoからGoogleアシスタントにデータを送信してみてください。

製造プロセス

  1. QR、RFID、温度検証によるアクセス制御
  2. Arduino、1Sheeld、Androidを使用したユニバーサルリモコン
  3. Arduinoでコインアクセプターを制御する
  4. LEDを制御するBluetoothを搭載したArduino!
  5. Arduino Nano:ジョイスティックで2つのステッピングモーターを制御
  6. ArduinoとMPU6050によるサーボモーターの制御
  7. OKGoogleのBluetooth音声制御アプライアンス
  8. u-blox LEA-6H 02GPSモジュールとArduinoおよびPython
  9. Arduinoによる音声認識と合成
  10. ThimbleKrox-指でマウスを操作する
  11. ArduinoとGoogleスプレッドシートに基づく出席システム