산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Arduino 및 Android 기반 암호로 보호되는 도어록

구성품 및 소모품

Arduino UNO
× 1
HC-05 블루투스 모듈
× 1
서보(타워 프로 MG996R)
× 1

필요한 도구 및 기계

3D 프린터(일반)

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

소개

이 스마트 잠금 장치는 안전하고 간단하며 집의 잠금 장치를 관리하기 쉽습니다. 이 자물쇠는 열쇠가 필요 없고 문 내부에 자물쇠가 부착되어 있어 문 밖에서 블루투스로 제어할 수 있습니다. 자물쇠가 문 안에 있기 때문에 도둑이 문을 부술 수 없습니다. 잠금을 열고 닫으려면 Android 애플리케이션이 필요하며 튜토리얼 후반부에서 Android 앱을 개발하는 방법에 대해 자세히 설명하겠습니다. Android 앱을 사용하여 잠금 장치에 비밀번호가 전송되고 비밀번호가 사전 설정된 잠금 비밀번호와 일치하면 잠금 장치가 열리고 잠금 장치가 열려 있는 것처럼 휴대전화로 피드백이 전송됩니다.

도어록 3D 디자인

<그림> <그림>

자물쇠의 모든 부분은 3D로 인쇄됩니다. 멋진 디자인을 제공한 Thingiverse 사용자 ridercz에게 감사의 말을 전하고 싶습니다. 그는 이 서보 기반 도어록을 디자인하고 thingiverse.com에 게시했습니다. Rack_Holder.stl을 제외한 모든 파일은 그의 디자인에서 가져왔습니다. 파일은 아래 또는 Thingiverse.com에서 다운로드할 수 있습니다.

일부 파일에는 LT 버전이 있습니다. 라이트 버전은 일반 버전에 비해 PLA가 덜 필요하고 강도가 낮습니다. 나는 LT 버전을 인쇄했고 잘 작동합니다. 나는 모든 부품을 인쇄하기 위해 Anet A8을 사용했습니다. 인쇄된 부분의 사진을 첨부합니다..

3D 인쇄 부품 조립

<그림> <그림> <그림> <그림>

인쇄된 모든 부품을 사진과 같이 하나씩 조립합니다. 첫 번째 단계에 첨부된 비디오 지침을 따를 수도 있습니다. 조립 후 4개의 나사를 사용하여 모든 부품을 단단히 고정합니다.

블루투스 제어 비밀번호로 보호되는 도어록용 Arduino 프로그램

<그림>

블루투스 제어 스마트 도어록의 코드는 매우 간단합니다. 나는 암호와 함께 명령을 보내도록 안드로이드 응용 프로그램을 설계했습니다. 실제로 나는 두 개의 명령을 설정했습니다. 하나는 "OPEN="이고 다른 하나는 "CLOSE="이며 암호에는 원하는 숫자, 이후 또는 기호 또는 조합이 포함될 수 있습니다. 앱에서 두 개의 버튼을 사용하여 하나는 문을 여는 데 사용하고 다른 하나는 문을 닫는 데 사용했습니다. 비밀번호 상자에 비밀번호를 입력하고 앱보다 열기 버튼을 클릭하면 "OPEN=" 명령을 비밀번호와 결합하여 arduino로 보냅니다. 이 '=' 를 사용하여 명령과 암호를 분리할 수 있도록 명령과 함께 '=' 기호를 추가합니다. 전화에서 문자열을 수신한 후 arduino 프로그램은 수신 문자열에서 명령과 암호를 분리하고 두 개의 개별 변수에 저장합니다. 그런 다음 비밀번호를 먼저 확인하고 비밀번호가 저장된 비밀번호와 일치하면 "OPEN" 명령에 대해 문을 열고 "CLOSE" 명령에 대해 문을 닫습니다. "="는 명령과 암호를 구분하는 데 도움이 됩니다. 전체 arduino 스케치가 아래에 나와 있습니다.

도식

<그림>

구성 요소 간의 연결은 매우 간단합니다. 먼저 블루투스 모듈 HC-05를 아두이노에 연결합니다. 회로도를 참고하십시오. 아두이노 보드의 TX 핀은 블루투스 모듈의 RX 핀에 연결되고 아두이노의 RX 핀은 블루투스 모듈의 TX 핀에 연결됩니다.

