DIY : 스마트 폰으로 만 열리는 집을위한 SmartLock 만들기

요즘 시장에는 잠금 장치가 너무 많아서 열려면 일종의 암호가 필요합니다. 이러한 잠금은 매우 효율적이지만 비용이 많이 듭니다. 비밀번호없이 스마트 폰으로 잠금 해제하거나 자동으로 잠글 수있는 소규모 목적을 위해 잠금을 만들어야한다면, 시장에서 쉽게 구할 수있는 몇 가지 구성 요소를 사용하여 만들 수 있습니다.



이 잠금 장치는 비용이 매우 낮으며 소규모에서 완벽하게 작동합니다. 안 안드로이드 애플리케이션 이 잠금 장치를 작동하려면 필요합니다. 이제 ESP32를 설정하고 필요한 패키지를 설치하고 특정 하드웨어를 변경해 보겠습니다!

자동 도어록



시간을 낭비하지 않고 중요한 개념을 연구하고이 프로젝트를 시작합시다.



Android에서 작동하는 SmartLock을 만드는 방법은 무엇입니까?

1 단계 : 구성 요소 수집

프로젝트를 시작하기 전에 프로젝트 중간에 갇히고 시간을 낭비 할까봐 두려운 경우이를 피할 수있는 훌륭한 접근 방법이 있습니다. 프로젝트에 필요한 모든 구성 요소의 전체 목록을 작성하고 처음부터 구입하십시오. 다음은이 프로젝트에서 사용할 모든 구성 요소의 전체 목록입니다. 이러한 모든 구성 요소는 시장에서 쉽게 구할 수 있습니다.



  • ESP32
  • 점퍼 와이어
  • 서보 모터
  • 나사
  • 자물쇠
  • 드릴 머신

2 단계 : 앱 만들기

휴대폰으로 작동 할 스마트 락을 만들 예정이므로 버튼이 포함 된 안드로이드 앱을 개발해야합니다. 이 버튼을 누르면 스마트 잠금을 열거 나 닫을 수 있습니다. 이전에 우리는 안드로이드 애플리케이션. 우리는 이미 하나의 버튼으로 만 구성된 애플리케이션을 개발했습니다. 이 버튼은 데이터를 데이터베이스로 보내는 데 사용됩니다. '1'이 firebase 데이터베이스로 푸시되면 스위치 잠금이 열리고 '0'이 해당 데이터베이스로 푸시되면 잠금이 닫힙니다.

우리의 기사를 참조하십시오 PC 용 무선 켜기 / 끄기 스위치 만들기 스마트 잠금을 작동하는 데 사용될 자신의 Android 애플리케이션을 개발하는 데 도움을 받으십시오.

3 단계 : 구성 요소 조립

이 프로젝트를 완료하는 데 필요한 모든 구성 요소의 전체 목록이 있으므로 한 단계 더 나아가 모든 구성 요소를 함께 조립 해 보겠습니다.



서보 모터를 가져 와서 Vcc와 접지를 각각 ESP 보드의 Vcc와 접지에 연결합니다. 서보 모터의 PWM 핀을 34 번 핀에 연결합니다. ESP32 보드 . 이제 서보 모터에 기어 식 손잡이가 있습니다. 자물쇠의 손잡이를 돌려서 꺼내고 접착제를 사용하여 기어 모터의 손잡이를 자물쇠에 고정하십시오.

이제 드릴 머신의 도움으로이 스마트 잠금 장치를 배치 할 문에 구멍을 뚫습니다. 자물쇠의 구멍이 도어의 구멍과 겹치도록 구멍을 뚫어 나사가 고정되도록하십시오.

4 단계 : 작업

이제이 프로젝트의 주요 아이디어를 알았으므로이 프로젝트가 어떻게 작동할지 이해합시다.

