김볕 - 인공태양 만들기

in #kr7 years ago (edited)

아내와 이야기를 나누던 중, 집에서 식물을 길러보자는 이야기가 나왔습니다. 결혼 전, 각자의 집에서 혹은 회사에서 식물을 길러왔기 때문에 어려운 일은 아니었지만 하나 마음에 걸리는 문제가 있었습니다. 하루를 꼬박 지켜봐도 집 안에 햇볕이 잘 들어오지 않는게 문제입니다. 창문에 면해있는 건물들을 옮길 수도 없는 노릇이어서 자연광을 끌어올 순 없었고 결국 인공광원을 이용해보자고 생각했습니다. 그리하여 집에 있는 재료들을 그러모아 인공태양 만들기 프로젝트를 시작했습니다. 야호야호!

먼저 준비물은 다음과 같습니다. 자투리나무 네조각, 철물과 나사못, 전선, 콘센트와 플러그, 무선 연결이 가능한 마이크로 컨트롤러, 릴레이 모듈, 전구소켓 그리고 가장 중요한 식물 생장 램프. 아이디어는 간단합니다. 식물의 광합성에 효과적인 파장의 빛을 내는 램프가 있습니다. 보통 이 램프의 빛은 분홍색에 가깝습니다. 이 램프를 상부에 위치시키고 아래 쪽으로 빛을 향하게 합니다. 그리고 바닥에 화분을 위치시킵니다. 여기에 마이크로 컨트롤러와 릴레이 모듈을 이용하여 약간의 기능을 더합니다.

그럼 램프가 고정될 프레임을 만들어 봅니다. 대략 길이가 비슷한 자투리 나무를 골라 바닥과 벽 그리고 지붕을 만듭니다. 벽면이 쓰러지지 않게 90도로 꺾인 철물을 이용합니다. 그런 다음 뚜껑(지붕)으로 사용할 나무조각엔 전구를 꽂을 수 있는 소켓을 고정합니다. 나중에 식물 생장용 램프를 꽂습니다. 연결된 선이 보기 흉하다면 전선 정리용 몰드를 사용하여 정리해 줍니다.

다음으로 마이크로 컨트롤러와 릴레이 모듈을 연결합니다. 릴레이 모듈은 논리신호 하나로 스위치를 조작하는 부품이라고 볼 수 있습니다. 이 때 논리신호가 전달되는 회로와 제어용 회로는 기계적으로만 연결되어 있고 전기적으로는 분리되어 있어 마이크로 컨트롤러의 신호로 220볼트 이상의 전압을 제어할 수 있습니다. 그림에서 볼 수 있듯이 릴레이 모듈에 먼저 램프의 전원선을 연결하고, 마이크로 컨트롤러의 GPIO 핀 하나를 릴레이 모듈의 제어신호 핀과 연결합니다. 릴레이 모듈의 VCC, GND 핀도 마이크로 컨트롤러의 해당 위치로 연결해줍니다.

여기까지 만들었으면 물리적인 부분은 완성이 된 것입니다. 약간의 프로그램을 더해 똑똑하게 만들어 줍니다. 저는 NodeMCU라는 ESP8266 칩 기반의 마이크로 컨트롤러를 사용했는데 이번 프로젝트에 도움이 되는 부분들이 있었습니다. 하나는 와이파이 모듈이 내장되어 있어 쉽게 인터넷에 접근할 수 있었던 부분이고 다른 하나는 Micropython 부트로더 이미지를 올릴 수 있어 쉽게 코드의 동작을 살피고 수정할 수 있었던 부분입니다.

마이크로 컨트롤러의 수행 코드는 간단합니다. 미리 입력해 둔 AP로 접속하여 IP 주소를 얻은 뒤 서버로 동작합니다. 두 개의 엔드포인트를 제공하고 각각의 엔드포인트로의 연결이 있으면 식물 생장용 램프를 켜거나 끄는 동작을 합니다. 그리고 이를 테스트 (혹은 수동 조작) 하기 위해 간단한 웹페이지를 만들었습니다. Skeleton이란 가벼운 반응형 CSS 라이브러리와 Jquery를 사용했고 화면에 위치한 On/Off 버튼을 누르면 화면에 보이지 않는 iframe 요소를 통해 앞서 구성한 마이크로 컨트롤러 서버에 연결합니다.

기본적인 IoT 기기라고 말할 수 있을만큼 완성이 되었습니다. 하지만 저흰 인공태양을 만들고 싶었기 때문에 태양의 모습을 흉내낼 수 있는 기능을 좀 더 추가해봅니다. 태양은 천체의 운행에 따라 매일 뜨고 지므로 이 행위를 더하여 봅니다. 인터넷의 공개 API 중 일출-일몰 시각을 제공하는 API가 있습니다. 이 API의 입력으로 위도와 경도를 입력하면 해당 지역의 일출-일몰 시각을 알려줍니다. 단, 출력이 날짜시간 문자열이기 때문에 유닉스 시간으로의 변환이 필요했습니다. 마침 이 기능 또한 API로 존재했기 때문에 활용해 보았습니다. 이 스크립트를 집에서 돌아가고 있는 서버에 두고 Cron 작업으로 등록합니다. 현재 시각이 일출 시각보다 크고 일몰 시각보다 작을 땐 식물 생장용 램프를 켜고 아니라면 끄는 요청을 보냅니다.

태양 보다 한참 어둡고 색도 이상하지만 작은 식물들의 생장을 돕는 인공태양이 완성되었습니다! 하지만 아직 이 글을 읽는 여러분들을 위한 과제가 남아있습니다. 식물이 건강하게 자라기 위해선 바람도 적당히 불어야하고 물도 적당히 줘야합니다. 이 또한 여러분들의 아이디어와 손재주를 통해 집 안으로 가져올 수 있을 거에요! :)

Sort:  

토니 스타크의 현실판을 보고 갑니다...

글을 적어보려 시작한 스팀잇인데 막상 적으려하니 기술 관련된 것들만 적고 있네요 :( 김작가님 블로그에 자주 들러봐야겠어요

대단하십니다. 저도 와이프가 심심하면 화분을 저세상으로 보내버려서 고민하고 있던 부분이네요 팔로우 하고 갑니다

와우~ 대단하신데요~
제가 스파도 별로 없고 보팅파워도 바닥이라 도움 못드리는게 너무 아쉽네요
팔로합니다~ 자주 뵈어요

감사합니다! 저도 이제 막 시작해보고 있는데 흥미롭네요 :) 응원할게요~