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

아두이노와 ESP8266으로 만드는 와이파이 스마트 도어락 - 스마트폰으로 잠금 해제

부품 및 소모품

부품수량비고
아두이노 우노 R3 (Arduino UNO R3)1
ESP8266 와이파이 모듈 (PCB 안테나 타입)1ElectroPeak 제품 기준
달링턴 고전력 트랜지스터1솔레노이드 구동용
솔레노이드 도어락 (Lock-style Solenoid)1도어 잠금 장치용

앱 및 온라인 서비스

프로젝트 소개

이 튜토리얼과 다른 멋진 프로젝트들은 ElectroPeak 공식 웹사이트에서 확인하실 수 있습니다.

이 튜토리얼에서는 아두이노 기반 스마트 도어락을 만드는 방법을 배웁니다. 이 스마트락은 휴대폰으로 잠금을 해제할 수 있는 기능을 제공합니다. 프로젝트를 완료하면 다음을 할 수 있게 됩니다:

스마트락으로 문 보안 강화하기

요즘은 최첨단 기술을 활용해 가정이나 사무실 보안을 강화할 수 있습니다. 스마트폰과 스마트 기기 사용이 보편화되고 가격도 저렴해져, 우리 주변 기기들을 더 스마트하게 만들기 좋은 환경이 되었습니다. 매일 엔지니어와 기술자들이 새로운 시스템과 도구를 개발하여 홈 오토메이션을 더 스마트하게 만들고, 삶을 더 안전하고 편리하게 만들어주고 있습니다. 아마도 키패드나 지문 인식 방식을 사용하는 스마트 도어락을 본 적이 있을 것입니다.

아두이노와 ESP8266으로 만드는 와이파이 스마트 도어락 - 스마트폰으로 잠금 해제

이 프로젝트에서는 키패드나 복잡한 기계적 요소 없이, 와이파이와 솔레노이드 락을 이용한 아두이노 기반 시스템을 만듭니다. 이것이 이 시스템의 장점입니다. 문에 QR 코드를 부착하고, 권한이 있는 사람이 QR 코드를 스캔하여 로그인 페이지에 접속한 뒤 비밀번호를 입력하면 솔레노이드 락이 해제됩니다. 아두이노 보드, 솔레노이드 드라이버, ESP8266만으로 로컬 와이파이 연결을 구현합니다. 시작해볼까요.

회로도

아두이노와 ESP8266으로 만드는 와이파이 스마트 도어락 - 스마트폰으로 잠금 해제

코드

먼저 ESP-01용 코드를 작성하여 로그인 페이지를 생성하고 사용자로부터 비밀번호를 받아 시리얼 포트를 통해 아두이노로 전송합니다. 그런 다음 아두이노용 코드를 작성하여 ESP-01로부터 데이터를 수신하고 서보 모터(솔레노이드)를 제어합니다. 두 코드 모두 아두이노 IDE로 컴파일 및 업로드합니다.

라이브러리 추가 후 코드 업로드 방법:

  1. 아두이노 공식 사이트에서 OS에 맞는 소프트웨어 다운로드 및 설치
  2. 아두이노 IDE 실행 후 텍스트 에디터 비우기
  3. 다음 코드 복사 붙여넣기
  4. Tools > Board에서 보드 선택
  5. 아두이노를 PC에 연결하고 Tools > Port에서 COM 포트 설정
  6. 업로드(화살표) 버튼 클릭

아두이노 코드

String inputString = ""; // 수신 데이터를 저장할 문자열
bool stringComplete = false; // 문자열 완료 여부

void setup() {
  Serial.begin(115200); // 시리얼 통신 초기화
  inputString.reserve(200); // 200바이트 예약
  pinMode(9, OUTPUT); // 솔레노이드 제어 핀
}

void loop() {
  // 줄바꿈 문자가 도착하면 문자열 처리
  if (stringComplete) {
    if (inputString == "your_password") { // 비밀번호 일치 시
      digitalWrite(9, HIGH); // 솔레노이드 작동
      delay(300);
      digitalWrite(9, LOW);
      Serial.println(inputString);
      // 문자열 초기화
      inputString = "";
      stringComplete = false;
    }
  }
}

void serialEvent() {
  while (Serial.available()) {
    char inChar = (char)Serial.read(); // 새 바이트 읽기
    inputString += inChar; // 문자열에 추가
    // 줄바꿈 문자면 플래그 설정
    if (inChar == '\n') {
      stringComplete = true;
    }
  }
}

ESP8266 코드

