ESP32モジュールを使用してスマートホームオートメーションシステムを作成するにはどうすればよいですか?

この現代では、ホームオートメーションの概念は急速に成長しています。スマートシステムは、ほぼすべての場所にインストールされています。スマートホームシステムは、すべての電化製品またはデバイスが単一のリモコンを使用して制御されるという概念です。これらのシステムでは、ほとんどの場合、リモートコントロールはモバイルアプリケーションです。アンドロイドモバイルは人々の間で最も一般的であるため、アンドロイドアプリケーションはこれらすべてのデバイスを制御するための最良のオプションです。



ホームオートメーション

そのため、このプロジェクトでは、家庭用電化製品の一部をリレーモジュールに接続し、ESP32マイクロコントローラーを介して制御します。 Firebaseリアルタイムデータベースを作成し、Androidアプリから接続します。このAndroidアプリはデータをクラウドに送信し、次にマイクロコントローラーに送信して電化製品のオンとオフを切り替えます。最良の部分は、世界中のどこからでもアプライアンスの切り替えを完全に制御できることです。 Androidアプリケーションを操作するには、インターネット接続が必要です。



WiFiを介して家電製品を制御する方法は?

すでに市場で入手可能なホームオートメーションシステムは、非常に高価です。 ESP32ボードを使用して、さまざまな家電製品を接続し、Androidアプリを使用してそれらを制御できます。これは非常に低コストで、家を自動化する効率的な方法になります。それでは、一歩先に進み、プロジェクトを開始するための情報の収集を開始しましょう。



ステップ1:コンポーネントの収集

プロジェクトを開始するための最良のアプローチは、コンポーネントのリストを作成し、これらのコンポーネントの簡単な調査を行うことです。コンポーネントが不足しているという理由だけでプロジェクトの途中にとどまりたくないからです。このプロジェクトで使用するコンポーネントのリストを以下に示します。



  • ESP32
  • ブレッドボード
  • 接続線

ステップ2:コンポーネントの調査

このプロジェクトの概要がわかったところで、一歩先に進み、使用する主要コンポーネントの動作について簡単に説明します。

ESP32 は、WiFiとデュアルモードBluetoothモジュールを内蔵した低電力で低コストのマイクロコントローラーボードです。このマイクロコントローラーボードは、によって作成および開発されています Espressif Systems 。このボードには、パワーアンプ、ローニース受信アンプ、フィルター、アンテナスイッチが組み込まれています。これは、Androidデータケーブルから電力を供給され、出力で最大3.3Vを提供できます。 ESP32は、TCP / IP、完全な802.11 b / g / n / e / I WLAN MAC規則、およびWi-FiDirectを実行します。これは、ESP 32をステーション(クライアント)モードで使用すると、WiFiルーターの大部分をアドレス指定できることを意味します。同様に、完全な802.11 b / g / n / e / Iでアクセスポイントを作成できます。 ESP32は、最新のBLE Bluetooth 4.2を単にサポートするだけでなく、優れたBluetoothをさらに強化します。これは基本的に、新旧のBluetooth電話/テーブルに対応できることを意味します。 ESP32モジュールがない場合は、ESP8266またはノードMCUを使用することもできます。これらのボードは、WiFiに接続されている場合、同じタスクを実行するために使用できます。

ESP32



リレーモジュールはスイッチングデバイスです。 2つのモードで動作します。 ノーマルオープン(NO) そして 通常は クローズ(NC) 。 NOモードでは、Arduinoを介してリレーにHIGH信号を送信しない限り、回路は常に壊れています。 NCモードは逆に悪化します。リレーモジュールをオンにしない限り、回路は常に完全です。以下に示す方法で、電気器具のプラス線をリレーモジュールに接続していることを確認してください。

リレーモジュール回路の組み立て

ステップ3:ブロック図

ブロック図

上のブロック図に、このプロジェクトのフローを示します。リレーは、家庭の電化製品またはデバイスに接続されています。モバイルアプリケーションは、 オン または オフ データベースへのコマンド。このクラウドは、WiFiを介してESP32マイクロコントローラーボードに接続されています。電子デバイスをオンにするには、データベースに「1」を送信し、オフにするには、データベースに「0」を送信します。このコマンドはデータベースにも接続されているため、マイクロコントローラーによってフェッチされます。この0または1に基づいて、マイクロコントローラーはリレーモジュールをオンまたはオフに切り替え、最終的には電気器具の切り替えを行います。

したがって、ここでは、この記事では、2つのリレーモジュールを使用して手順全体を示します。ただし、より多くの電気家電を制御したい場合は、リレーの数を増やして、プログラムに同じコードのチャンクを追加することができます。

ステップ4:コンポーネントを組み立てる

