아두이노로 도어락에 지문인식 기능 달기

도어락에 매번 비밀번호를 누르다 보니 번거롭기도 하고 여는 시간도 오래 걸리고 해서 지문인식 기능을 달아보기로 했다.

개요

도어락에 매번 비밀번호를 누르다 보니 번거롭기도 하고 여는 시간도 오래 걸리고 해서 지문인식 기능을 달아보기로 했다.

과정

필요한 재료 찾기

먼저 컨트롤러는 아두이노를 사용하기로 그냥 결정. 이 참에 아두이노도 써보면 좋을 것 같아서.. 그리고 나머지 필요한 재료들을 찾기로 했다.

아두이노의 경우에는 엄청 작은 아두이노 프로 미니 5v 버전을 사용하기로 했고, 거기 맞춰서 5~12v 사이의 전원이 필요해서 주변을 둘러보다가 집에 굴러다니던 휴대폰 충전 어댑터를 쓰기로 했다. (5v, 1000mA)

핵심이 되는 지문 인식 모듈을 이리저리 찾아보다가 발견한 게 GT-511C3. 처음에는 511C1 버전을 사용하려고 했는데 막상 구매해보니 제대로 동작하지도 않고, 관련 자료들도 부실해서 C3 버전으로 교환했다.

그리고 항상 켜져있을 순 없으니 사람이 앞에 오면 자동으로 켜지도록 근접 모션 센서를 하나 구매했고, 지문 등록 등의 동작을 하기 위해서 CLCD 도 하나 구매했다.

CLCD 의 글자 밝기 조절을 위한 가변저항 하나, 도어락에 인가할 전압을 올리기 위해 콘덴서 하나, 그리고 지문 등록/삭제/내부에서 문 열기 기능등을 위한 조작계로 푸쉬버튼 세 개를 사용했다.

코딩

CLCD

나는 아두이노 해 본 적도 없지만 일단 사들고 와서 LED 몇 개 켜보고 그냥 코딩을 시작했다. 먼저, 지문인식 모듈이 불량이었기 때문에 CLCD 에 글자 표시하는 부분부터 시작했는데, LiquidCrystal 라이브러리(아두이노 SDK 에 포함)를 사용해서 그냥 됐다. 내가 특별히 한 거라곤 열린 자물쇠, 닫힌 자물쇠, 사람모양, 각 버튼 아이콘을 특수문자로 만들어서 CLCD 에 등록하는 거 정도 뿐...

추가로, IDLE 상태일 때는 화면이 꺼지도록 하기 위해서 백라이트를 별도의 가변저항에 연결하지 않고 아두이노의 핀으로 직결했다. HIGH 를 인가하면 그냥 조명에 불이 들어오게. 보통 LED 는 저항 없이 연결하면 안되지만, 애초에 이건 5v 에 직결하도록 되어 있었으니까 별 문제 없을거라고 생각하고 연결했다. 어차피 아두이노에서 나오는 핀이 5v 가 되는 것도 아니고..

모션 센서

별로 쓸 부분이 없다. 아두이노 GND 랑 vcc 에 연결하고 가운데 선을 아두이노 핀에 연결했다. 근접센서 자체에서 모션인식을 받는 텀을 설정하거나 모션인식 받고 나서 일정시간동안 HIGH 를 나타내는 등의 기능이 있지만 그런거 다 귀찮아서 걍 안 쓰고 근접센서에 신호가 오는 경우 일단 IDLE 상태를 벗어난 뒤에 IDLE 상태로 돌아가기 위한 타이머를 일일이 세도록 코딩했다.

버튼

버튼을 임의의 핀 세 개랑 연결하고 (GND는 다 하나로 묶어버림) 각 버튼을 내 맘대로 MODE, SELECT, NEXT 라고 명명했다.

MODE 버튼은 모드를 변경하는 버튼이다. 내가 만든 도어락은 네 개의 모드가 있다.

  1. IDLE 모드

    LCD 백라이트도 끄고 지문인식기 LED 도 끄고 아무 동작도 하지 않는다. 이 상태에서 SELECT 버튼을 누르면 문이 열린다. MODE 버튼을 누르거나 근접센서에 사람이 감지되면 WELCOME 모드로 이행한다. 다른 아무 모드에서건 별도의 입력 없이 가만히 내버려두면 일정시간 이후에 이 모드로 돌아온다.

  2. WELCOME 모드

    IDLE 모드에서 모드 버튼을 누르거나 근접센서에 사람이 인식되면 이 모드로 온다. 이 모드에서는 지문 입력을 대기하고 있다가 지문이 인식되면 문을 연다. 잘못된 지문이면 안 연다. 여기서 모드 버튼을 누르면 ADD 모드로 이행된다.

  3. ADD 모드

    지문을 추가하기 위한 모드다. 이 모드에서 셀렉트 버튼을 한 번 누르면 지문 추가가 시작된다. 지문 추가는 단순히 화면에 나오는 메시지를 따라 손가락을 세 번 인식시키면 된다. 여기서 모드 버튼을 한 번 더 누르면 DELETE 모드로 간다.

  4. DELETE 모드

    이미 추가된 지문을 삭제하기 위한 모드다. NEXT 버튼은 이 모드에서만 사용된다. 이 모드에서 셀렉트 버튼을 한 번 누르면 등록된 지문의 번호를 선택하는 모드가 된다. NEXT 를 누를 때마다 번호가 바뀌고 지우고 싶은 번호가 화면에 나오면 셀렉트를 다시 한 번 누르면 삭제된다.

