brunch

라즈베리파이는 라즈베리 맛인가

- 문과생의 스마트빌딩 만들기 (2) -

by 뉴나

프로젝트에 발을 들인지 일주일이 지나고, 팀원들끼리 모여 우리 프로젝트에서 뭐가 필요한지, 무엇을 배울 것인지, 무엇을 활용할건지를 살펴보는 회의를 진행했다.

1505169654662.jpg

스마트빌딩, 구체적으로는 우리가 프로젝트하고 있는 공간인 K-SW(케이스퀘어)를 제어할 수 있는 안드로이드 어플을 만드는 것이 우리 팀 목표였다.

총 세 파트로 나눴는데, (1)SENSOR (2)SERVER (3)APP이었다.


(1) SENSOR

현재 상태 데이터를 SERVER에 전달하는 파트.

Raspberry pi 3를 사용해서 센서들을 제어해보자라는 말이 나왔고,

K-SW에서 우리가 앱과 연결할 수 있는 센서는 뭐가 있을지 살펴보기로 했다.


2) SERVER
SENSOR에게 필요한 데이터를 받고 지시사항을 명령하거나 데이터를 변환하여 APP에 전달하는 파트.

c, java, python 등을 다양한 언어로 SERVER를 구축할 수 있지 않을까 하는 이야기를 나눴다.

3) APP
사용자에게 보여지는, 그래서 사용자가 명령을 내릴 수 있는 파트.

다양한 디자인 툴로 인터페이스를 꾸며 사용자에게 노출시키는 디자인 분야와 SERVER로부터 받은 데이터와 디자이너의 디자인을 android studio에서 java 언어를 활용개발하는 분야로 나눴다.


복수전공 수업을 들으면서 아름아름 들었던 단어들의 향연에 열심히 받아 적느라 바빴던 내 눈에 띈 것은, 바로 Raspberry pi이었다.

라즈베리파이...? 분위기가 진지한걸로 봐서는 먹는 거는 아닌 것 같고 다들 "평소에 다뤄보고 싶었어!" 하는 걸 보니 부품인가보다.. 싶었더랬다.

라즈베리파이는 교육용 목적으로 개발된 초소형 컴퓨터다. 신용카드 크기의 작은 컴퓨터로, 라즈베리파이 재단 설립이 논의되던 무렵 과일 이름을 가진 회사가 성장하고 있었다. 설립자들은 농담 삼아 “우리도 한번 과일 이름으로 시작해볼까”라고 의견을 모았고, 산딸기를 뜻하는 ‘라즈베리’란 단어를 찾았다.
파이(Pi)는 원래 수학에서 사용하는 그리스어이지만, 어린아이들은 이 단어를 보고 먹는 파이(Pie)를 떠올리게 해 관심을 유도하려고 했다고 한다. 또한 초기에는 라즈베리파이에 파이썬(Python) 언어를 주로 지원할 것을 염두해 파이라는 단어가 최종적으로 붙었다고 한다.
라즈베리파이는 키보드, 모니터 등을 뺀 단일 보드만으로 구성됐다. 다시 말해 컴퓨터 일부 부품인 셈이다. 컴퓨터는 이미 보드에 정해진 기능이 있고, 확장할 수 없다. 하지만 라즈베리파이는 사용자가 원하는대로 기능을 확장하거나 용도를 변경할 수 있다. - 네이버 지식백과

사실 이때까지도 라즈베리파이가 뭔지, 왜 필요한지, 나도 해야하는지 등 구체적으로 잘 몰랐다.

우리는 아마존에서 라즈베리파이 3 스타터 키트를 구입했는데, 실제로 열어봤을 때는 '이게 컴퓨터라고?' 싶을 정도의 비주얼이었다. 손바닥 안에 다 들어오니까 말이다.

스크린샷 2018-12-17 오후 8.29.04.png 출처 : 아마존


