リモートの代わりにスマートフォンでエアコンを制御する方法は?

現代の世界では、周りを見渡せば、電子機器を含むすべてがある程度自動化されていることがわかります。最新の自動化技術は、自宅の数人に採用されています。この現代では、人々は自分たちの生活を楽にするために最新の自動化技術を選ぶべきです。通常、私たちの家では、私たちは向きを変えます オンオフ エアコンの温度を手動で設定します。今日では、リレーモジュールのような単一のコンポーネントを使用して、家電製品の切り替え、セキュリティアラームの監視、ガレージドアの自動化など、家のさまざまな電子パラメータを制御できます。この記事では、リモートの代わりにモバイルアプリケーションを使用してエアコンを制御できるようにするシステム。アンドロイドモバイルは人々の間で最も一般的であるため、アンドロイドアプリケーションは私たちのエアコンを制御するための最良のオプションです。



エアコン制御

ESP32で必要なすべての周辺機器をセットアップする方法は?

プロジェクトを作成するには、プロジェクトを完了するために必要な基本的なコンポーネントが何であるかを知っている必要があります。したがって、作業を開始する前の優れたアプローチは、時間を節約し、プロジェクトの途中で立ち往生する可能性を回避するために、すべてのコンポーネントの完全なリストを作成することです。市場で簡単に入手できるすべてのコンポーネントの完全なリストを以下に示します。ハードウェアコンポーネントを配置した後、エアコンを制御するための独自のAndroidアプリケーションを設計します。



ステップ1:使用するコンポーネント(ハードウェア)

  • ESP32
  • MakerFocus I2COLEDディスプレイモジュール
  • 光依存抵抗器
  • 押しボタンスイッチ
  • IRレシーバー
  • 1Kオーム抵抗(x4)
  • BC 338NPNトランジスタ
  • ジャンパーケーブル
  • TSOPレシーバー
  • ブレッドボード
  • Android充電器

ステップ2:使用するコンポーネント(ソフトウェア)

私たちが作るつもりなので ワイヤレススイッチ 、オンとオフを切り替えるボタンが必要になります。携帯電話でこのボタンを操作したいので、そのためのアプリケーションを開発する必要があります。最も便利なアプリケーションはAndroidアプリケーションであり、そのアプリケーションに接続するには、これら2つのソフトウェアをインストールする必要があります。それらの両方を以下に示します。



  • Androidスタジオ
  • JAVA JDK

ステップ3:AndroidStudioをインストールする

インストールする前に Androidスタジオ 、最初にJAVAJDKをインストールします。これをインストールするには、をクリックします EXE ファイル 上記のリンクからダウンロードしたものを、正常にインストールされるまで[次へ]をクリックします。コマンドプロンプトが認識するように、次の手順を実行します java 外部または内部コマンドとして。



  1. 開いた コントロールパネル をクリックします システムとセキュリティ
  2. クリック システム。

    システム

  3. クリック 高度なシステム設定 次にをクリックします 環境変数。 高度なシステム設定

    高度なシステム設定

  4. [システム変数]セクションで、パスをクリックしてから[編集]をクリックします。新しい 環境変数の編集 ボックスが表示されます。

    パスの編集



  5. 今すぐに行きます C: Program Files Java あなたのPCで。 JDKフォルダーを開き、binフォルダーをクリックして、そのフォルダーのパスをコピーします。

    ビンフォルダのパス

  6. 次に、[環境変数の編集]ボックスに移動し、[新規]をクリックして新しい変数を作成します。上記の手順でコピーしたパスを新しい変数に貼り付けて保存します。
  7. 完全にインストールされているかどうかを確認するには、コマンドプロンプトを開いて、次のように入力します。 java –version。

    JAVAバージョン

これで、JavaJDKがコンピューターに正常にインストールされました。それでは、AndroidStudioをコンピューターにインストールしましょう。このソフトウェアのインストールは非常に簡単です。ダウンロードしたファイルを開き、ソフトウェアが完全にインストールされるまで[次へ]をクリックする必要があります。

ステップ4:Firebaseへの接続

