J.A.R.V.I.S. :バーチャルホームアシスタント
コンポーネントと消耗品
> ![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
必要なツールとマシン
> ![]() |
| |||
![]() |
|
アプリとオンラインサービス
> ![]() |
| |||
![]() |
| |||
| ||||
| ||||
![]() |
|
このプロジェクトについて
スマートホームの問題に取り組む理由
何が新しいのですか? <図>

なぜそれを作ることにしたのですか? <図>

<図>

<図>

<図>

<図>

作業中
デジタルエネルギーメーター
<図>
<図>


AI仮想アシスタント
信号の流れは次のとおりです:
- 1。 Androidアプリへの音声入力
- 2。 Androidアプリでの処理
- 3。 Bluetooth経由で暗号化されたデータをArduinoに送信します。
- 4。 Arduino101での処理
- 5。中継するデジタル信号
ピン接続:
- ピン8-> PulseIn [デジタル入力]
- ピン6-> IN1->ファン出力
- ピン4-> IN2->光出力
- ピン5-> IN3->コーヒーメーカー





<図>


エネルギーメーターの接続:
- メーターを電源に接続します。
- エネルギーメーターを黒いテープで覆い、エネルギーメーター内部のLDRが外光から当たらないようにします。
- 中性線を負荷に直接接続し、相線をリレーに接続します。
- メーターの外側のLDRからカウンター回路までの配線を取ります。
- ここで、コードのように、カウンタ回路から割り当てられたピン8パルスピンに出力を受け取ります。
- Arduino 101のTX、RXピンをGSMモジュールのRX、TXピンに接続します。
- コードを書き込んだ後、ボードの電源を入れます。
回路図 <図>

使用するハードウェアと機器:
- 内部エネルギーメーター:LDR光依存抵抗器
- GSMモジュール
- カウンター回路:ポテンショメータ、IC LM358N
- Arduino 101
- BlueTooth-HC05モジュール
- PIC AVRARM用のオプトカプラーを備えた4チャンネル12V10Aリレー制御ボードモジュール
プログラミングプラットフォーム
- ・Arduino 101のプログラミングには、デフォルトのArduinoIDEを使用しました。
- ・Android Studio(JAVAおよびXML)を使用してAndroidアプリを開発しました。
- ・データベース接続は、GoogleのFirebaseを使用して行われます。
- ・拡張現実のために、VuforiaSDKとともにUnityを使用しました。
実装:
- すべてのコンポーネントがArduinoに読み取り値を提供します。ここで、バイトを効率的かつ迅速にコンピューターに送信するために、これらの読み取り値を文字コードに変換します。無限ループ内では、すべての読み取り値が文字に対応します。
- シリアルポートを介してarduinoから送信されているデータを受信するには、コンピューターでコードを実行する必要があります。
- Androidアプリの開発には、Android Studioを使用し、音声をテキストに変換するには、標準のGoogleAPIを使用しています。
- 音声認識では、Androidアプリの話者に依存しない音声認識に音響音声音声パラメータを使用しています。
- 自然言語処理を実装するためにPythonを使用するCNN(畳み込みニューラルネットワーク)などの深層学習技術を使用するAI(人工知能)仮想アシスタントがあります。
- 拡張現実アプリには、Unity IDEとVuforiaSDK(拡張現実アプリケーションの作成を可能にするモバイルデバイス用の拡張現実ソフトウェア開発キット(SDK))を使用しています。
ビデオ
便利なリンク:
コード
- デジタルエネルギーの読み取りとコスト計算のためのArduinoコード
- Arduinoを使用してリレーするJARVIS接続を実装するArduino
デジタルエネルギーの読み取りとコスト計算のためのArduinoコード Arduino
このコードは、Arduinoに接続されたアプライアンスによって消費されるエネルギー単位を実装します。手順 :
1.接続を確立し、Arduinoコードに携帯電話番号を挿入します
2.コードをArduino101にアップロードします
3.コードを実行します
4.任意の携帯電話からコードで指定された携帯電話番号に#anytext *の形式でSMSを送信します
5.消費されたユニットとコストを含む応答が受信されます
#includeLiquidCrystal lcd(7,6,5,4,3,2); int led =13; // 13番目のピンのLEDをデクレリングします#definepulsein 8 //パルス入力ピン8を定義しますunsignedint pusle_count =0; //パルスカウントタイプをintegerfloatunits =0として宣言します。 //ユニットをFloatunsignedint rupees =0として宣言します。 //ルピー型をunsignedintegerとして宣言unsignedint temp =0、i =0; // temp&iをunsigned integerchar str [70]、flag1 =0、flag2 =0として宣言します。 //文字列としての文字の長さとフラグの宣言voidsetup(){lcd.begin(16,2); // LCDタイプを16x2として初期化Serial.begin(9600); //シリアルボーレートを9600として初期化pinMode(led、OUTPUT); pinMode(pulsein、INPUT); digitalWrite(pulsein、HIGH); lcd.setCursor(0,0); lcd.print( "ワイヤレスエネルギー"); lcd.setCursor(0,1); lcd.print( "メーター"); delay(2000); lcd.clear(); lcd.print( "By"); delay(2000); lcd.clear(); lcd.print( "GSM Initilizing ..."); gsm_init(); lcd.clear(); lcd.print( "システムレディ"); Serial.println( "AT + CNMI =2,2,0,0,0"); init_sms(); send_data( "システムレディ"); SMSを送信(); delay(1000); digitalWrite(led、LOW); lcd.clear();} void loop(){serialEvent(); //シリアルイベントのチェックunits =rupees / 5.0; //単位の計算lcd.setCursor(0,0); lcd.print( "単位:"); lcd.print(units); lcd.print( ""); lcd.setCursor(0,1); lcd.print( "ルピー:"); lcd.print(ルピー); lcd.print( ""); read_pulse(); if(temp ==1){check(); }} void serialEvent()//着信SMSを受信およびチェックするためのシリアルイベント{while(Serial.available()){if(Serial.find( "#")){digitalWrite(led、HIGH); delay(1000); digitalWrite(led、LOW); while(Serial.available()){char inChar =Serial.read(); str [i ++] =inChar; if(inChar =='*'){temp =1;戻る; }}}}} void init_sms()//メッセージ送信の初期化と設定{Serial.println( "AT + CMGF =1"); delay(200); Serial.println( "AT + CMGS =\"ここに携帯電話番号を挿入\ ""); delay(200);} void send_data(String message){Serial.println(message); delay(200);} void send_sms(){Serial.write(26);} //エネルギーメーターからのパルスの読み取りvoidread_pulse(){if(!digitalRead(pulsein)){digitalWrite(led、HIGH);ユニット++;ルピー=単位* 5; while(!digitalRead(pulsein)); digitalWrite(led、LOW); }} //メッセージのステータスの確認voidcheck(){if(!(strncmp(str、 "units"、5))){Serial.println( "AT + CMGF =1"); delay(200); Serial.println( "AT + CMGS =\"ここに携帯電話番号を挿入\ ""); delay(200); lcd.setCursor(0,1); send_data( "エネルギーメーター単位:"); Serial.println(単位); send_data( "\ nRupees:"); Serial.println(ルピー); delay(200); Serial.write(26); flag1 =1; flag2 =1; temp =0; }} void message_sent(){lcd.clear(); lcd.print( "送信されたメッセージ。"); delay(1000);} void gsm_init(){lcd.clear(); lcd.print( "Finding Module .."); boolean at_flag =1; while(at_flag){Serial.println( "AT"); while(Serial.available()> 0){if(Serial.find( "OK"))at_flag =0; } delay(1000); } lcd.clear(); lcd.print( "Module Connected .."); delay(1000); lcd.clear(); lcd.print( "ECHOの無効化"); boolean echo_flag =1; while(echo_flag){Serial.println( "ATE0"); while(Serial.available()> 0){if(Serial.find( "OK"))echo_flag =0; } delay(1000); } lcd.clear(); lcd.print( "Echo OFF"); delay(1000); lcd.clear(); lcd.print( "ネットワークの検索.."); boolean net_flag =1; while(net_flag){Serial.println( "AT + CPIN?"); while(Serial.available()> 0){if(Serial.find( "+ CPIN:READY"))net_flag =0; } delay(1000); } lcd.clear(); lcd.print( "Network Found .."); delay(1000); lcd.clear();}
Arduino Arduino を使用してリレーするJARVIS接続を実装するArduino
これは、AndroidアプリとArduino間の文字のシリアルBluetooth転送を実装するコードです。#define CH3 7#define CH4 4#define CH5 5#define CH6 6 void setup(){Serial.begin(9600); pinMode(CH3、OUTPUT); pinMode(CH4、OUTPUT); pinMode(CH5、OUTPUT); pinMode(CH6、OUTPUT); //両方のLEDに電力を供給します//リレーチャネルへの電力をオフにしますdigitalWrite(CH3、HIGH); digitalWrite(CH4、HIGH); digitalWrite(CH5、HIGH); digitalWrite(CH6、HIGH); delay(2000); //シーケンスを開始する前に2秒待ちます} void loop(){delay(100); if(Serial.available()){// Serial.println(sum1); char c =Serial.read(); Serial.print(c); if(c =='b'){//コーヒーオフ} else if(c =='c')//ライトオン{digitalWrite(CH4、LOW); delay(100);} else if(c =='d')// fan on {digitalWrite(CH6、LOW); delay(100);} else if(c =='k')//コーヒーon {digitalWrite(CH5、LOW); delay(100);} else if(c =='g')//コーヒーオフ{digitalWrite(CH5、HIGH); delay(100);} else if(c =='e')//消灯{digitalWrite(CH4、HIGH); delay(100);} else if(c =='f')//ファンオフ{digitalWrite(CH6、HIGH); delay(100);} else if(c =='z')//さようなら{digitalWrite(CH6、HIGH); digitalWrite(CH4、HIGH); digitalWrite(CH3、HIGH); digitalWrite(CH5、HIGH); delay(500); digitalWrite(CH5、LOW); delay(500); digitalWrite(CH5、HIGH); delay(500); digitalWrite(CH5、LOW); delay(500); digitalWrite(CH5、HIGH); delay(10000); }}}
カスタムパーツとエンクロージャー
手順 : 1.アプリをダウンロードしてインストールします
2.電話がインターネットに接続されていることを確認します
3.アプリを起動し、Vuforiaで構成されたアプライアンスをポイントします(ここではデフォルトのVuforiaマーカーが使用されます)
4.アプライアンスが起動する必要があります
5.アプライアンスの電源を切るには、電話をデバイスに向けるたびに画面に表示される仮想ボタンをクリックします jarvisaugmented_I2zWAu2jGG.apk
回路図

手順 :
1.Android携帯にアプリをインストールします
2.ハードウェアをセットアップして正常に実行した後、アプリを起動します
3. Virtual Assistant(Voice)を使用するには、キーワード「ListenUpJARVIS」と言います。これにより、エージェントがアクティブ化されます
3.1コマンドを明確に話す
3.2エージェントは応答を提供する必要があります
4.拡張現実アプリを起動するには、拡張ボタンをクリックします。空白の画面が表示されます
4.1別の電話でJarvisAugmentedアプリを開きます(注:J.A.R.V.I.S。androidアプリは別の電話にある必要があります)
4.2拡張現実を実装するためにJarvisAugmentedで与えられた指示に進みます
注:1。アプリがいずれかの時点でスタックしている場合は、アプリを再起動してみてください
2.「マイクを開けませんでした」のようなメッセージが画面に表示されたら、アプリを再起動します
3.このアプリは、プロジェクトの範囲を拡大するためにHC05Bluetoothモジュールを使用して実装されます。したがって、HC05Bluetoothモジュールをお勧めします
製造プロセス