このプロジェクトで何をしたいのか明確なビジョンができたので、もう時間を無駄にせずにコンポーネントの組み立てを始めましょう。

  1. ブレッドボードを取り、ESP32マイクロコントローラーをその中に固定します。次に、2つのリレーモジュールを取り、モジュールのVccとアースをESP32マイクロコントローラーボードのVinとアースに並列に接続します。接続します ピン内 ESP32ボードのピン34とピン35へのリレーモジュールの接続。リレーの電源がオンになっていることがわかります。
  2. 家電製品をリレーモジュールに接続します。接続がステップ2の図に示されている接続と一致していることを確認してください。

これで、システムのハードウェア部分を接続しました。 Firebaseデータベースに接続するAndroidアプリケーションを開発します。この記事のパート2では、データベースとAndroidアプリケーションを作成します。

ステップ5: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. 今goto スケッチ>ライブラリを含める>ライブラリを管理します。

    ライブラリを管理する

  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  smartHome  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  smartHome  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の古いバージョンを設定したので、それを再度インストールしてコードを再コンパイルします。今回は、コードが正常にコンパイルされます。

コードをダウンロードするには、 クリック ここに。

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

このプロジェクトのコードは非常にシンプルで、よくコメントされています。それでも、コードについては以下で簡単に説明します。

1.最初に、ESP32ボードを自宅またはオフィスのローカルWiFi接続に接続できるように、ライブラリが含まれています。この後、FirebaseプロジェクトへのリンクとFirebaseプロジェクトの認証が定義されます。次に、ESP32をWifiに接続できるように、ローカルWi-Fi接続の名前とパスワードを定義します。 ESP32の一部のピンは、リレーモジュールに接続するように定義されています。最後に、Firebaseクラウドから取得する一時データを格納する変数が宣言されます。

#include //ローカルWifi接続に接続するためのライブラリを含める#include // Firebaseデータベースに接続するためのライブラリを含める#defineFIREBASE_HOST'coma-patient.firebaseio.com '// Firebaseプロジェクトのリンクを含める#defineFIREBASE_AUTH' UrzlDZXMBNRhNdc5i73DRW10KFEuw8ZPEAN9lmdf '// Firebaseプロジェクトの認証を含める#defineWIFI_SSID' abcd '//自宅またはオフィスのWiFi接続の名前#defineWIFI_PASSWORD' abcd '//自宅またはオフィスのWiFi接続のパスワードintr1 = 34; //リレー1を接続するピンintr2 = 35; //リレー2を接続するためのピンinttemp; //データを運ぶための変数

2.2。 void setup() INPUTまたはOUTPUTピンを初期化する関数です。この関数は、を使用してボーレートも設定します Serial.begin() コマンド。ボーレートは、マイクロコントローラの通信速度です。 ESP32をローカルwifi接続に接続するために、ここにいくつかのコード行が追加されています。ボードはローカルのwifi接続に接続しようとし、「接続」と出力します。シリアルモニターで。接続が確立されると、「接続済み」と出力されます。したがって、これを監視するには、シリアルモニターを開いて、そこでステータスを確認することをお勧めします。

void setup(){Serial.begin(115200); //ボーレートを設定します// 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); }

3.3。 void loop() ループで繰り返し実行される関数です。このループでは、マイクロコントローラーボードに実行するタスクとその方法を指示するコードを記述します。に対してデータをフェッチしました そして 交流 データベースから取得され、2つの一時変数に格納されます。次に、データベースからフェッチされた0または1に従って、2つのアプライアンスを切り替えるために4つの条件が適用されます。

void loop(){//値を取得temp1 = Serial.println(Firebase.getFloat( 'light')); //ライトの切り替えの値を取得しますtemp2 = Serial.println(Firebase.getFloat( 'AC')); //ファンdelay(1000);の切り替えの値を取得します。 if(temp1 == 1 && temp2 == 1){//ライトとファンをオンにするにはdigitalWrite(r1、HIGH); digitalWrite(r2、HIGH); } if(temp1 == 0 && temp2 == 1){//ファンをオンにしてライトをオフにするにはdigitalWrite(r1、LOW); digitalWrite(r2、HIGH); } if(temp1 == 1 && temp2 == 0){//ファンをオフにしてライトをオンにするにはdigitalWrite(r1、HIGH); digitalWrite(r2、LOW); } if(temp1 == 0 && temp2 == 0){//ファンをオフにしてライトをオフにするにはdigitalWrite(r1、LOW); digitalWrite(r2、LOW); }}

これはパート1でした 「ESP32を使用してスマートホームシステムを作成するには?」 家電製品をさらに制御したい場合は、リレーモジュールを追加できます。必要なのは、Firebaseからデータを読み取り、切り替えの条件を追加することだけです。次の記事では、AndroidアプリケーションとFirebaseデータベースを開発する方法について説明します。 AndroidアプリをFirebaseに接続してデータを送信する手順を段階的に説明します。

次のチュートリアルに進むには ここをクリック