문에 자물쇠 설정하기

<그림> <그림> <그림>

이전 단계에서 첨부된 스케치를 사용하여 Arduino 보드를 프로그래밍하고 회로도에 따라 모든 연결을 이미 테스트했기를 바랍니다. 모든 단계를 완료했다면 도어의 적절한 위치에 잠금 장치를 놓을 때가 되었습니다. 먼저 4개의 나사로 잠금 장치를 놓습니다. 그런 다음 잠금 장치의 올바른 위치에 Bluetooth 모듈을 고정하고 뜨거운 접착제를 추가하여 잠금 장치로 모듈을 단단히 조정합니다. 그런 다음 Arduino 보드를 잠금 장치의 아래쪽에 놓고 회로도에 따라 모든 전선을 연결하십시오. 잠금 장치를 설치하고 연결한 후 잠금 장치의 전원을 켜야 합니다. 5V, 1A 벽면 어댑터를 사용하여 회로에 전원을 공급했습니다.

비밀번호로 보호되는 도어록을 위한 Android 앱 개발

<그림> <그림> <그림> <그림> <그림> <그림> <그림> <그림>

MIT App Inventor를 사용하여 블루투스 안드로이드 애플리케이션을 개발하는 방법을 보여드리겠습니다. 코딩과 소프트웨어 설치가 필요하지 않기 때문에 App Inventor를 사용하고 있습니다. 구글 계정만 있으면 됩니다. http://ai2.appinventor.mit.edu/로 이동하면 Google 계정을 사용하여 로그인하라는 메시지가 표시됩니다.

Gmail을 사용하여 App Inventor에 로그인하고 아래 단계를 따르세요.