Android Studioをインストールしたので、Android Studioを起動して、Firebaseに接続するための新しいプロジェクトを作成しましょう。これを行うには、次の手順に従います。

  1. Android Studioを起動し、をクリックして新しいプロジェクトを作成します。 空のアクティビティ
  2. プロジェクトに次の名前を付けます computerSwitc、 選択する Kotlin 言語として、携帯電話に応じて最小APIレベルを選択します。
  3. インターネットを使用してラズベリーパイのピンを制御するためです。アプリにローカルWi-Fiへのアクセス許可を設定します。これを行うには、に移動します アプリ>マニフェスト> AndroidManifest.xml 次のコマンドを追加します。

    インターネット許可

  4. 次に、nをクリックします ツール。 ドロップダウンメニューが表示され、そこから選択します Firebase。

    Firebase接続

  5. 画面の右側に大きなメニューが表示され、firebaseが提供しているほぼすべてのサービスのメニューが提供されます。しかし現在、私たちの主な焦点はリアルタイムデータベースです。したがって、Real-TimeDatabaseをクリックします。 「へのリンク データの保存と取得 ' 現れる。そのリンクをクリックしてください。

    FirebaseAssistant

  6. 接続する Firebaseに接続する ボタン。デフォルトのWebブラウザに移動します。まず、Gmailアカウントにログインするように求められます。次に、をクリックします リアルタイムデータベースをアプリに追加します 変更を受け入れます。
  7. 今すぐに行きます Firebaseコンソール 。そこには、すでに作成されたプロジェクトが表示されます。そのプロジェクトのアイコンのAndroidロゴは、それがすでにAndroidアプリケーションに属していることを意味します。
  8. から 発展させる 画面の左側に表示されるメニューで、 データベース。 のボタン データベースの作成 右側に表示されます。そのボタンをクリックします。
  9. データベースのモードを設定するように求めるメニューが表示されます。クリック テストモード 次にクリックします 有効にする

    テストモード

  10. 今覚えておくべき本当に重要なステップは変更することです Cloud Firestoreリアルタイムデータベース。 これを行うには、下の画像に示されているボタンをクリックして、目的のオプションを変更します。

    リアルタイムFirebase

  11. 次に、をクリックします ルール タブを押して、構成を次のように変更します 本当 。すべてが完了したら、をクリックします 公開する

    構成の変更

  12. Firebaseを接続する以外に行う必要があることの1つは、データベースのバージョンを更新することです。そのためには、をクリックしてください ドキュメントに移動 。今クリック ガイド 選択します Androidガイド 画面に表示されるリストから。表が表示されるまで下にスクロールします。そのテーブルでReal-TimeDatabaseを探し、そのバージョンを見つけます。私の場合は 19.1.0。

    バージョン

  13. 。クリック Gradleスクリプト、 画面左側のメニュー。次に、 構築されました。 gradle(モジュール:アプリ)。 コードで、Real-Timeデータベースのバージョンを検索し、新しいバージョンに置き換えます。

    Firebaseバージョン

  14. 次に、画面の上部に表示される同期ボタンをクリックして、プロジェクトを同期します。

ステップ5:レイアウトを作成する

これで、AndroidアプリケーションがFirebaseに接続されたので、ユーザーがコンピューターのオンとオフを切り替えるために使用するアプリのレイアウトを作成しましょう。レイアウトを作成するには、 アプリ>解像度>レイアウト> activity_main.xml。 ここでレイアウトを設計します。以下のコードをコピーして、テキストビューを作成します。

 

アプリのレイアウトは次のようになります。

アプリケーションのレイアウト

ステップ6: ESP32入門