ESP-01 코드 업로드 시 아두이노 IDE에서 ESP 보드를 선택해야 합니다.

  1. File > Preferences에서 Additional Boards Manager URLs에 https://arduino.esp8266.com/stable/package_esp8266com_index.json 추가
  2. Tools > Board > Boards Manager에서 ESP8266 설치
  3. Tools > Board에서 "Generic ESP8266 Module" 선택
  4. USB-TTL 컨버터를 업로더 하드웨어로 설정 (컨버터 연결 후 Tools > Port에서 올바른 포트 선택)
  5. 새 스케치에 다음 코드 복사 후 업로드
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

// 와이파이 네트워크 설정
const char* ssid = "YourSSID";
const char* password = "YourPASSWORD";

ESP8266WebServer server(80);
char htmlResponse[3000];

void handleRoot() {
  snprintf(htmlResponse, 3000,
    "<!DOCTYPE html>\
    <html lang=\"en\">\
    <head>\
    <style>\
    body {background-color: rgb(160, 0, 53);}\
    h3 {color: white;text-align:center;}\
    p {color: white; text-align:center;}\
    div {color: white; text-align:center;}\
    input {text-align:center;}\
    </style>\
    <meta charset=\"utf-8\">\
    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\
    </head>\
    <body>\
    <h3><center>Electropeak Smart Security Door</center></h3>\
    <p><center>Please type your ID</center></p>\
    <div>ID: <input type='text' name='pass_word' id='pass_word' align='center' size=10 autofocus></div>\
    <div>\
    <br><button id=\"save_button\">Log In</button>\
    </div>\
    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js\"></script>\
    <script>\
    var pass;\
    $('#save_button').click(function(e){\
      e.preventDefault();\
      pass = $('#pass_word').val();\
      $.get('/save?pass=' + pass, function(data){\
        console.log(data);\
      });\
    });\
    </script>\
    </body>\
    </html>");
  server.send(200, "text/html", htmlResponse);
}

void handleSave() {
  if (server.arg("pass") != "") {
    Serial.println(server.arg("pass")); // 아두이노로 비밀번호 전송
  }
}

void setup() {
  Serial.begin(115200);
  delay(10);
  
  // 와이파이 연결
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  
  server.on("/", handleRoot);
  server.on("/save", handleSave);
  server.begin();
  Serial.println("HTTP server started");
}

void loop() {
  server.handleClient();
}

테스트 및 QR 코드 생성

  1. 코드 업로드 후 아두이노 IDE의 시리얼 모니터를 열어 IP 주소 확인
  2. 브라우저 주소창에 IP 주소 입력하여 웹 서버 UI 확인
  3. 텍스트 박스에 ID(비밀번호) 입력 후 올바르면 아두이노가 락 작동
  4. 주의: ESP8266과 동일한 와이파이 공유기에 연결되어 있어야 합니다.
아두이노와 ESP8266으로 만드는 와이파이 스마트 도어락 - 스마트폰으로 잠금 해제

이제 사용자가 쉽게 웹페이지에 접속할 수 있도록 QR 코드를 만듭니다. 온라인 QR 코드 생성 도구를 이용하세요. (추천: qr-code-generator.com)

  1. 확인한 IP 주소를 입력란에 붙여넣기
  2. "Create QR Code" 클릭
아두이노와 ESP8266으로 만드는 와이파이 스마트 도어락 - 스마트폰으로 잠금 해제

QR 코드를 출력하여 문 근처에 부착하세요. 도어를 해제하려면 와이파이에 접속 후 QR 코드를 스캔하고 ID를 입력하면 됩니다.

아두이노와 ESP8266으로 만드는 와이파이 스마트 도어락 - 스마트폰으로 잠금 해제

향후 개선 사항

이 튜토리얼과 다른 멋진 프로젝트들은 ElectroPeak 공식 웹사이트에서 확인하실 수 있습니다.

제조공정

  1. 은행 금고 내부: 역사, 설계 및 보안의 미래
  2. 파이썬으로 와이파이 제어 라즈베리파이 로봇 만들기 – 단계별 가이드
  3. 아두이노로 모니터 앰비라이트(Ambilight) 시스템 직접 만들기
  4. 아두이노 RFID 도어락 만들기 – 단계별 완벽 가이드
  5. 스마트 블라인드: 아두이노와 태양광으로 자동 조명 제어
  6. 아두이노와 스마트폰으로 만드는 스마트 전압계 – 초간단 DIY 프로젝트
  7. 아두이노와 MAX30100으로 만드는 실시간 IoT 심박수 모니터
  8. 스마트 IoT 자 제작: ESP8266, 아두이노 & 초음파 센서로 실시간 모니터링
  9. 아두이노 우노 와이파이 웹 서버: 브라우저로 LED 제어하기
  10. 아두이노와 ESP8266으로 만드는 와이파이 스마트 도어락 - 스마트폰으로 잠금 해제