초소형컴퓨터라고 불리는 이유는, 저런 초록색 합판에 있을 거는 다 있다는 것이다. 검은색 케이스에 조심히 끼워 담은 후에 모니터, 키보드, 마우스를 연결하고 나면 모니터에 뭔가가 뜬다. 주어진 SD카드에 라즈베리파이의 전용 OS인 라즈비안을 설치한다. (https://www.raspberrypi.org/downloads/raspbian/) 이름들이 어쩌면 하나같이 귀엽고 맛있게 들리는지 모르겠다 ㅎㅎ

근데 스마트빌딩을 그니까 IoT를 한다면서 왜 라즈베리파이를 사용하는걸까? 폭풍검색하고 알아낸 개념은 다음과 같다. IoT는 프로그래밍으로 기계를 제어하는 것을 말한다. 보통 기계 제어를 할 때는 C언어와 같은 사람보다는 기계에 더 친숙한, 친화적인 Low level 언어를 사용한다. (사람 << 기계 위주) 반대로 사람에 더 친숙한 언어는 High level 언어로는 대표적으로 파이썬이 있다. (사람 >> 기계 위주)

여담으로, 처음에는 low level 언어와 high level 언어가 무슨 말인가 싶었다. 일단 나는 사람에게 더 친숙하다는 파이썬도, 뭐도 절.대.로 나에게 읽히지 않았기 때문이다. 음...극단적인 예로 들자면, 컴퓨터에게는 'hello' 와 같은 언어보다 '0과 1'로 이루어진 언어가 더 익숙하다. 그러니, 비록 내가 'hello'라는 언어를 배워야하지만 0과 1보다는 나으니... 그나마 high level이 친숙하다고 표현하는 것...같다.

그런데, 라즈베리파이는 기계를 제어하는 컴퓨터이면서 파이썬으로 코딩하는 것이 가능하게 되어있다. 다양한 오픈소스, 라이브러리를 통해 센서뿐만 아니라 카메라 모듈도, Open CV도 가능하게 한 것이 라즈베리 파이인 것이다. 그래서 우리팀에서는 라즈베리파이를 센서파트에서 RF센서(Radio Frequency 방식; 무선 주파수 방사 방식)와 함께 활용하여 내부 온도 측정 기능을 얻는데에, 카메라와 Open CV를 더해서 얼굴인식 기능을 얻는데에 활용했다. (더 자세히는 다루지 않겠다...!)


나는 센서, 데이터, 앱 파트 중에서 앱 디자인을 맡게 되었다. 추가로 PM(Project Manager) 역할을 하기도 했는데, 이건 통솔!! 지휘!! 관리!! 라는 느낌보다는 PM이라는 이름 하에 조금 더 책임감을 가지고 프로젝트에 관심을 가질 수 있게하려는 팀원들의 빅피쳐가 아니였을까 싶다. (탁월했다!)


안드로이드 어플을 개발할 때 주로 안드로이드 스튜디오에서 자바 언어를 통해 개발을 한다고 한다. 디자인파트를 맡았지만, 그래도 앱을 잘 알려면 언어를 알아두면 좋으니 자바를 공부하면 좋겠다는 말과 함께 사이트를 추천받았다.

https://teamtreehouse.com/

7일간 free trial를 이용할 수 있다고 해서 일주일간 열심히 들었다.

스크린샷 2018-11-25 오전 12.32.53.png teamtreehouse에서 들은 강좌를 정리한 개발일지


공부한 것은 에버노트에 저장했다. google keep는 뭔가 불편해보여서 유명한 에버노트를 사용해보았다.

teamtreehouse는 영어강좌라서 영어자막을 켜서 강의를 들었는데, 어려운 영어가 아니라서 영어공부도 하고 자바공부도 한다는 생각으로 듣는다면 일석이조의 공부가 될 것이라 생각했다.


시차적응도 됐고 석회수 물에 물갈이도 끝났고 갈대와 거대한 옥수수밭만 있는 주변 환경에도 적응하고

슬슬 프로젝트에 적응하기 시작한 9월 중순.

어서 내가 할 수 있는 일, 해야하는 일을 찾아서 프로젝트에, 팀에 도움이 되고 싶다는 생각이 마구마구 들었던 9월 중순이기도 했다.

keyword