Arduino IDEを使用したことがない場合でも、ArduinoIDEをセットアップするためのステップバイステップを以下に示しますのでご安心ください。

  1. ArduinoIDEの最新バージョンをからダウンロードします アルドゥイーノ。
  2. ArduinoボードをPCに接続し、コントロールパネルを開きます。クリック ハードウェアとサウンド。 開催中 デバイスとプリンター ボードが接続されているポートを見つけます。私の場合は COM14 しかし、それはコンピュータによって異なります。

    ポートを見つける

  3. [ファイル]をクリックしてから、[設定]をクリックします。次のリンクをコピーします 追加のボードマネージャーのURL。 「「 https://dl.espressif.com/dl/package_esp32_index.json '

    環境設定

  4. ここで、Arduino IDEでESP32を使用するには、ESP32でコードを書き込んで使用できるようにする特別なライブラリをインポートする必要があります。これらの2つのライブラリは、以下のリンクに添付されています。ライブラリを含めるには、[ スケッチ>ライブラリを含める> ZIPライブラリを追加 。ボックスが表示されます。コンピューターでZIPフォルダーを見つけ、[OK]をクリックしてフォルダーを含めます。

    ライブラリを含む

  5. 今すぐに行きます スケッチ>ライブラリを含める>ライブラリを管理します。

    ライブラリを管理する

  6. メニューが開きます。検索バーに「 ArduinoJSON。 リストが表示されます。インストール BenoitBlanchonによるArduinoJSON。

    Arduino JSON

  7. 次に、をクリックします ツール。 ドロップダウンメニューが表示されます。ボードをに設定します ESPDevモジュール。

    ボードの設定

  8. [ツール]メニューをもう一度クリックし、前にコントロールパネルで確認したポートを設定します。

    設定ポート

  9. 次に、以下のリンクに添付されているコードをアップロードし、アップロードボタンをクリックして、ESP32マイクロコントローラーでコードを書き込みます。

    アップロード

そのため、コードをアップロードするときにエラーが発生する可能性があります。これは、新しいバージョンのArduinoIDEとArduinoJSONを使用している場合に発生する可能性のある最も一般的なエラーです。画面に表示される可能性のあるエラーは次のとおりです。

C: Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h:8:0から、C: Users  Pro  Desktop  airconditioner  code  code.ino:2からインクルードされたファイル:C : Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h:14:11:エラー:StaticJsonBufferはArduinoJson 5のクラスです。プログラムをArduinoJsonにアップグレードする方法については、arduinojson.org / upgradeを参照してください。バージョン6StaticJsonBuffer jsonBuffer; ^ C: Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h:8:0から、C: Users  Pro  Desktop  airconditioner  code  code.ino:2からインクルードされたファイル: C: Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h:65:11:エラー:StaticJsonBufferはArduinoJson 5のクラスです。プログラムをにアップグレードする方法については、arduinojson.org / upgradeを参照してください。 ArduinoJsonバージョン6はStaticJsonBuffer()。parseObject(_data);を返します。 ^「WiFi.h」に複数のライブラリが見つかりました使用済み:C: Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFi未使用:C: Program Files( x86) Arduino  libraries  WiFiフォルダー内のバージョン1.0のライブラリWiFiを使用:C: Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFiライブラリIOXhop_FirebaseESP32-masterを使用フォルダー内:C: Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-マスター(レガシー)フォルダー内のバージョン1.2でライブラリHTTPClientを使用:C: Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  HTTPClientフォルダー内のバージョン1.0でライブラリWiFiClientSecureを使用:C: Users  Pro  AppData  Local  Arduino15  packages  esp32  hardware  esp32  1.0.2  libraries  WiFiClientSecureライブラリArduinoJsonを使用フォルダ内のバージョン6.12.0:C: Users  Pro  Documents  Arduino  libraries  ArduinoJson終了ステータス1ボードESP32DevModuleのコンパイル中にエラーが発生しました。

いくつかの簡単な手順に従うことでこれらのエラーを排除できるため、心配する必要はありません。これらのエラーは、ArduinoJSONの新しいバージョンに代わりに別のクラスがあるために発生しています StaticJsonBuffer。 これは実際にはJSON5のクラスです。したがって、ArduinoIDEのArduinoJSONのバージョンをダウングレードすることで、このエラーを簡単に排除できます。単にに行く スケッチ>ライブラリを含める>ライブラリを管理します。 検索する BenoitBlanchonによるArduinoJSON 以前にインストールしたもの。最初にアンインストールしてから、バージョンをに設定します 5.13.5。 Arduino JSONの古いバージョンを設定したので、それを再度インストールしてコードを再コンパイルします。今回は、コードが正常にコンパイルされます。

ステップ7:コードを理解する

このプロジェクトのコードは非常に単純で、以下に簡単に説明します。さらに、必要なライブラリを含むコードは、からダウンロードすることもできます。 ここに。

1.最初に、コードをFirebaseデータベースに接続するために使用される2つのライブラリと、マイクロコントローラーでIRセンサーを使用するための2つ目のライブラリを含める必要があります。次に、Firebaseのホストと認証を追加します。その後、 ESP32 私たちを見つけることができるだろう データベース 。次に、ローカルインターネット接続のSSIDとパスワードを提供します。次に、クラウドからデータをプッシュおよびポップできるようにオブジェクトを作成する必要があります。次に、センサーを接続するピンを定義し、IRセンサーからのデータを処理するオブジェクトも作成します。

#include #include #include #define FIREBASE_HOST'coma-patient.firebaseio.com '#define FIREBASE_AUTH'UrzlDZXMBNRhNdc5i73DRW10KFEuw8ZPEAN9lmdf' #define WIFI_SSID'PRO '#define WIFI_PASSWORD'abcdefgh' FirebaseData firebase; int RECV_PIN = 19; IRrecv irrecv(RECV_PIN); decode_resultsの結果;

2.2。 void setup() は、イネーブルボタンが押されたとき、またはマイクロコントローラの電源がオンになったときに実行されるループです。ここでは、IRセンサーの受信機を起動し、マイクロコントローラーをローカルインターネット接続に接続し始めるためのコードを記述します。

void setup(){Serial.begin(115200); pinMode(RECV_PIN、INPUT); irrecv.enableIRIn(); //受信機を起動します// wifiに接続します。 WiFi.begin(WIFI_SSID、WIFI_PASSWORD); Serial.println( '接続'); while(WiFi.status()!= WL_CONNECTED){Serial.print( '。'); delay(500); } Serial.println(); Serial.print( '接続済み:'); Serial.println(WiFi.localIP()); Firebase.begin(FIREBASE_HOST、FIREBASE_AUTH); Firebase.enableClassicRequest(firebaseData、true); }

3.3。 void loop() ループで繰り返し実行される関数です。ここで、このコードは、値がセンサーからのものであるかどうかをチェックしています。

void loop(){if(irrecv.decode(&results)){Serial.println(results.value、HEX); dump(&results); irrecv.resume(); //次の値を受け取ります} delay(500); }

四。 void dump() は、センサーに信号を送信しているリモコンのモデルを最初に識別するために使用される機能です。また、decode_results構造体をダンプします。

void dump(decode_results * results){int count = results-> rawlen; if(results-> decode_type == UNKNOWN){Serial.print( '不明なエンコーディング:'); } else if(results-> decode_type == NEC){Serial.print( 'デコードされたNEC:'); } else if(results-> decode_type == SONY){Serial.print( 'デコードされたSONY:'); } else if(results-> decode_type == RC5){Serial.print( 'デコードされたRC5:'); } else if(results-> decode_type == RC6){Serial.print( 'Decoded RC6:'); } to else if(results-> decode_type == PANASONIC){Serial.print( 'Decoded PANASONIC-Address:'); Serial.print(results-> panasonicAddress、HEX); Serial.print( '値:'); } else if(results-> decode_type == JVC){Serial.print( 'デコードされたJVC:'); } Serial.print(results-> value、HEX); Serial.print( '('); Serial.print(results-> bits、DEC); Serial.println( 'ビット)'); Serial.print( 'Raw('); Serial.print(count、DEC); Serial.print( '):'); for(int i = 0; i rawbuf [i] * USECPERTICK、DEC); } else {Serial.print(-(int)results-> rawbuf [i] * USECPERTICK、DEC); } Serial.print( ''); } Serial.println( ''); }

ステップ8: ハードウェアの準備

コードをESP32に書き込んだ後、ハードウェアを準備し、壁またはエアコンの近くの他の適切な場所に取り付ける必要があります。上部に示されている図に従って、コンポーネントをブレッドボードに取り付けます。回路を組み立てた後、Android充電器を使用してESPモジュールの電源を入れます。自宅でハードウェアのケーシングを設計するか、単にハードウェアをRaspberryPiケースの中に入れることをお勧めします。

ステップ9: G 最後の仕上げをする

ハードウェアを組み立てた後、テストします。 Android充電器をESP32に接続して電源を入れ、スマートフォンにローカルの信号強度が十分にあることを確認します インターネット接続 。アプリケーションを開いてボタンを押すと、モバイルアプリケーションでACを制御できるようになります。

今日はこれですべてです。この記事を楽しんでいただければ幸いです。自宅でエアコンを制御するための独自のプロトタイプを作成した後は、経験を共有することを忘れないでください。