본문 바로가기

Technology

IoT도 DIY 시대! 우리집 온습도 측정기 제작기



우리는 현재 IoT의 세상에서 살아가고 있다고 말합니다. 그렇다면 IoT가 뭘까요? 위키피디아에서는 IoT를 다음과 같이 정의하고 있습니다.


사물 인터넷(Internet of Things, 약어로 IoT)은 각종 사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술을 의미한다. 여기서 사물이란 가전제품, 모바일 장비, 웨어러블 컴퓨터 등 다양한 임베디드 시스템이 된다. 사물 인터넷에 연결되는 사물들은 자신을 구별할 수 있는 유일한 아이피를 가지고 인터넷으로 연결되어야 하며, 외부 환경으로부터의 데이터 취득을 위해 센서를 내장할 수 있다.


따라서, IoT 세상을 쉽게 말하자면 “모든 것이 인터넷으로 서로 연결되어 있는 세상”이라고 할 수 있겠습니다.



DIY IoT

모든 것이 인터넷으로 연결되어 있는 세상에 살고 있는 요즘 또 다른 대세 용어가 있습니다. 바로“전문업자나 업체에 맡기지 않고 스스로 직접 생활 공간을 보다 쾌적하게 만들고 수리하는 개념을 말한다”는 뜻의 DIY(Do It Yourself), 즉 “네가 직접 만들어라”라는 말입니다.


그렇다면 DIY IoT는? “사물인터넷을 네가 직접 만들어라!”라는 뜻이 되겠네요.



우리집 온습도 측정기

“인터넷에 연결되어 있는 사물 = IoT” 라고 정의할 수 있으니 IoT에 포함되는 범위는 꽤나 넓습니다. 그래도 이왕 만드는 것이라면 실생활에 도움이 되는 것이면 좋겠지요?


올해 저희 가족에게는 소중한 선물이 생겼습니다. 처음 아이를 출산하였을 때, 아내와 저는 무엇을 준비해야 하는지 이것 저것 찾아보기 바빴습니다. 신생아 때는 실내 온습도가 유지가 중요하다고 주워 들어 온습도계를 살까 말까 고민하던 차, 특별한 선물을 주고 싶은 아비의 마음(이라 쓰고 제 욕심 채우기라 읽습니다)으로 직접 온습도계를 만들어 보기로 했습니다.


물론 시중에 저렴한 온습도계가 많이 있지만 싱글보드 컴퓨터인 라즈베리파이 기반으로 제작된 온습도계는 커다란 장점이 있습니다. 바로 커스터마이징이 가능하다는 점이죠! 예를 들어, 스마트폰으로 언제 어디서든 집안의 온습도 확인이 가능하며, 특정 온습도 이하로 떨어지면 알림을 주는 등 내가 원하는 기능을 손쉽게 구현할 수 있습니다. 다만 프로그래밍과 하드웨어에 대한 지식이 필요 하다는 것이 조그만(?) 단점이 되겠네요. 뭐 그렇다고 크게 걱정하지 마세요. 저희에겐 구글 신이 있고 유튜브 동영상 강의가 있으니까요! 이참에 취미로 코딩 한번 시작해 보시는 건 어떨까요?



준비물

라즈베리파이


사진출처 : 엘레파츠



라즈베리파이는 싱글보드 컴퓨터 입니다. 싱글보드 컴퓨터가 뭐냐구요? 그냥 엄청 작은 초소형 컴퓨터라고 생각하시면 됩니다. 이 카드 만한 기판에 컴퓨터의 역할을 할 수 있는 모든 기능이 탑재되어 있습니다. 세상 참 좋아졌죠? 라즈베리파이를 구입할 수 있는 대표적인 사이트로 엘레파츠가 있습니다. 현재 라즈베리파이3까지 나왔네요.


라즈베리파이3 스타터 키트 구매



온습도 센서


사진출처 : 엘레파츠


라즈베리파이와 연결하여 온습도를 측정할 수 있는 센서 입니다. dht11로 많이 알려져 있습니다. 라즈베리파이와 마찬가지로 엘레파츠 등의 사이트에서 구매하실 수 있으며, 센서 키트를 구매하시면 라즈베리파이를 좀 더 다양하게 활용 하실 수도 있습니다.



마이크로SD 메모리(4GB 이상)


사진출처 : SanDisk


라즈베리파이도 하나의 컴퓨터이기 때문에 OS(운영체제) 설치가 필요합니다. 이 운영체제 설치에 필요한, 최소 공간이 4GB 이므로, 그 이상인 마이크로SD 카드를 준비합니다. 넉넉할 수록 좋습니다. 컴퓨터에 하드디스크 공간이 많으면 좋으니까요! (나중에 용량이 많이 필요해지면 외장하드를 연결하여 사용도 가능합니다.)


스마트폰

측정된 온습도를 확인할 수 있는 앱을 만들고, 구동시켜 볼 수 있는 스마트폰!

컴퓨터

앱을 제작(코딩)할 수 있는 컴퓨터 또는 노트북!

그 외

점퍼케이블, 인터넷 공유기, 랜케이블, USB 무선랜 등



제작

제작과정은 1부와 2부로 나뉘어 작성될 예정입니다.


