DIY:スマートフォンでしか開かない自宅用のSmartLockを作成する

今日、市場には非常に多くのロックがあり、それを開くには何らかのパスワードが必要です。これらのロックは非常に効率的ですが、非常にコストがかかります。自動化され、パスワードなしでスマートフォンを使用してロック解除またはロックされる小規模な目的でロックを作成する必要がある場合は、市場で簡単に入手できるいくつかのコンポーネントを使用してロックできます。



このロックは非常に低コストで、小規模でも完全に機能します。アン アンドロイドアプリケーション このロックを操作するには必要になります。それでは、ESP32のセットアップ、必要なパッケージのインストール、特定のハードウェアの変更に移りましょう。

自動ドアロック



時間を無駄にすることなく、重要な概念の研究とこのプロジェクトへの取り組みを始めましょう。



Androidで動作するSmartLockを作成するにはどうすればよいですか?

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

プロジェクトを開始する前に、プロジェクトの途中で立ち往生して時間を無駄にする恐れがある場合は、それを回避するための優れたアプローチがあります。プロジェクトで必要になるすべてのコンポーネントの完全なリストを作成し、最初にそれらを購入します。以下は、このプロジェクトで使用するすべてのコンポーネントの完全なリストです。これらのコンポーネントはすべて、市場で簡単に入手できます。



  • ESP32
  • ジャンパー線
  • サーボモーター
  • ネジ
  • ロック
  • ドリルマシン

ステップ2:アプリを作成する

携帯電話で操作するスマートロックを作るので、ボタン付きのAndroidアプリを開発する必要があります。そのボタンを押すと、スマートロックを開閉できます。以前、私たちはいくつかを開発しました アンドロイドアプリケーション。 ボタンが1つだけのアプリケーションを開発しました。このボタンは、データベースにデータを送信するために使用されます。 「1」がFirebaseデータベースにプッシュされると、スイッチロックが開き、「0」がそのデータベースにプッシュされると、ロックが閉じられます。

名前の付いた私たちの記事を参照してください PC用のワイヤレスオン/オフスイッチスイッチの作成 スマートロックの操作に使用される独自のAndroidアプリケーションの開発を支援します。

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

このプロジェクトを完了するために必要なすべてのコンポーネントの完全なリストがあるので、一歩先に進んで、すべてのコンポーネントを一緒に組み立てましょう。



サーボモーターを取り、そのVccとアースをESPボードのVccとアースにそれぞれ接続します。サーボモーターのPWMピンをあなたのピン34に接続します ESP32ボード 。ここで、サーボモーターにギアタイプのノブがあることを確認してください。ロックのハンドルを回転させて取り出し、接着剤を使ってギアモーターのノブをロックに固定します。

次に、ドリルマシンを使用して、このスマートロックを配置するドアにいくつかの穴を開けます。ロックの穴がドアの穴と重なるように穴を開けて、ネジが固定されるようにしてください。

ステップ4:作業

このプロジェクトの背後にある主なアイデアがわかったので、このプロジェクトがどのように機能するかを理解しましょう。

ESP32はこのプロジェクトの中心です。このボードにはサーボモーターが接続されており、このマイクロコントローラーはFirebaseデータベースに接続されています。アプリのボタンを押してロックを開くと、「1」がFirebaseデータベースにプッシュされ、ボタンを押してロックを閉じると、「0」がFirebaseデータベースにプッシュされます。 ESPボードは、Firebaseデータベースでこの値を継続的に読み取っています。 0が存在する限り、ESP32はサーボモーターに初期位置に留まるように指示します。 1がFirebaseに入るとすぐに、ESPボードはそれを読み取り、サーボモーターに回転してロックを開くように指示します。

ステップ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.コードの開始時に、3つのライブラリを含めます。 1つはESPボードでWifiを有効にする方法、2つ目はESPがサーボモーターを使用できるようにする方法、3つ目はESPボードをFirebaseデータベースに接続する方法です。その後、Firebaseホスト、認証、ローカルインターネット接続の名前、およびそのパスワードをコードに追加します。その後、サーボモータを使用するオブジェクトを作成します。

#include // WiFiを使用するライブラリを含める#include //サーボモーター用のライブラリを含める#include // Firebaseに接続するライブラリを含める#defineFIREBASE_HOST'xxxxxxxxxx '// xxxxxxxxxxをここでFirebaseホストに置き換えます#defineFIREBASE_AUTH'xxxxxxxxxx' / /ここでxxxxxxxxxxをFirebase認証に置き換えます#defineWIFI_SSID'xx code、xxxxxxxx '// xxxxxxxxxxをWifi接続の名前に置き換えます#defineWIFI_PASSWORD'xxxxxxxxxx' // xxxxxxxxxxをwifiパスワードに置き換えますServomyservo; //サーボモーターのオブジェクトを作成しますintpos = 0; //変数int状態を作成します; //変数を作成します

2.2。 void setup() マイクロコントローラボードの電源がオンになっているとき、またはイネーブルボタンが押されたときに、プログラム内で1回だけ実行される機能です。ボーレートはこの関数で設定されます。ボーレートは、実際には、マイクロコントローラーが外部デバイスと通信するためのビット/秒単位の通信速度です。サーボモーターはESPボードのピン34に接続されています。この関数には、マイクロコントローラーをローカルインターネット接続に接続するためのコードが記述されています。

void setup(){Serial.begin(115200); //ボーレートを設定しますmyservo.attach(34); //サーボモーターのPWMピンをESP32のピン34に接続しますmyservo.write(60); delay(1000); // Wi-Fiに接続します。 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() ループで何度も実行される関数です。この関数では、マイクロコントローラーに、実行する操作とその方法を指示します。ここでは、データがFirebaseから読み取られ、という名前の変数に格納されています 状態 。状態の値が「0」の場合、サーボモーターの位置は8度に設定されます。可変状態の値が「1」の場合、サーボモータの位置は55度に設定されます。

void loop(){state = Serial.println(Firebase.getFloat( 'motor')); // Firebaseからデータを読み取ります//状態が「0」の場合DCモーターはオフになりますif(state == '0'){myservo.write(8); //サーボモーターの位置を設定delay(1000); // onw秒待機Serial.println( 'Door Locked'); } else if(state == '1'){myservo.write(55); //サーボモーターの新しい位置を設定しますdelay(1000); // 1秒待ちますSerial.println( 'Door UnLocked'); } //エラーを処理するif(Firebase.failed()){Serial.print( 'setting / number failed:'); Serial.println(Firebase.error());戻る; } delay(1000);