도어락

기존 도어락을 뜯어서 어떤 배선에 HIGH 나 LOW 를 인가해야 문이 열리는 지 확인했다.

이건 각 도어락마다 방식이 다를테니 딱히 뭐라 적을 말이 없네..

하드웨어

배선

배선의 경우에는 처음에는 별 생각이 없었는데, 하다 보니까 선이 생각보다 엄청 많다. 특별히 회로도를 그려보고 시작한 게 아니라서 되는대로 하다보니 헬게이트가 열렸다.

회로도로 깔끔하게 보여주고 싶었는데, 나는 아무리 노력해도 멀쩡한 회로를 그릴 수가 없었다.....또르르..

여튼 먼저 빵판에다가 꽂아서 개발 및 테스트를 했다.

10245104_659070334159022_1243239102_o.jpg

빵판 중간에 빨갛게 빛나는 LED 는 도어락으로 나가는 선을 확이하려고 꽂아둔거..

납땜

동작하는 걸 확인했으니 납땜을 시작했다.

10263362_659593794106676_1351357123_o.jpg 이건 LCD

10175705_659618314104224_109114248_o.jpg 초보자에겐 너무 가혹한 아두이노 미니의 핀 간격...

하우징

처음에는 판자랑 물라스틱으로 어떻게 해볼까 했는데, 아무래도 야외에 노출되는 부분이 있고 해서 고민하고 있었더니 아버지께서 아크릴로 박스를 만들어주셨다! (깨작거리고 있으니까 재밌어 보였나보다...)

10288363_662759833790072_1045683050_o.jpg

그렇게 만든 하우징에 LCD 랑 센서들을 잘 끼우고 조립!

처음 만들 때 점프선을 하염없이 길게 뽑았더니 도무지 다 들어가질 않아서 조립하면서 납땜을 도로 뜯어내고 선을 줄여가면서 다시 때웠다....또르르

10253110_662768167122572_1633683084_o.jpg

10267062_662768193789236_546947642_o.jpg

뚜껑 덮으면 외부 유닛 완성!

장착

일단 잘 되는지 다시 한 번 확인하고..

10272455_662768103789245_1345257883_o.jpg

처음에는 9v 건전지를 사용하려고 했었는데 이리저리 따져봐도 비효율적이라 편의점에서 산 휴대폰 충전기 어댑터랑 커넥터가 끊어져서 안 쓰던 USB 연결선을 가지고 전원부도 만들었다.

벽에 선을 이리저리 대보고 구멍을 뚫어서 선을 밖으로 뺀 다음에 실리콘으로 벽에 고정시켰다.

작동 영상

어두워서 그런가 내 카메라가 꼬져서 그런가 글자가 잘 안 보인다 ㅠㅠ

어쨌든 지문인식으로 문 열기 성공!

낮에 나갔다가 오는 길에 한 번 더 촬영. 멀리서 꺼져있다가 사람이 다가가면 자동으로 켜지는 부분도 잘 동작한다.

관련 자료

아두이노 소스코드

클릭

기타 자료들

지문인식 센서

여담

아두이노랑 그 외 다른 것들을 다 아트로봇 에서 구매했는데, 처음에 구매한 지문 인식기가 아무래도 불량이었던 것 같다. 그래서 확인을 위해 문의를 하고 반송하고 다른 제품으로 교환했는데, 아트로봇 쪽에서도 테스트 시료가 없어서였는지 그간 이 제품을 테스트해본 적이 없었다고 했다.

결국 교환해서 받은 다른 제품은 제대로 동작해서 해피엔딩.. 마침 이 포스팅 쓰면서 보니까 아트로봇쪽 블로그에도 지문인식기 관련 포스팅이 올라왔다. 불량 확인 때문에 테스트해보셨나보다.

아두이노 프로 미니에 FTDI 인터페이스를 통해서 업로드를 할 때, 아두이노에 전원을 따로 인가하고 rx , tx, sts 만 연결해서 시도하면 도무지 안된다. FTDI 쪽의 5v 와 gnd 핀을 꼭 아두이노로 연결해줘야 싱크가 되는 것 같다. 이거 몰라서 한참 삽질함..

10248525_659504604115595_501833811_o.jpg 물론 걍 이렇게 하면 된다. 저항 다리 잘라서 임시 커넥터 만들어서 업로드함..

이 부분에서 가장 조심해야 할 건.. FTDI 에서 나오는 5v 랑 gnd 가 조금이라도 쇼트되면 컴퓨터가 바로 꺼져버린다는거. 그냥 꺼지기만 하면 다행이지만 자칫하면 맛이 가버리는 수가 있으니 왠만하면 헤더핀을 꽂아서 쓰자....

작동 영상은 나중에 날 밝을 때 다시 한 번 찍어서 올려야겠당

여담2

회로도를 깔끔하게 그리고 싶었지만... 암 걸릴 것 같은 물건만 탄생함

회로.jpg