아두이노로 화장실에 사람 있는지 체크하는 무언가 만들기 1편.
아두이노를 사용했으므로 정말 'Toy' 프로젝트! 반 장난으로 시작했지만 약간 진심으로 재밌게 하고 있습니다.ㅋㅋ
[ 시작 이유 ]
회사 화장실이 남,여 공용이다보니 한명씩 밖에 못들어간다. 보통 들어갈 때 푯말을 '사용중'으로 하고, 나올 때 '공실'로 돌려둬야 하는데 가끔씩 까먹는 사람들이 있다. 그럼 다른 사람들이 사용중인지 아닌지 알 수가 없어 일단 기다려보다가 너무 오래 지났다 싶으면 '똑똑' 노크 해봐서 확인하는 식이다. 또한, 안쪽 자리에 앉은 사람들은 현재 사용중인지 확인하기 위해 먼 거리를 이동해야 하므로 근손실이 날 수 있고, 우연히 확인할 때 마다 계속해서 사용중일 수 있으므로 정신건강에 안좋을 수 있다.
-> 술먹다가 얘기가 나와서 장난으로 센서 넣어서 만들어볼까? 했었는데 재밌을 것 같아서 장난 반 진심 반으로 시작함.
[ 아두이노 선정 이유 ]
1. 일단 전기전자쪽 지식이 별로 없으므로 납땜을 안하고 할 수 있어야 했다.
2. 당장 생각나는 유명한건 라즈베리파이와 아두이노.
3. 애초에 아두이노쪽이 센서가 많은 듯 했고, 라즈베리파이는 살짝이나마 해봤지만 아두이노는 안해봐서 아두이노로 해보는게 더 재밌을 것 같아 아두이노로 선택함.
[ 진행 과정 ]
일단 아두이노를 모르니 기본 서적 하나 사고, 싸게 진행하려고 호환보드로 대강 만만해보이는 우노 버전 보드 구매. 그리고 필요할 것 같은 센서들을 샀다. 처음엔 사실 화장실 안쪽에 사람이 있는지 판단하려고 했기 때문에, PIR 센서로 선택했다.(HCSR501). 그리고 체크용 LED랑 전선들! 뭐 일단 사면 어떻게든 하겠지 싶어서 진행해봤다. (결론적으로 책은 필요가 없었다. 사실상 아두이노의 역사라던지 보드 종류라던지, IDE 뭐쓴다 정도 외엔 아두이노가 생각보다 너무 사용하기 편하게 되어있어서 필요가 없었음)
아두이노가 유명해서 그런지 생각보다 사용하기 너무 편리하게 잘 되어있는 것 같다. 처음엔 좀 더 raw한 기계이니 더 복잡하고 막 어셈블리어까지 써야하나 싶었는데 그냥 아두이노 사이트에서 제공하는 기본 IDE에 C로 넣으면 잘 된다.
아무튼 아두이노 택배 오는 동안 생각해보니, 아무래도 화장실 안쪽에 센서가 있으면 안될 것 같았다. 일단 안에 계신 분들의 쾌변에도 눈에 거슬려서 방해가 될 것 같고 혹시 카메라로 생각하는 사람도 있을 것 같았다. 그래서 화장실 문 입구에서 판단할 방법은 없을까 생각해봤다. 물론 더 좋고 멋진 방법이 인터넷에 찾아보면 나올 수도 있겠지만, 장난이 반을 차지하는 이 토이 프로젝트에 그런 재미난 과정을 남이 만들어둔거에 맡길 생각은 없었으므로 일단 아두이노 센서들 목록을 띄워두고 생각해봤다.
일단 눈에 들어온건 마그네틱 도어센서(MC38) 였다.
그럼 일단 문이 열고 닫히는건 판단할 수 있으니, 거기에 PIR 센서를 사용해서 사람이 있는지 없는지만 판단하면 될꺼라 생각했다.
근데 테스트해보니 PIR 이녀석이 너무 강력하다.. 일단 각도가 넓어서 화장실에 들어가려고 하는 딱 한명을 잡아내기엔 무리가 있었다. 그래서 또 센서들 보다가 초음파 거리 센서(HC-SR04)를 샀고, 추가로 LCD도 있으면 맛깔날 것 같아 16x2 짜리 LCD도 사용하기로 했다. 그리고 뭐 기타 아크릴 케이스, 빵판 적당한 크기 등등. 그래서 사실 택배 시간이 생각보다 오래 걸렸다 ㅋㅋ 아무래도 처음해보는 거다 보니 뭐가 필요한지 바로바로 생각이 안나니깐.
다음은 회로 설계였다. 뭐 회로 설계라 하기도 뭐한게, 그냥 서로 핀 안겹치고 사용중인 빵판에서 모두 동작할 수 있도록 선을 배치했다.
구성은 위와 같다. 좌측아래 있는 스피커같은애가 초음파 거리 센서이다. 그 위에 돌릴 수 있을 것 같은 애가 가변저항으로, LCD 밝기 조절용이다.
1차 프로토타입이 만들어졌다. 사실 설계부터 하고 한건 아니고, 초짜다보니 일단 끼우면서 테스트 해보고 설계도를 나중에 그렸다 ㅋㅋ 나름 배선은 깔끔하게 된 것 같다 (?).
LCD는 일단 정보 출력용인데 도어 센서가 만나있으면 첫줄에 'closed', 떨어져 있으면 'open'을 출력한다. 둘째줄에는 초음파 거리 센서로 잰 거리정보가 표시된다.
화장실로 들어갔는지, 나왔는지 판정은 다음과 같이 진행했다.
- 일단 초음파 센서는 화장실 옆의 벽을 겨냥시켜둔다. 이 때 문을 열려고 사람이 오면 벽과 센서 사이에 사람이 들어가니 거리가 줄어들 것이다.
- 따라서, 화장실 문이 열렸는데 거리 센서가 인식한 거리가 50cm 미만이라면 화장실로 들어간다고 판단한다. -> 들어갔으므로 빨간불 켜줌
- 그리고 문이 열렸는데 거리가 50cm 이상(벽과는 대강 80cm~1m 정도로 판단함)이라면 사람이 나오기 위해 문을 열었다고 판단한다. -> 나왔으므로 녹색불 켜줌
센서들 잘 되는지 확인해봄!
[ 1차 테스트 ]
위 과정까지는 집에서 상상으로 해본거라, 실제 동작하는지 확인하기 위해 오늘 회사로 가져가서 화장실쪽에 설치해서 1차 테스트를 해봤다. 직원들 들어가거나 나올때마다 살짝살짝 가서 led 불빛 확인해봤는데, 결과는 생각보다 잘 작동한다 ㅋㅋ
- 화장실에서 사람이 나온 경우.
- 화장실에 사람이 들어간 경우
- 테스트 영상! ㅋㅋ
오늘 다른 직원에게 들었던 말 중 제일 재밌었던건 "화장실 옆에 졸업작품 누구꺼에요?" 였다.
[ 1차 테스트에 사용한 코드 ]
아직은 짧은편이다.
일단 들어간것과 나온게 판단되면 10초정도 대기한다. (위 영상에선 5초였는데 너무 짧아서 10초로 함)
생각해보니 더 길게해도 될 것 같다. 화장실을 10초만에 나오진 않을꺼잖아.
[ 이후 진행해볼 계획인것들 ]
- 일단 와이파이 모듈 주문했다 ㅋㅋ
현재는 LED로 판단하게 되어있지만, 결국은 와이파이나 블투로 신호를 받아야 안쪽 자리에 있는 직원들한테 보여줄 수 있는 방법이 생긴다. 어차피 내부망에만 뿌리면 되므로, 그냥 웹페이지 단순하게 하나 만들어서 거기에 표시되게만 해도 될 것 같다. 이렇게 가능한지는 정확히 모르겠지만, 일단 와이파이 모듈부터 주문하고 도착하면 꽂아보고 생각해볼꺼다.
- 현재는 대강 50cm를 기준으로 판단했는데, 더 적절한 길이를 찾아야 할 것 같다. 일단 오늘 테스트는 성공적이었지만, 예외상황을 찾아야 한다.
- 이외 다른 센서들도 복합적으로 사용해서 더 정확하게 판단할 수 있을지 테스트 필요하다. (예를들어 소리센서도 넣어서 화장실쪽으로 걸어오고 있는지 판단 등)
- 현재 디지털 포트쪽이 딱 하나밖에 안남았다. 사실 LCD가 포트를 너무 많이 써서 그런거긴한데, LCD는 있어야 짜세가 날 것 같긴하다. 그러니 포트 늘릴 방법을 찾아봐야한다.
일단 당장 생각나는건 요정도다. 오랜만에 진심으로 장난치려니 재밌다.
'Development > Toy Projects' 카테고리의 다른 글
[토이프로젝트] 죽은 서버 재시작 시켜주는 프로그램 (dead-server-restarter) (0) | 2022.04.10 |
---|---|
[진행2] 안써본거 위주로 써보기 위한 토이 프로젝트 (2) | 2022.01.02 |
[진행1] 안써본거 위주로 써보기 위한 토이 프로젝트 (0) | 2021.12.22 |
[계획수정] 안써본거 위주로 써보기 위한 토이 프로젝트 (0) | 2021.12.22 |
[계획] 안써본거 위주로 써보기 위한 토이 프로젝트 (2) | 2021.12.17 |
댓글