ESP32는이 프로젝트의 핵심입니다. 서보 모터가이 보드에 연결되고이 마이크로 컨트롤러는 Firebase 데이터베이스에 연결되어 있습니다. 앱의 버튼을 눌러 잠금을 열면 '1'이 firebase 데이터베이스로 푸시되고 버튼을 눌러 잠금을 닫으면 '0'이 firebase 데이터베이스로 푸시됩니다. ESP 보드는 Firebase 데이터베이스에서이 값을 지속적으로 읽고 있습니다. 0이있는 한 ESP32는 서보 모터가 초기 위치를 유지하도록 지시합니다. 1이 파이어베이스에 들어 오자마자 ESP 보드는이를 읽고 서보 모터에 회전을하여 잠금을 열도록 지시합니다.

5 단계 : ESP32 시작하기

이전에 Arduino IDE에서 작업 한 적이 없더라도 Arduino IDE 설정 단계가 아래에 나와 있으므로 걱정하지 마십시오.

  1. 다음에서 Arduino IDE의 최신 버전을 다운로드하십시오. Arduino.
  2. Arduino 보드를 PC에 연결하고 제어판을 엽니 다. 클릭 하드웨어와 사운드. 지금 열다 장치 및 프린터 보드가 연결된 포트를 찾으십시오. 제 경우에는 COM14 하지만 컴퓨터마다 다릅니다.

    포트 찾기

  3. 파일을 클릭 한 다음 기본 설정을 클릭합니다. 다음 링크를 추가 이사회 관리자의 URL. “ https://dl.espressif.com/dl/package_esp32_index.json '

    환경 설정

  4. 이제 Arduino IDE와 함께 ESP32를 사용하려면 ESP32에서 코드를 굽고 사용할 수있는 특수 라이브러리를 가져와야합니다. 이 두 라이브러리는 아래 링크에 첨부되어 있습니다. 라이브러리를 포함하려면 스케치> 라이브러리 포함> ZIP 라이브러리 추가 . 상자가 나타납니다. 컴퓨터에서 ZIP 폴더를 찾고 확인을 클릭하여 폴더를 포함합니다.

    라이브러리 포함

  5. 이제 이동 스케치> 라이브러리 포함> 라이브러리 관리.

    라이브러리 관리

  6. 메뉴가 열립니다. 검색 창에 Arduino JSON. 목록이 나타납니다. 설치 Benoit Blanchon의 Arduino JSON.

    Arduino JSON

  7. 이제 도구. 드롭 다운 메뉴가 나타납니다. 보드를 다음으로 설정 ESP 개발 모듈.

    설정 보드

  8. 도구 메뉴를 다시 클릭하고 이전에 제어판에서 관찰 한 포트를 설정합니다.

    포트 설정

  9. 이제 아래 링크에 첨부 된 코드를 업로드하고 업로드 버튼을 클릭하여 ESP32 마이크로 컨트롤러에 코드를 굽습니다.

    업로드

따라서 이제 코드를 업로드 할 때 오류가 발생할 수 있습니다. 새로운 버전의 Arduino IDE 및 Arduino JSON을 사용하는 경우 발생할 수있는 가장 일반적인 오류입니다. 다음은 화면에 나타날 수있는 오류입니다.

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 : error : StaticJsonBuffer는 ArduinoJson 5의 클래스입니다. 프로그램을 ArduinoJson으로 업그레이드하는 방법을 알아 보려면 arduinojson.org/upgrade를 참조하세요. 버전 6 StaticJsonBuffer 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 : error : 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-master (레거시) 버전 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 보드 ESP32 Dev Module에 대한 컴파일 오류.

몇 가지 간단한 단계를 따르면 이러한 오류를 제거 할 수 있으므로 걱정할 필요가 없습니다. 이러한 오류는 Arduino JSON의 새 버전에 대신 다른 클래스가 있기 때문에 발생합니다. StaticJsonBuffer. 이것은 JSON 5의 클래스입니다. 따라서 Arduino IDE의 Arduino JSON 버전을 다운 그레이드하여이 오류를 간단히 제거 할 수 있습니다. 간단히 이동 스케치> 라이브러리 포함> 라이브러리 관리. 검색 Benoit Blanchon의 Arduino JSON 이전에 설치 한 적이 있습니다. 먼저 제거하고 버전을 5.13.5. 이제 이전 버전의 Arduino JSON을 설정 했으므로 다시 설치하고 코드를 다시 컴파일하십시오. 이번에는 코드가 성공적으로 컴파일됩니다.