지금 보고계신 1부에서는 라즈베리파이에 OS를 설치하고, 온습도 센서를 연결해 온습도 값을 얻어보는 것을 목표로 하고, 추후 공개되는 2부에서는 이 값을 시각적으로 볼 수 있는 앱과 서버를 구현해보도록 하겠습니다.


라즈비안 설치하기


라즈비안은 라즈베리파이에 설치 가능한 대표적인 OS(운영체제) 입니다. 자세한 설치 과정은 라즈베리 파이에 라즈비안 설치하기를 참조하시기 바랍니다.


설치가 다 끝나셨나요? 그렇다면 라즈베리 파이 환경 설정를 참고해 환경설정을 해주시기 바랍니다. 패스워드 변경과 SSH 활성화는 필수입니다!


설정을 마치고 재부팅까지 끝냈다면 HDMI 케이블로 라즈베리파이와 모니터를 연결하고 키보드와 마우스를 꽂아 주세요. 그럼 다음과 같은 화면이 여러분을 반길 것 입니다.





혹시 검정화면에 로그인 하라는 영어만 덩그러니 보인다면 로그인 후에 startx 라고 입력 후, 엔터를 쳐주시기 바랍니다.



인터넷 연결하기

자! 이제 우리의 라즈베리파이가 사물인터넷의 역할을 다할 수 있도록 인터넷에 연결해 보도록 하겠습니다. 라즈베리파이도 하나의 컴퓨터이기 때문에 인터넷에 연결할 수 있는 방법은 두 가지가 존재합니다. 유선 또는 무선!


라즈베리파이를 구매할 때 스타터키트로 구매하셨다면 무선 USB 랜카드도 같이 포함되어 있는데요. 라즈베리파이만 따로 구매하셨다면 유선으로 공유기와 직접 연결하시면 되겠습니다. 기본 설정이 DHCP라 랜선을 꽂기만 하면 자동으로 인터넷에 연결이 될 텐데요. 이 경우, 라즈베리파이가 꺼졌다 켜지면 IP 주소가 바뀔 수 있습니다. 그래서 대부분 고정 아이피를 할당하여 사용하게 되는데요.


유선에 대한 고정아피 설정법은 여기를 참고하셔서 설정하시기 바라며, 저는 무선(WIFI)설정에 대해서 알아보도록 하겠습니다. USB 무선 랜 카드를 라즈베리파이에 꽂으면, 화면의 우측 상단에 다음과 같은 아이콘이 보입니다.





해당 아이콘 위에서 마우스 우클릭을 하시고 설정창에서 원하는 AP와 아이피를 할당한 뒤에 Apply 버튼을 누르면 적용이 완료됩니다. 혹시 와이파이 비밀번호가 설정되어 있다면 다시 해당 아이콘을 좌클릭 한 뒤 나오는 AP 목록에서 연결을 원하는 AP를 선택하시면 비밀번호 입력 칸이 나옵니다.



온습도 센서 연결 및 값 확인

온습도센서 뿐만 아니라, 라즈베리파이에 연결되는 대부분의 센서는 GPIO를 통해 연결됩니다. GPIO는 General Purpose Input Output의 약자이며, GPIO에 대한 설명은 라즈베리파이 GPIO 강좌를 통해 확인하기 바랍니다. 대부분 센서를 구매하면 “센서를 라즈베리파이의 몇번 GPIO핀에 연결하라” 라고 매뉴얼이 제공 되므로 너무 어려워 할 필요는 없습니다.


제가 온습도기를 만들 때 사용한 라즈베리파이는 모델2 버전이고 해당 버전의 GPIO 구성은 아래와 같습니다.



사진출처 : rs-online.com



뭔가 어려워 보이는데요… 일단 우리의 목표는 온습도 센서에서 값만 읽어오면 되므로, 무작정 따라하도록 하겠습니다. 일단 온습도 센서와 라즈베리파이를 점퍼 케이블을 이용하여 아래와 같이 연결합니다.




온습도 센서 DHT11

라즈베리파이 GPIO 핀(PIN#)

DOUT

7번

GND

6번

UCC

1번


연결이 완료된 후에는 GPIO를 쉽게 제어할 수 있게 도와주는 라이브러리 wiringPi를 설치하여야 합니다. 설치 방법은 다음과 같습니다. 라즈베리파이에서 터미널을 실행시킨 뒤, 아래의 명령을 실행 시킵니다.


$ git clone git://git.drogon.net/wiringPi

$ cd wiringPi

$ ./build

$ gpio readall




위와 같은 화면이 나온다면 wiringPi는 정상적으로 설치가 완료된 것입니다.

다음으로 링크된 소스 코드를 복사하고 터미널에서 아래와 같이 입력합니다.


$ nano myhome_dht.c

에디터가 실행되면 소스코드를 붙여넣기(Shift + Insert) 한 뒤 저장 합니다.(Ctrl + O 엔터)

$ sudo gcc -o myhome_dht myhome_dht.c -lwiringPi

$ sudo ./myhome_dht


아래와 같은 화면이 나온다면 성공!



네! 드디어 라즈베리파이에 센서를 연결하여 온도와 습도를 획득했습니다.


지금은 비록 수동으로 sudo ./myhome_dht 명령어를 통해 확인해야 하나, 2부에서 이를 자동으로 실행하고, 그 결과 값을 앱에서 실시간으로 볼 수 있도록 하겠습니다.



작성: 이학진