본문 바로가기
프로젝트

오토 블라인더 + 중앙 제어장치

by G0Yang 2019. 3. 21.

홈 IOT를 개발함에 있어서 가장 중요하다고 생각하는 것이 중앙 제어장치이다.


IOT는 기술적으로 blu 기술을 토대로 주변 센서의 정보를 중앙 제어장치로 보내고 이를 바탕으로 판단하여 사람이 해야 할 일들을 자동화시켜주는 것을 말한다.


학교 프로젝트에서 IOT를 주제로 프로젝트를 할 때 다들 중앙 장치는 생각하지 않고 외부장치에 1대의 독립적인 제품을 개발한다.


차별성을 두기 위해서 나는 중앙 장치와 센서, 모터를 장착한 외부 기기로 제작할 기기를 2대로 분할 하여 파이썬을 이용하여 서로를 통신하면서 자동화가 되게끔 만들기로 했다.


내가 생각한 아이디어는 거실 벽에 있는 중앙 장치와 집의 구조에 상관없이 부착이 가능한 오토 블라인터 기기를 제안했다.


제작을 위해 물품 명세서를 만들어 학교에 제출하였다.




처음에 이것들을 만들기 위해서 제품의 프로토타입 폼과 내부 센서와 모터의 배치도를 그렸다.





3D 프린팅 사무실에 가서 제작 환경과 실제 제작을 위해서 갖춰야할 필수 양식들을 확인했다.


서류작업은 대학 1학년때부터 연구실 생활을 하면서 자신있었기 때문에 오래 걸리지 않았다.


그 외에 제작에 필요한 부품들은 학교 양식에 맞추어 주문을 해야했기 때문에 blu통신 모듈을 쉽게 구할 수 없어 라즈베리 파이 2대로 제작을 진행했다.


일단 외부기기는 별도의 유선 전원 공급이 없고 어느 벽면에 부착할 수 있도록 가능한 작게 만들어야 했다.


일단 보조 베터리 5000mA를 분해하여 라즈베리에 전원공급을 했다.


기기 후측에 배터리를 넣을 공간을 확보하고 그 아래에는 라즈베리파이가 들어간다.


라즈베리 상단으로는 블라인더를 제어할 수 있도록 모터와 컨트롤러가 부착된다.





라즈베리 파이가 부팅하면서 자동으로 스크립트를 수행하여 중앙장치에 장치 목록이 떠야하기 때문에 부팅 옵션으로 별도록 제작한 파이썬 프로그램을 추가하였다.


이로서 외부 독립 모듈이 만들어 졌고 이제 중앙 장치를 만들어야 한다.


내가 생각하는 중앙 장치는 이러한 기능을 염두했다.


1. 여러 독립 모듈을 포함할 수 있어야 한다.

2. 인터페이스는 직관적이여야 한다.

3. 빠르게 작동해야 한다.


역시나 중앙 제어장치도 파이썬과 라즈베리파이를 이용하여 제작한다.


7인치 터치 디스플레이를 이용하여 GUI환경을 제공해 각 모듈을 직접 제어도 가능하고 알람기능과 자동화를 편하게 수행할 수 있도록 만들 예정이다.


GUI환경은 python-pygame을 이용하였다.


각 모듈은 와이파이 환경에서 중앙 장치에 연결될 때까지 일정한 데이터를 브로드캐스팅하게 된다.


중앙 장치는 이를 받아 페어링할 수 있다.


페어링 후에는 ssh를 이용하여 명령인자를 넘길 수 있도록 만들었고 기기 시리얼 번호를 추가하여 만들 수도 있다.






중앙 장치에 들어가는 소스들이다. 학교 프로젝트에 제출을 해야하기 때문에 메인 소스파일 이름이 final.py이다.


serial.txt에는 페어링이 완료된 시리얼 번호와 자기 자신의 시리얼 번호를 포함하고 있다.



좌측 상단 빨간색 버튼은 매인 매뉴로 돌아가는 버튼이고 메인 메뉴에서는 페어링된 기기들의 리스트를 확인할 수 있다.


우측상단 녹색버튼은 에러가 발생하거나 할 경우에 프로그램을 강제 종료시키는 버튼이다.


또한 낮에는 블라인더를 내리거나 밤에는 올리고 하는 자동화 기능을 수행하기 위해서 한국 시간을 기준으로 시간을 프린트할 수 있도록 좌측 상단에 시간을 출력하도록 한다.


0123456



소스파일들은 함수형태로 중앙 장치에서 함수별 호출이 가능하도록 제작되었다.


이때는 RPC나 다른 원격 호출 함수에 대해서 몰랐던 시기라 저 때에도 저렇게 만들었다는게 세삼 신기했다.




프로젝트를 마치고 제출한 보고서이다.


과거 정보보안 동아리에서 배운 nmap 명령어를 이용해서 원격지에 대한 기기 정보를 가져올 수 있어서 편하게 작업할 수 있었다.



마지막으로 학교에 제출한 최종 보고서 전문이다.


댓글