코드를 다운로드하려면 딸깍 하는 소리 여기.

6 단계 : 코드

이 프로젝트의 코드는 매우 간단하지만 일부는 아래에 설명되어 있습니다.

1. 코드 시작 부분에는 세 개의 라이브러리가 포함됩니다. 첫 번째는 ESP 보드에서 Wi-Fi를 활성화하는 것이고, 두 번째는 ESP가 서보 모터를 사용하도록하는 것이며, 세 번째는 ESP 보드를 firebase 데이터베이스에 연결하는 것입니다. 그런 다음 Firebase 호스트, 인증, 로컬 인터넷 연결 이름 및 비밀번호를 코드에 추가합니다. 그런 다음 서보 모터를 사용할 개체를 만듭니다.

#include // WiFi를 사용하기위한 라이브러리 포함 #include // 서보 모터 용 라이브러리 포함 #include // Firebase에 연결할 라이브러리 포함 #define FIREBASE_HOST 'xxxxxxxxxx'// 여기에서 xxxxxxxxxx를 firebase 호스트로 교체합니다. #define FIREBASE_AUTH 'xxxxxxxxxx'/ / 여기에서 xxxxxxxxxx를 firebase 인증으로 교체합니다. #define WIFI_SSID 'xx code, xxxxxxxx'// xxxxxxxxxx를 Wi-Fi 연결 이름으로 교체 #define WIFI_PASSWORD 'xxxxxxxxxx'// xxxxxxxxxx를 Wi-Fi 비밀번호 Servo myservo로 교체합니다. // 서보 모터 용 객체 생성 int pos = 0; // 변수 생성 int state; // 변수 생성

2. 무효 설정 () 마이크로 컨트롤러 보드의 전원을 켜거나 활성화 버튼을 눌렀을 때 프로그램에서 한 번만 실행되는 기능입니다. 전송 속도는이 기능에서 설정됩니다. 전송 속도는 실제로 마이크로 컨트롤러가 외부 장치와 통신하는 데 사용되는 통신 속도 (초당 비트 수)입니다. 서보 모터는 ESP 보드의 pin34에 연결됩니다. 마이크로 컨트롤러를 로컬 인터넷 연결에 연결하기 위해이 함수에 코드가 작성됩니다.

void setup () {Serial.begin (115200); // 전송 속도 설정 myservo.attach (34); // 서보 모터의 PWM 핀을 ESP32의 34 번 핀에 연결 myservo.write (60); 지연 (1000); // Wi-Fi에 연결합니다. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Serial.println ( '연결'); while (WiFi.status ()! = WL_CONNECTED) {Serial.print ( '.'); 지연 (500); } Serial.println (); Serial.print ( '연결됨 :'); Serial.println (WiFi.localIP ()); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH); }

삼. 무효 루프 () 루프에서 반복해서 실행되는 함수입니다. 이 기능에서 우리는 마이크로 컨트롤러에게 어떤 작업을 수행하고 어떻게해야하는지 알려줍니다. 여기서 데이터는 firebase에서 읽고 상태 . 상태가 '0'이면 서보 모터의 위치는 8 도로 설정됩니다. 변수 상태의 값이 '1'이면 서보 모터의 위치는 55 도로 설정됩니다.

void loop () {state = Serial.println (Firebase.getFloat ( 'motor')); // firebase에서 데이터를 읽습니다. // 상태가 '0'이면 DC 모터가 꺼집니다. if (state == '0') {myservo.write (8); // 서보 모터 위치 설정 delay (1000); // 두 번째를 기다립니다 Serial.println ( 'Door Locked'); } else if (상태 == '1') {myservo.write (55); // 서보 모터의 새 위치 설정 delay (1000); // 1 초간 기다립니다 Serial.println ( 'Door UnLocked'); } // 오류 처리 if (Firebase.failed ()) {Serial.print ( 'setting / number failed :'); Serial.println (Firebase.error ()); 반환; } 지연 (1000);