<울>
  • 나. 이용약관 동의 이미지 1
  • <울>
  • ii. 스플래시 화면 이미지 2, 3을 닫으려면 '나중에 설문조사 참여'를 클릭한 다음 '계속'을 클릭하십시오.
  • <울>
  • iii. 새 프로젝트 시작(공백 없음!) 이미지 4
  • <울>
  • iv. 프로젝트 이름을 "BluetoothControlDoorLock"(공백 없음!) 이미지 5
  • 로 지정합니다.

    이제 앱의 "사용자 인터페이스"를 배치하는 디자이너에 있습니다(이미지 6). 디자이너 창은 앱의 모양과 느낌을 배치하고 어떤 기능이 있어야 하는지 지정하는 곳입니다. 버튼, 이미지, 레이블, 텍스트 상자와 같은 사용자 인터페이스와 Text-to-Speech, Bluetooth, 센서 및 GPS와 같은 기능을 선택합니다.

    이제 그림 7을 따라 뷰어에 List Picker를 추가합니다. "Bluetooth 장치에 연결"(이미지 8)로 이름을 바꿉니다. 그림 10과 같이 Label 1개, Password Text Box 1개, 버튼 2개를 추가합니다. 구성 요소의 텍스트 속성을 각각 "Enter Password", "Open Door" 및 "Close Door"로 변경합니다. 최종 사용자 인터페이스는 그림 11과 같아야 합니다. 이제 뷰어에 Bluetooth 클라이언트를 추가합니다. 보이지 않는 구성 요소이며 UI가 없습니다. 이미지 12를 참조하십시오.

    블록 편집기로 전환

    앱에 무엇을 해야 하는지 알려줄 시간입니다! "블록"을 클릭하여 블록 편집기(이미지 13)로 이동합니다. Designer 및 Blocks 버튼을 탭과 같이 생각하십시오. 이 버튼을 사용하여 App Inventor의 두 영역 사이를 앞뒤로 이동할 수 있습니다. 블록 편집기는 앱의 동작을 프로그래밍하는 곳입니다. 수학, 논리 및 텍스트와 같은 것을 처리하는 내장 블록이 있습니다. 그 아래에는 앱의 각 구성 요소와 함께 사용되는 블록이 있습니다. 특정 구성요소의 블록이 블록 편집기에 표시되도록 하려면 먼저 Designer를 통해 해당 구성요소를 앱에 추가해야 합니다.

    List Picker용 블록을 설계해 보겠습니다. List Picker는 클릭하면 UI 요소이며 여기에 페어링된 Bluetooth 장치에 해당하는 요소 목록이 표시됩니다. ListPicker.BeforePicking 및 ListPicker.AfterPicking(이미지 14) 두 블록을 추가해야 합니다. 완전한 블록은 그림 18 및 19에 나와 있습니다.

    apk 파일 만들기

    디자인이 완료되었으므로 이제 Android 전화용 apk 파일을 빌드해야 합니다. 메뉴를 빌드하려면 클릭하고 "앱(내 컴퓨터에 .apk 저장)"을 선택합니다. 잠시만 기다려 주세요. apk 파일이 기본 다운로드 폴더에 다운로드됩니다. 설치하여 사용하십시오.

    더 많은 기능을 갖춘 Android 앱

    <그림>

    이전 단계에서는 App Inventor에서 기본 블루투스 앱을 개발하는 방법을 보여 드렸습니다. 하지만 그 앱은 그렇게 사용자 친화적이지 않습니다. 문이 열려 있거나 닫혀 있거나 오류로 인해 블루투스를 연결할 수 없다는 메시지가 표시되지 않습니다. 여기에 우리 프로젝트에 대한 고급 앱을 첨부했습니다.

    이 앱을 실행할 때 블루투스 라디오가 활성화되어 있는지 확인하고, 활성화하지 않으면 블루투스 활성화 대화 상자가 나타납니다. 예를 클릭하여 블루투스 라디오를 켭니다. 그런 다음 장치 페어링 버튼을 사용하여 장치를 페어링하십시오. 그런 다음 연결 버튼을 클릭합니다. 장치에 성공적으로 연결되면 응용 프로그램에 연결된 장치의 MAC 주소와 이름이 표시됩니다. 비밀번호 상자에 비밀번호를 입력한 다음 문 열기 버튼을 클릭합니다. 올바른 비밀번호를 입력하면 문이 열리고 애플리케이션에서 이제 문이 열려 있다는 메시지를 표시합니다. 그런 다음 문을 닫으려면 암호를 다시 입력하십시오. 잘못된 비밀번호를 입력하면 앱에 잘못된 비밀번호 메시지가 표시됩니다.

    전체 앱 인벤터 소스 파일(BTcontrol.aia)이 함께 첨부됩니다. 자신만의 앱을 만들거나 수정하는 것을 좋아하지 않는다면 BTcontrol.apk를 다운로드하여 안드로이드 폰에 설치하세요.

    다음 링크를 사용하여 Google Play 스토어에서 다운로드할 수도 있습니다.

    https://play.google.com/store/apps/details?id=appinventor.ai_khairul_uapstu.BTcontrol&hl=ko

    소스를 수정하려면 "프로젝트" 메뉴를 클릭하고 그림 24에 표시된 "내 컴퓨터에서 프로젝트(.aia) 가져오기"를 선택하고 컴퓨터에서 BTcontrol.aia 파일을 찾습니다. 가져온 후 쉽게 수정할 수 있습니다.

    App Inventor를 사용한 Android 앱 개발에 대해 더 알고 싶다면 http://appinventor.mit.edu/explore/ai2/tutorials.html을 찾아보세요. http://meta-guide.com/videography/100-best-appinventor-videos/

    를 시도할 수도 있습니다. <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • 아두이노 스케치
  • Arduino 스케치Arduino
    #include 서보 마이서보; // 서보를 제어하기 위한 서보 객체 생성 inputString ="";String command ="";String value ="";String password ="arduPi"; // 이것은 문을 열고 닫기 위한 비밀번호입니다 // 숫자와 기호를 사용하여 원하는 비밀번호를 설정할 수 있습니다.boolean stringComplete =false; void setup(){ //직렬 연결 시작 Serial.begin(9600); // 전송 속도는 9600입니다. 블루투스와 일치해야 합니다. // String Reserve() 함수를 사용하면 문자열을 조작하기 위해 메모리에 버퍼를 할당할 수 있습니다. inputString.reserve(50); // 문자열 조작을 위해 저장하기 위해 메모리에 50바이트를 예약합니다. command.reserve(50); value.reserve(50); 부울 문자열OK =거짓; myservo.attach(9); // 9번 핀의 서보를 서보 객체에 연결 }void loop(){ // arduino가 \n과 같은 문자열 종료 문자를 받으면 stringComplete는 true로 설정됩니다. if (stringComplete) { //Serial.println(inputString); 지연(100); // 문자열에서 '='의 위치를 ​​식별하고 인덱스를 pos 변수로 설정합니다. int pos =inputString.indexOf('='); // pos 변수의 값> 또는 =0은 수신된 문자열에 '='가 있음을 의미합니다. if (pos> -1) { // substring(start, stop) 함수는 문자열의 특정 부분을 처음부터 끝까지 잘라냅니다. // 여기에서 command는 '='까지 수신된 문자열의 일부가 됩니다. // 수신된 문자열이 열려 있도록 둡니다=test123 // 그러면 명령은 '열기'입니다. command =inputString.substring(0, pos); // 값은 =이후부터 줄 바꿈 명령까지입니다. // 위의 예에서 값은 test123입니다. // 부분 문자열의 첫 번째 매개변수를 'pos+1'로 사용하는 '='를 무시합니다. // '='를 a로 사용하고 있습니다. 명령과 값 사이의 구분 기호 // '=' 없이 다른 모든 문자를 사용할 수 있습니다. // 우리는 =menas를 사용하고 있습니다. 명령 또는 암호에는 '='가 포함되어서는 안 됩니다. 그렇지 않으면 오류가 발생합니다. value =inputString.substring(pos+1 , inputString.length()-1); // \n까지 명령을 추출합니다. //Serial.println(command); //Serial.println(값); // password.compareTo(value) 비밀번호 문자열과 값 문자열 비교, 일치하면 0 반환 if(!password.compareTo(value) &&(command =="OPEN")){ // 비밀번호가 일치하고 명령이 'OPEN인 경우 ' 문을 열어야 하는 것보다 openDoor(); // openDoor() 호출 function Serial.println(" OPEN"); // 전화로 공개 피드백을 보냈습니다. delay(100); } else if(!password.compareTo(value) &&(command =="CLOSE")){ // 비밀번호가 일치하고 명령이 'CLOSE'이면 문을 닫아야 합니다. closeDoor(); Serial.println("닫기"); // 전화로 " CLOSE" 문자열을 전송합니다. delay(100); } else if(password.compareTo(value)){ // 비밀번호가 일치하지 않는 경우 전화로 잘못된 피드백을 보낸 경우 Serial.println(" WRONG"); 지연(100); } } // 다음 반복을 위해 문자열을 지웁니다. inputString =""; 문자열 완성 =거짓; } }void serialEvent() { while (Serial.available()) { // 새 바이트를 얻습니다. char inChar =(char)Serial.read(); //Serial.write(inChar); // inputString에 추가합니다. inputString +=inChar; // 들어오는 문자가 개행 문자나 캐리지 리턴이면 플래그를 설정합니다. // 메인 루프가 이에 대해 뭔가를 할 수 있도록 if (inChar =='\n' || inChar =='\r') { stringComplete =사실; } }}openDoor(){ myservo.write(0); 지연(100); } 무효 closeDoor(){ myservo.write(65); 지연(100); }

    맞춤형 부품 및 인클로저

    싱기버스
    thingiverse.com 의 https://www.thingiverse.com/thing:2350856CAD 파일

    회로도

    door-lock_android_source_PDi5PbxDwC.aia door-lock_android_app_K05l3Csr61.apk

    제조공정

    1. 은행 금고
    2. 운하 및 자물쇠
    3. Arduino RFID 잠금 자습서
    4. Arduino, 1Sheeld 및 Android를 사용한 범용 원격 제어
    5. LCD 애니메이션 및 게임
    6. Arduino 및 Android 기기로 Roomba 로봇 제어
    7. 암호 기반 도어록
    8. Python3 및 Arduino 통신
    9. Arduino 및 OLED 기반 Cellular Automata
    10. WiFi 로그인 페이지를 사용하는 스마트 도어록 by Arduino &ESP8266