61
2015 GATEWAY 제16회 정보통신공학과 학부 졸업논문집

2015 창원대학교 정보통신공학과 졸업 논문 gateway

Embed Size (px)

Citation preview

Page 1: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

2015 GATEWAY

제16회 정보통신공학과학부 졸업논문집

Page 2: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

목 차

1. 대체의사소통(AAC) 솔루션 향상 ······························································ 3P

2. 스마트 애완동물 돌보기 시스템 ······························································· 6P

3. 대학생을 위한 여행 APP ··········································································· 9P

4. 사물인터넷을 이용한 어항관리 시스템 ················································· 15P

5. 유니티를 이용한 아두이노 ······································································· 19P

6. NFC를 통해 등산정보를 제공하는 Application(등산왕) ··················· 22P

7. 스마트 컨트롤 파밍 시스템 ····································································· 27P

8. 버스노선 자동안내 시스템 ······································································· 31P

9. 스마트 날씨시계 ························································································ 35P

10. 아두이노를 이용한 탁상알람시계 ··························································· 38P

11. 한글 교육용 스마트 키보드 ····································································· 42P

12. 미세먼지측정 ······························································································ 46P

13. 피드백 지원 검색 기능 구현체 ······························································· 49P

14. VITAL휠체어 ······························································································ 59P

Page 3: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 3 -

대체의사소통(AAC) 솔루션 향상

------------------------------------------------------------------------------------------------------------

하지영, 김예나

이동통신연구실

E-mail : [email protected]

지도교수 : 강 창 순

요 약

본 논문은 기존에 국내에서 보급되고

있는 장애인 의사소통 보조도구인

AAC(augmentative and alternative

communication) 어플리케이션의 개량으

로 사용자의 편의성을 극대화 시키는 것

을 목표로 하였다.

제작 결과로는 아이템을 추가/삭제가

가능하고 Text-to-Speech로 원하는 말을

출력할 수 있다. 또한 문장 및 관용구를

위한 매크로 기능 추가와 문장 및 단어의

호출 횟수가 누산 되어 빈도평가용 통계

기록이 가능하며 통계 모델에 의한 아이

템의 중요도가 계산되어 적용된다.

I. 서론

그룹 및 매크로, 메뉴들을 추가하거나

삭제할 수 있어 사용자에게 가장 편리한

방향으로 수정이 가능하고 한 문장 혹은

관용구를 출력하고자 할 때 구성 단어를

순차적으로 호출할 필요 없이 매크로 호출

한 번으로 출력 가능하여 조작을

간편화하였다. 또한 통계 모델 도입으로

아이템 검색 기능 및 아이템 출력 순서의

동적인 변경을 통한 사용자의 편의성을

극대화하였다.

II. 시스템의 개발방법

서버는 오브젝트 풀을 쓰는 멀티스레드 프

로그램이고 서버의 OS는 FreeBSD 9.3, 언

어는 Java 8, IDE는 이클립스를 써서 작성

했다. Komoran 라이브러리에는 위키피디아

한국어판 데이터를 학습시켜 사용했다.

아이콘 디자인 tool은 Adobe Photoshop

CS4을 이용했고, 안드로이드 레이아웃 디자

인 tool은 Android Studio Layout Editor를

사용하였다.

III. 시스템 구현

III-1 레이아웃

[그림 1] 레이아웃 배치 모습

[그림 1]에서 보이는 바와 같이 dp 수치를

이용하여 화면 해상도와 무관하게 크기 유

지하였고, ScrollView로 Activity의 내용물이

한 화면 범위를 벗어날 때 스크롤 생성하도

Page 4: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 4 -

록 하였다.

GridLayout을 사용하여 화면에 출력된 버튼

객체들은 2열로 정렬시켰다.

III-2 기본 제공 아이콘

[그림 2] ‘놀이’ 그룹 및 ‘달콤해요’ 단어 아이콘

Adobe Photoshop CS4에 있는 페인트 브

러쉬 툴과 도형 툴을 이용해 밑그림을 그린

후 채색하였고 보다 정밀한 채색 시에는 펜

도구를 이용하였다.

그룹 아이콘은 원형, 그 외 아이템의 아이

콘은 사각형 형태로 만들어서 그룹과 단어

를 구별한다.

III-3 사용자 어플리케이션

1) 메뉴 구현

파일 기반 데이터베이스로 아이템 관리를

위해 SQLite3를 사용하였고 트리 구조방식

으로 그룹은 Branch, 매크로/워드는 Leaf만

될 수 있고 Depth는 무한정 가능하다.

툴바용 구글 자동완성 API를 이용하여 아

이템 추가 입력 시 매 타이핑마다 추천어를

제공하고 입력 수를 최소화한다.

[그림 3] 구글 자동완성 API

2) 음성

안드로이드 자체 기능인 Text-To-Speech를

사용한다.

자연스러운 연음 재생을 위해 TTS 객체에

는 하나의 통합된 문자열이 주어진다.

3) 아이콘 이미지

기본적으로 제공되는 아이콘 이외에 외부

사진을 아이콘 이미지로 사용할 수 있고,

삭제 또한 가능하다.

4) 매크로

단어 외에 문장추가가 가능하며 단어들을

순서대로 미리 구성하고 기억한다. 또한 매

크로를 한 번 실행하는 것만으로 구성 단어

를 순차적 재생할 수 있으므로 자주 사용되

는 문장에 유용하다. (ex. 나 화장실 갈래,

나 배고파 등)

5) 통계 모델

나, 너와 같이 자주 사용되나 검색어로서

무가치한 단어는 Ranking function 내에서

중요도에 패널티를 가한다.

한 문서 내에 너무 특정 단어가 반복되는

경우도 BM25 공식을 통해 중요도 값이 너

무 커지지 않도록 방지한다.

6) 검색기능

검색어 입력 시 검색어가 포함된 모든 과거 호출 문장 및 등록 문장 매크로를 제시한다.

[그림 4] 단어 ‘엄’ 검색시 출력화면

III-4 서버 어플리케이션

형태소 분석기 라이브러리 자체는 모바일

기기에서 운용 불가하므로 서버에 http를

통해 쿼리 시 XML 형태로 분석 값을 사용

Page 5: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 5 -

자 어플리케이션에 반환한다.

어간만을 분리해 어간이 같은 단어끼리 통

계 계산 시 동일한 값으로 처리한다.

Ⅳ. 결론

보완대체 의사소통도구인 AAC는 장애인의

의사소통을 보조하는 수단으로 활용되고 있

다. 현재 국내에도 다양한 AAC앱이 널리

보급되어 있다. 그러나 기존의 앱은 사용자

별로 자주 쓰는 표현이 다르고, 사용자가

원하는 한 문장을 표현하기 위해 여러 번의

작업이 필요한 경우가 많다. 이러한 번거로

움을 줄이기 위하여 AAC앱을 개량하게 되

었다.

검색이나 그룹 탐색 시에 사용 패턴이 반

영된 아이템 추천과 출력 순서로 인해 원하

는 출력을 위한 조작 횟수가 감소하여 조작

의 간편화로 인해 빠르게 자연스러운 의사

소통이 가능하고 장애인의 대화 장벽을 더

욱 낮출 수 있다. 그리고 메뉴의 추가 및

삭제, 그룹화 등을 통해 각 사용자별 개개

인의 개성과 취향을 반영할 수 있게 되므로

사용자들의 요구사항 반영에 용이하다.

향후 위치 정보도 통계에 반영하는 것을

계획하고 있다. 예를 들어 도서관에서 어플

리케이션 실행 시 이전에 도서관에서 호출

했던 아이템들에 가중치가 주어지는 것이

다. 이를 통해 어플리케이션 사용의 효율성

이 증대될 것으로 예상된다.

.

참 고 문 헌

[1] 정재곤, Do it! 안드로이드 웹 프로그래

밍, 이지스 퍼블리싱

Page 6: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 6 -

스마트 애완동물 돌보기 시스템

(Smart Pet Feeding System)

------------------------------------------------------------------------------------------------------------

김보성, 표정훈

무선기술연구실

E-mail : [email protected]

요 약

바쁜 현대인들은 애완동물 하나 키우기가

쉽지가 않다. 애완동물 샵 같은 동물을 맡

아주는 시설도 잘 발달되어 있지만, 경제적

인 비용도 만만치가 않다.

본 논문은 주인이 집을 비웠을 때, 애완동

물 집 내부의 환경을 파악하여 이상 여부를

주인에게 전송하여 원격으로 장치를 조정

할 수 있는 시스템을 구현해보았다.

I. 서론

가정 내 애완동물들을 하나씩 키우고

있지만 바쁜 현대인들은 애완동물을 돌봐줄

시간이 거의 없다.

그래서 요즘 누구나 소지하고 있는 스마트

폰을 활용하여 온도가 적절하지 못하거나

또 먹이나 물이 부족하여 애완동물이 살아

가는 환경을 만족시키지 못할 때 주인의 스

마트 폰을 통해 정보를 받아 원격 또는 자

동으로 장치를 조정하여 애완동물이 살 수

있는 이상적인 환경으로 만들 수 있는 장치

가 있으면 편하겠다고 생각하여서 만들게

되었다.

그래서 일상적으로 보급된 스마트 폰과 Ar

uduino와 Arduino WIFI Shield를 사용해 애

완동물 집 내의 여러 장치들을 제어하는 시

스템을 구축하였다.

II. 시스템의 개요

[그림1] 하드웨어 설계도

시스템은 [그림 1]와 같이 습도센서, 온도

센서, 조도센서, LED, 물 펌프, 서브 모터 등

을 이용해 실시간으로 애완동물 집 내의 환

경을 조절한다.

이 센서들의 정보는 아두이노와 와이파이쉴

Page 7: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 7 -

드를 통해 전달되고, LED, 물 펌프, 서브 모

터 등을 동작시킨다.

한편 간단한 Web Server를 통하여 외부 인

터넷에 접속함으로써 스마트 폰, 노트북으로

도 시스템을 제어할 수 있다.

III. 시스템 구현

시스템 S/W 흐름도는 [그림2]와 같다.

[그림 2] S/W 설계도

III-1) 첫 번째는 실내조도센서이다.

실내조도센서가 일정한 값(10)을 넘지 못한

다면 어두운 것을 인식해 주인의 스마트 폰

화면에 어둡다는 메시지를 전달하게 된다.

III-2) 두 번째는 먹이통 내의 먹이의 양을

확인 할 수 있는 먹이통 내의 조도센서이

다. 먹이통 내에 먹이가 없다면, 먹이통내의

조도센서 값이 올라가게 된다. 먹이가 없어

먹이통 내의 조도센서 값이 일정한 값(10)

을 넘으면, 주인의 스마트 폰에 알림을 뜨

게 한다.

III-3) 세 번째는 수분센서이다.

애완동물에게 꼭 필요한 물을 제공하기 위

해 수분센서를 설치했습니다. 물통에 물이

부족하게 되면(수분센서<10) 자동으로 물

펌프가 동작하고 물통에 물이 차면(수분센

서>10) 물 펌프가 정지하게 된다.

III-4) 네 번째 기능은 환풍기이다.

냄새가 많이 나는 애완동물에 대비하여 환

풍기를 설치했고, 주인이 원격으로 환풍기

도 끄고 킬 수 있도록 설계하였다.

이 때 와이파이 쉴드를 이용하여 설계를 하

였기 때문에 와이파이만 있으면 어디서든

쉽게 접속을 할 수 있고, 애완동물이 살 수

없는 생태환경이 만들어지면 주인에게 이상

여부를 전송하기 때문에 실시간으로 상태를

알 수 있습니다.

[그림 3] 사용자 출력화면

아두이노와 와이파이 쉴드를 이용하여 웹

Page 8: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 8 -

서버에 접속하게 되면 [그림 3]처럼 사용자

화면에 온도 습도 여러 가지 정보가 출력

된다. 제공된 정보에 따라 주인이 원격으로

LED와, FAN(환풍기)를 제어 할 수 있고 애

완동물에게 MEAL(먹이)를 줄 수도 있다.

[그림 4] 블록도

Ⅳ. 결론

이처럼 애완동물 집 내에 여러 센서(온도,

조도, 수분) 등을 부착하여 애완동물이 살기

힘든 환경이 되면 멀리 있는 주인에게 신호

가 가게끔 하여 원격으로 제어를 할 수 있

게 설계를 해 보았다.

이는 요즘같이 바쁜 현대인들에게는 쉬운

조작으로 보다 편리하고 간단하게 동물을

키울 수 있는 유용한 수단이 될 것이다.

향후과제로는 애완동물과 주인 간에 카메

라를 통해 서로 얼굴을 볼 수 있는 쌍방향

통신을 구현해볼 수 있다. 애완동물 집 내

에 카메라 모듈을 설치하여 동물은 주인의

얼굴을 LCD를 통해 볼 수 있게 하고, 주인

은 애완동물을 휴대폰 화면으로 볼 수 있

다. 이 기능이 구현된다면 주인은 동물이

잘 지내고 있는지 멀리서도 볼 수 있어 마

음 놓고 자신의 과업에 집중할 수 있을 것

이다.

참 고 문 헌

[1] 나의 첫 아두이노 프로젝트, 인사이트

[2] 나만의 프로젝트를 위한 아두이노 프

로그래밍 다지기, 인사이트

[3] 레시피로 배우는 아두이노 쿡북, 아이

러브 로봇

[4] 아두이노 완전 정복, 북두출판사

[5] http://kocoafab.cc/tutorial/view/194

Page 9: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 9 -

대학생을 위한 여행 AppTravel App for college students

최인경, 장준성1)

창원대학교 정보통신공학과 네트워크연구실e-mail: [email protected]

[email protected]

요 약

본 작품에서는 XCode 6.32, Adobe

Photoshop CS4 등을 이용하여 “대학생을 위한

여행 App” 어플리케이션을 개발하였다. 본 작품

에서는 월별 여행 콘텐츠를 어플리케이션에서

쉽고 용이하게 볼 수 있게 하는 것을 목적으로

한다. 개발 내용은 여행에 꼭 필요한 코스정보

와 날씨, 지도 등이고 특징으로는 조작이 간편

한 것이며, 각각의 항목에서 디자인에 대해 특

히 신경을 많이 썼다.

Ⅰ. 개요

누구나 여행을 갈망하고 떠나고 싶어 하지만,

자금적인 문제도 있고, 무엇보다 차가 없는 사

람이 많아 교통문제, 여행지에 대한 정보의 무

지가 아주 크게 작용한다.

그러나 막상 대학생이 여행과 관련한 자료를

찾아보면 의외로 학생 수준에서 도움이 될 만한

적당한 정보가 없어서 불편을 느낄 때가 많다.

이에 본 작품에서는 개발자 중 한명이 여행을

아주 좋아해 오랫동안 여행 가이드를 한 경험과

다양한 국가에 자유여행을 갔던 경험을 살려 대

학생을 위한 여행코스 안내 어플리케이션을 만

들기로 하였다.

1) : 이 훈

Ⅱ. 시스템 설계

1. 디자인 구성도 스케치

[그림 1]은 본 작품을 구현하는데 있어서 먼저

전체적인 어플리케이션의 디자인스케치를 한 초

안이다.

[그림 1] 어플리케이션 디자인 스케치

2. 개발환경

본 시스템은 iPhone 6에 최적화하였고 개발도

구로는 XCode 6.32, NotePad++, Photoshop

CS4를 사용했고 Mac환경에서 Swift언어로 구현

했다.

Page 10: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 10 -

3. UI 디자인

모바일 어플리케이션은 가벼워야 함은 물론

인터페이스 또한 단순해야 좋은 모바일 어플리

케이션이다. 그러기 위해서는 모든 기능이 한번

내지 두 번의 터치로 가능해야 간편하고 효율적

인 어플리케이션이라 할 수 있으며 본 작품에서

는 이를 바탕으로 디자인을 하였다.

Ⅲ. 시스템 구현

1. LaunchScreen

LaunchScreen이란 [그림 2]와 같이 어플리케

이션을 실행후 가장 처음 뜨는 화면을 의미한

다.

[그림 2] LaunchScreen 화면

개발자는 1초로 지정해놓아 실행되자마자 [그

림 2]를 1초 보여주고 여행코스탭으로 자동으로

넘어간다. 개발자 입맛에 따라 시간조정이 가능

하다. 이 LaunchScreen에서는 밑쪽의 Tab Bar가

아직 보이지 않고 1초가 지나고 난뒤부터 뜨기

시작한다. Photoshop CS4로 이미지를 작업했다.

핸드폰 화면이기 때문에 가로가 64픽셀이라는

것이 가장 큰 특징이다.

2. 여행코스 Tab

[그림 3]은 본 작품의 메인화면과 마찬가지인

여행코스탭이다.

[그림 3] 여행코스탭 화면

[그림 3]을 보면 클릭할 수 있는 달의 UI버튼

을 6개로 디자인했는데, 그 이유는 첫째로, 각

달마다 여행가기 좋은 달이 있고 좋지 않은 달

이 있기 때문에, 코스가 별로 없는 달들은 여러

달 묶었고 갈 코스가 많은 달은 하나로 만들어

총 6개의 버튼으로 만들었다. 두 번째는, 어플리

케이션의 특성상 한눈에 보여주기 위해 스크롤

이 생기지 않게 한 화면에 넣을 수 있도록 크기

조정을 했다. [그림 3]의 하부에 있는 Tab Bar는

여행코스와 지도, 날씨, 만든이탭과 같은 4개의

탭으로 구성했다. 작업한 순서는 다음과 같다.

⓵ [그림 4]와 같이 MainStoryBoard에서 어떻

게 구성할 것인지 큰 틀을 짠 뒤, TableView와

ImageView를 구성한다.

⓶ 그 후, 아래의 [그림 5]의 ViewController에

서 UI버튼 6개 각각에 대해 개별적인 변수를 선

언하고, UI버튼값에 연결을 시킨 후 버튼값들의

대한 링크는 달마다의 pList에 대응시켜준다.

XCode의 언어인 Swift 언어로 작업했다.

Page 11: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 11 -

[그림 4] 여행코스탭 MainStoryBoard

[그림 5] UI버튼연결 ViewController

⓷ [그림 6]의 TableViewController에서 Swift

언어의 장점인 배열(Array)을 이용해 클릭한 달

이 몇 월인지의 정보를 각각 자동으로 가져온

다. 열 두 달이 아닌 6개의 버튼에 맞춰 가져올

수 있도록 하였다.

⓸ [그림 7]에서 각 달의 여행코스들의 컨텐츠

하나하나의 항목에 대해서 1.작은 프리뷰, 2.여

행코스이름, 3.지역, 4.접근도, 5.인기도, 6.세부코

스이미지와 같은 6가지 항목의 정보를 각 달의

6개의 pList로부터 Dictionary방식으로 정리하고

String타입으로 저장되어 각각 가져온다. pList는

일종의 데이터베이스를 의미한다. 개발자가 직

접 여행코스들의 대한 정보를 입력해 두고 사용

자가 필요로 하는 여행코스를 클릭 시, 그 정보

를 pList에서 가져오는 형식이다.

[그림 6] 각 달의 TableViewController

이 작업을 편하게 하기 위해 Notepad++를

활용했다.

[그림 7] 각 달의 가져오는 pList 항목들

[그림 8]은 완성된 각 달의 TableView이다. 위

에 설명된 대로 10월이라는 달을 배열로부터 가

져오고, 버튼값과 맞는 pList의 정보들을 가져온

다. 그 중 접근도와 인기도는 별모양의 이미지

의 개수로 표시한다.

[그림 9]는 각각의 여행코스 컨텐츠를 클릭시

나오는 가장 하부의 메뉴이다. 이는 작성해서

텍스트를 가져오는 것이 아니라 6가지 항목 중

세부코스 이미지의 루트를 따로 지정해둔다. 오

로지 이미지이기 때문에 오류가 있을 수가 없다

Page 12: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 12 -

는 것이 큰 특징이다.

[그림 8] 각 달의 TableView

[그림 9] 각 항목의 상세한 여행코스

3. 지도 Tab

[그림 10]은 지도탭의 스탠다드버전이다.

[그림 10] 지도탭 Standard Ver.

[그림 11]과 같이 약간 버전이 다른 2가지도

추가로 바꿔가며 선택할 수 있게 만들었다.

[그림 11] Satelite Ver(좌), Hybird Ver(우)

가장 객관적이라고 생각되는 구글 지도를 파

싱하여 가져온다. 특징은 창원대학교를 중심으

로 I를 클릭시 창원대학교의 홈페이지를 방문할

수 있게 만들었다. 특정 장소의 좌표를 선택해

Page 13: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 13 -

첫 시작을 이쪽에서부터 할 수 있게 만든 것이

다. 특정 좌표를 넣은 것은 창원대학교가 유일

하며 그림과 이름, 홈페이지로 들어가는 링크정

보가 들어갔다.

4. 날씨 Tab

[그림 12]는 기상청의 모바일웹을 그대로 가져

와서 Xcode의 WebView를 활용해 구현하였다.

[그림 12] 날씨탭 메인화면

부분적인 정보만 파싱해서 가져오려니 오류가

많고, 되더라도 기상청에서 페이지를 바꾸면 어

플리케이션쪽에서도 늘 바꿔줘야 하기 때문이

다. 날씨에 대해 필요한 정보는 기상청이 가장

신뢰성이 있다고 보고 모바일 웹페이지를 가져

왔기 때문에 전혀 오류가 있을 수가 없다.

5. 만든이 Tab

[그림 13]은 Photoshop CS4를 활용해 이미지

하나로 작업했다. 크기가 모두 한눈에 들어갈

수 있게 만들었다.

[그림 13] 만든이탭

Ⅳ. 결론

현재 여행어플리케이션은 아주 많으나, 명소들

에 대한 정보는 많더라도 실제로 바로 떠날 수

있게 코스로 정리되어진 어플리케이션은 단 하

나도 없다.

교통적인 부분과, 코스적인 부분이 만든 개발

자가 대학생이기 때문에 대학생에 맞추어졌다.

실제로 가본 코스이니 오차가 거의 없다.

어플리케이션이니 실시간으로 볼 수 있어 가

장 효과적으로 활용될 것이다.

나아가 국내관광산업에도 많은 긍정적 효과가

미칠 것으로 예상된다.

Page 14: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 14 -

참고

[1] http://www.google.co.kr/maps 구글지도

[2] http://cwapp.org/ 창원시 스마트모바일 앱지

원센터 “이영록,권수현,주민규“ 강사님

[3] http://www.kma.go.kr/ 기상청

Page 15: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 15 -

사물인터넷을 이용한 어항관리 시스템Fishing Bowl Management System using IoT

------------------------------------------------------------------------------------------------------------

최규환, 이보영, 이민지

유비쿼터스연구실

E-mail : [email protected]

요 약

본 논문에서는 스마트폰과 아두이노 및

각종 센서를 활용해 어항관리 어플리케이

션을 개발하였다. 이를 위해 공유기를 중

심으로 아두이노, 스마트폰, 서버간의 무선

네트워크를 구축하였으며, 무선네트워크

환경에서 소켓통신을 통해서 서로 데이터

를 주고받도록 하였고 아두이노의 WIFI 쉴

드를 이용하여 실시간으로 스마트폰에서

온도관리와 조명관리, 먹이주기 등 어항을

원격으로 관리할 수 있도록 구현하였다.

Ⅰ. 서론

생활 속 사물들을 유무선 네트워크로

연결해 정보를 공유하는 사물인터넷으로

인해 일반 가정집의 편리함이 날이 갈수록

증가 하고 있다. IT의 패러다임이 선으로

연결된 인터넷을 벗어나 눈에 보이지 않는

무선 인터넷의 세계로 변신하고, 컴퓨터의

처리 능력이 기하급수적으로 증가되고,

그와 관련된 스마트 폰, 센서들의 가격이

떨어지고, 수집된 정보를 신속하게

분석하고 의미 있는 결과를 제시할 수 있게

되었다. 본문에서는 사물인터넷의 다양한

응용분야 중에서 어항과 관련된 관리시스템

구현에 대해서 말하고자 한다.

어항은 직접 먹이를 주거나 온도를

관리해줘야 하는 점이 가장 번거롭다.

이러한 번거로움을 덜고자 원격으로 어항을

관리 할 수 있는 시스템을 이용하여

편리하게 사용자가 어디에서든 어항을 관리

할 수 있는 어항관리시스템을 구현하였다.

Ⅱ. 관련연구

Ⅱ-1 아두이노 홈 시큐리티 시스템

작동 : 만약 수상한 움직임을 인식하면

모션 감지 카메라가 자동으로 해당

구역으로 카메라를 이동시킨다. 또한 해당

구역에 엄청난 알람움이 발생한다.

카메라는 움직임을 포착하는 장소에 따라

움직이고, 영상 녹화를 시작한다. 녹화되는

영상을 실시간으로 IP 카메라를 통하여 웹

사이트에서 확인 할 수 있다.

Ⅱ-2 우편물 관리 시스템

작동 : 우편통에 우편물이 들어오거나

꺼낼 때 스마트폰에 알람이 울린다. 또한

우편통을 다른사람이 열지 못하도록

스마트폰을 사용하여 잠금 기능을 사용할

수 도 있다.

두 작품 모두 사물인터넷을 응용하려고

아두이노를 사용했고, 각종 센서들을

부착하는 것 에 따라 여러가지 기능들을

사용할 수 있다 점에서 어항관리시스템

Page 16: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 16 -

그림 2 라즈베이파이를 이용한 DB 구축

구현 시 참고 할 수 있었다.

Ⅲ. 어항관리 시스템의 동작시나리오

그림 1 어항관리 시스템의 구성

1) 스마트폰에서 공유기를 통하여 아두이노

에 제어 신호를 보낸다.

2) 제어 신호를 받은 아두이노가 센서를

제어한다.

3) 온도감지센서를 통하여 측정된 온도 값

이 라즈베리파이 DB서버에 전송된 후

저장된다.

4) 스마트폰에서 설정한 기준 온도 값과 라

즈베이파이의 DB에 저장된 측정값을 비

교해 히터를 자동으로 On/Off 한다.

5) 스마트폰에서 설정한 기준 온도 값과 D

B에 저장된 측정값이 다를 시 푸쉬메시

지를 스마트폰에 전송한다.

Ⅳ. 어항관리 시스템의 설계 및 구현

Ⅳ-1 환경구축

앞서 [그림1]에서 살펴본 바와 같이 공유

기를 중심으로 아두이노 , 스마트폰, 서버

간의 무선 네트워크를 구축하여 소켓 통신

을 통해서 서로 데이터를 주고받도록 하였

다. 공유기는 하나의 IP주소를 여러 대의 디

바이스가 공유해서 인터넷에 접속할 수 있

도록 하는 역할을 한다. 공유기를 이용하여

네트워크를 구축하게 되면 손쉽게 아두이노

와 스마트폰 서버간의 통신을 할 수 있게

된다. 공유기에 연결된 아두이노와 스마트

폰, 서버들은 사설 IP를 가지며 네트워크 안

에서 고유의 IP를 가진다. 할당받은 IP를 근

거로 서로간의 소켓통신이 가능해진다.

아두이노의 WiFi 쉴드를 이용하여 아두이노

가 공유기에 연결될 수 있도록 하였다.

아두이노에서 손쉽게 기능을 구현할 수 있

게 도와주는 아두이노 쉴드의 종류인 WiFi

쉴드를 이용함으로써 아두이노가 공유기에

연결 될 수 있다. WiFi로 연결된 아두이노

는 서버와 스마트폰간의 데이터를 주고받을

수 있으며, 스마트폰으로 아두이노에 연결

된 센서들을 제어할 수 있다.

Ⅳ-2 각종 센서들을 이용한 다양한 기능

구현

1) 온도관리

아두이노와 어항 안의 온도감지센서를 연

결하여 어항의 온도를 측정할 수 있도록 하

였다. 수온이 올라가면 물속의 산소가 희박

해지므로 물고기가 죽기도 한다. 비슷한 연

유로, 수온이 아주 낮으면 물고기의 신진대

사 속도도 심하게 떨어져서 거의 소화를 해

내지 못하게 되고, 따라서 먹이활동도 거의

중단하게 된다. 이처럼 수온은 물고기한테

지대한 영향을 끼치기 때문에 실시간으로

어항안의 온도를 스마트폰에서 바로 확인할

수 있도록 구현하였으며 스마트폰에서 기준

Page 17: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 17 -

그림 4 릴레이스위치의 작동원리

그림 3 스마트폰을 통한 히터 제어

그림 5 스마트폰을 통한 LED 제어

그림 6 스마트폰을 통한 먹이통 제어

온도를 설정하여 기준온도보다 낮아지면 아

두이노와 릴레이스위치를 이용하여 어항 속

에 설치된 히터가 작동되게 하였다. 또한

라즈베리 파이에 이러한 온도 정보를 실시

간으로 전달하여 온도에 이상이 생기면 구

글서버를 이용한 GCM(Google Cloud Mess

aging)서비스를 통하여 스마트폰으로 push

메시지를 보내도록 하였다.

릴레이는 전자석의 원리를 응용한 장치로

서 작은 전류를 제어하여 큰 전류를 연결하

거나 끊어주는 역할을 한다. 이 릴레이를

활용하여 220V 교류전원을 사용하는 히터

를 ON/OFF 할 수 있게 된다. 따라서 스마

트폰으로 릴레이 스위치를 제어 할 수 있게

된다.

2) 조명관리

릴레이스위치를 이용하여 스마트폰으로

LED전등 , 전구 등을 이용하여 어항 환경을

조성하도록 구현하였다. 전등을 어항 근처

에 설치 하게 되면 수온 유지효과를 볼 수

있고, 색깔에 따라서 쾌적한 환경으로 보이

게끔 할 수 있다. 사람은 색깔에 따라서 심

리가 달라진다. 빨간색은 적극적이고 자신

감을 나타내는 색 노란색은 상상력과 호기

심, 파란색은 시원한 느낌 등 인간은 색깔

에 따라서 다양한 심리가 나타난다. 밤에는

은은한 색깔을 비추어 분위기 있게 만들고,

여름에는 파란색을 비추어 시원한 분위기를

연출 하면 어항을 보는 재미도 생긴다.

3) 먹이관리

아두이노 모터 쉴드를 이용하여 모터를 제

어하여 물고기 먹이를 줄 수 있도록 하였

다. 스탭모터를 이용하여 물고기 먹이통을

제어한다. 스탭모터는 각도를 제어할 수 있

는 모터로 물고기 먹이통을 제어하는데 적

합하다. 스마트폰 어플리케이션에서 물고기

먹이통을 제어할 수 있는 버튼을 만든다.

이 버튼을 누르게 되면 공유기를 통해서 바

로 아두이노로 정보가 전송된다. 전송된 정

보를 아두이노가 판단하여 모터를 제어해서

물고기 먹이통이 작동된다.

Page 18: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 18 -

그림 7 어항관리시스템 전체적인 모습

2) 어항관리시스템 소프트웨어 부분

그림 8 스마트폰 어플리케이션 동작

4) 알람기능

스마트폰에서 청소알람을 위하여 1주후, 2

주후, 한달 후 버튼을 만들어 그에 맞는 날

짜에 알람 메시지와 알람소리가 울리도록

하였다. 그 외에 D-day기능을 추가하여 청

소가 몇 일 남았는지 알 수 있도록 하였다.

Ⅳ-3 구현 결과

1) 어항관리시스템 하드웨어 부분

Ⅴ.결론

우리는 아두이노와 서버를 이용하여 실시간

으로 스마트폰 제어가 가능한 어항관리시스

템을 구현하였다. 이는 가정 내 물고기관리

에 대한 시간적 부담감을 감소시키고 막대한

시장 가능성이 있는 사물인터넷 시장에 한

발짝 들어섰다고 할 수 있다.

나아가 사물인터넷을 이용하여 다른 전자

제품과 사물에 다양한 활용을 할 수 있을

것이다. 또한 향후 대형 수족관 또는 아쿠

아리움에서의 원격관리시스템으로 확대하여

시스템을 구축할 수 있을 것이다.

참 고 문 헌

[1] 아두이노, www.arduino.cc, Arduino 제

작사 공식 웹

[2] 무한상상 DIY 아두이노로 만드는 사물

인터넷- 서민우/앤써북

[3] 사물인터넷을 위한 아두이노 따라하기

– 정보권/홍릉과학출판사

[4] 네이버 블로그, http://blog.naver.com/

windfalcon1/220450488448

[5] 사물인터넷(IoT)사례조사

- https://www.youtube.com/watch?v=lqng

m5WZwGI

- https://www.youtube.com/watch?v=M-d

LcM_8qiA

Page 19: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 19 -

유니티를 이용한 아두이노Aduino Using Unity

------------------------------------------------------------------------------------------------------------

이진용, 진수복, 허두성

무선기술연구실

E-mail : [email protected]

요 약

어플리케이션 시장의 활성화로 그 영향이

모바일 게임시장에도 큰 영향을 미치고 있

다.

그러나 휴대폰 게임은 화면 터치방식을 이

용하여 게임을 하는 방식이지만, 공볼(게임

앱이름)은 아두이노를 이용하여 화면터치방

식이 아닌 게임패드를 이용하여 현실감을

살리는 데에 중점을 두었다.

휴대폰과 아두이노를 블루투스 형식으로 연

결을 통해 기존의 터치방식에서 사용하기

어려웠던 조이스틱을 이용한 방식을 추가하

였다. 물론 기존의 방식이었던 터치방식의

십자키 또한 추가하였다.

I. 서론

최근 어플 시장의 활성화로 인해 다양한

종류의 어플리케이션들이 생겨났다.

그중에서 가장 활성화된 분야가 바로

어플리케이션 게임이다. [그림 1]과 같이

국내 게임 업계의 시장은 133억 달러에

이른다. 그리고 그 어플을 만드는 툴

중에서 가장 보편화 되고 많이 쓰이는 툴이

유니티(Unity)이다. 유니티는 3d 와 2d를

손쉽게 게임화 할 수 있고 무엇보다

멀티플랫폼(PC, ios, 안드로이드)을 완벽하게

지원 할수 있다는 부분에 있어서 매우 높은

평가를 받고 있다. 그리고 스마트 폰

사용자들이 게임을 할 때 터치로 게임을

하는 것에 대해 싫증을 느끼고 예전의

아날로그의 감성을 느끼고 싶어함으로 이

유니티를 이용한 게임을 아두이노 아날로그

버튼과 연동하여 옛날 오락실에서 즐기는

게임처럼 구동할 수 있도록 해보았다.

[그림 1] 국내 모바일게임 시장 규모 및

성장률

II. 시스템의 개요

시스템은 조이스틱쉴드, 블루투스모듈, 휴대

폰을 이용해 휴대폰과 아두이노(조이스틱쉴

드, 블루투스모듈)을 실시간으로 블루투스

연결을 통해 게임 환경을 구축할 수 있다.

Page 20: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 20 -

III. 시스템 구현

III-1 휴대폰 게임 시스템

[그림 2] 휴대폰 게임 알고리즘

[그림 3] 휴대폰 게임 시작화면

[그림 4] 휴대폰 게임 구동화면

게임의 스테이지는 총 4개이고 게임을 구상

하기 위한 SCENE은 Level1,2,3,4 ,win ,lose

, mainmenu 이렇게 총 7개이다. 메뉴간의

이동은 GameManager에서 관리한다.

[그림 2]와 같이 알고리즘을 통해 게임 구

동방식을 쉽게 이해할 수 있다.

게임임안의 세팅은 기본적으로 메인 메뉴에

서 가능하다.

[그림3]과 같이 사운드 on ,off 게임상 시간

의 양을 조절할 수 있다(30, 60, 90초)

게임이 시작되면 [그림4]와 같이

우측상단에 게임을 할 수 있는

총 플레이수(ball:3)와 점수(score)

그리고 획득한 코인수가 나온다.

게임의 기본 방식은 코인을 8개 획득하고

지정한 위치로 이동하면 다음스테이지로

넘어가는 방식이다.

[그림 5] 휴대폰 게임 시작화면

그 와중에 시간이 초과 되거나

물밑으로 떨어지게 되면 게임오버와 동시에

[그림5]의 화면이 나오면서 메인메뉴로

갈지 다시 시도할지 결정하게 된다.

기본적인 조작방식은 십자키로 이루어지며,

이 십자키의 입력을 아두이노의 아날로그

스틱으로부터 받아 정보를 읽어들여

케릭터가 움직인다. 기본적으로 터치로도

플레이 할 수있도록 설정을 해 놓았기

때문에 터치와 아두이노를 통한 아날로그

두가지를 선택하여 플레이 할 수 있다.

Page 21: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 21 -

III-2 아두이노 시스템(조이스틱 or 십자키)

[그림 1] 아두이노 알고리즘

[그림 2] 조이스틱 쉴드 회로도

[그림 3] 블루투스 모듈

[그림 4] 아두이노 작동방식

Ⅳ. 결론

이 과정을 통해서 블루투스 기능에 대한

지식을 얻을 수 있었고, 아날로그 컨트롤

뿐 만 아니라, 다양한 영역에 활용될 수

있는 기술이기 때문에 충분히 더 연구해 볼

필요가 있다고 본다. 그리고 터치 패드를

활용하는 기술 또한 현대 모바일

어플리케이션에서 필수적인 요소이므로

계속해서 활용할 가치가 있다고 생각한다.

참 고 문 헌

[1]UNITY3D로 배우는 실전게임개발-박승

[2]유니티허브, http://cafe.naver.com/unity

hub

[3]아두이노, www.arduino.cc, Arduino 제

작사 공식 웹

[4]유니티 게임 제작 입문- 이스나 고지

Page 22: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 22 -

NFC를 통해 등산정보를 제공하는 ApplicationNFC-based Application providing Mountain Information

------------------------------------------------------------------------------------------------------------

정현석, 이중원, 김은지

COMMA

E-mail : [email protected]

요 약

‘등산왕’ Android Application은 NFC와 스

마트 기기를 이용하여, 등산 애호가를 위해

산 정보를 제공하는, 일종의 등산 애호가들

을 위한 하나의 Sharing Blog(공유성 블로

그)형태이다.

전국 각 지역의 정상에 NFC(Near Field Co

mmunication)카드를 설치해 두어 Android

용 기기에 Application을 실행한 후 휴대폰

기기와 NFC와의 통신이 이루어지게 되면

해당 산을 정복하게 된다..

여러 산들을 정복하고 등반한 산들에 대한

기록 및 정보를 제공해 주는 Application이

다.

I. 서론

현재 우리나라에서 가장 많이 즐겨하는

운동 및 취미생활은 등산이다. [그림 1]을

보면 알 수 있듯이 대다수의 사람들이

등산을 즐겨하는 것을 알 수 있다.

이러한 추세에 걸맞게 등산을 함에 있어서

또 하나의 흥미를 제공할 수 있으며 이러한

흥미로 인하여 사람들이 더욱더 등산을

즐길 수 있도록 하려는 것 이 우리 Applica

tion의 하나의 취지이다.

그리고 산에 대한 정보를 제공함으로써

더욱 안전하고 재미있는 등산을 함에 있어

도움이 되는 Android Application이다.

[그림 1] 한국인들이 즐겨하는 운동

우리나라에서 등산은 5대재난 현황 중 3순

위이며 매년 등산사고로 인한 인명피해가

늘어나고 있음을 [그림 2]과 같이 알 수 있

다.

Page 23: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 23 -

[그림 2] 5대재난 및 등산사고 인명피해

‘등산왕’ 어플리케이션을 사람들이 도입하

게 되면 해당 산의 위험요소와 여러 가지

정보가 설명되어 있어 사전에 이러한 사고

를 예방할 수 있고 조금 더 안전한 등산이

될 수 있도록 한다. 이렇듯 ‘등산왕’ 어플리

케이션은 안전하고 유익한 등산을 함에 있

어서 선도적으로 활용될 필요가 있는 어플

리케이션이 될 것이다.

II. 관련 연구

II-1 등산 정보 관련 Application

현재 등산 관련하여 많은 Application이

[그림 3]와 같이 Play 스토어에 등록이

되어있다.

여러 가지 등산 Application을 분석해본

결과, 대부분 등산로에 중점을 둔 어플리

케이션이었다. 이 또한 지도를 다운받아야

하는 번거로움이 있고, GPS로 등산로를

표시하는 데에는 분명한 한계가 존재한다.

그리고 대부분의 등산로는 팻말과 함께

표시가 되어있기 때문에, 등산로만 가지고

등산인들을 위한 Application 시장에 어필을

하기는 힘든 상황이었다.

그래서 우리는 NFC기술을 이용하여 산

정상에서 태그를 하여 산에 대한 역사 및

정보를 알수 있게하고, 각각의 ID마다

등정한 산들의 LIST를 보여 줄수 있게 하여

보다 더 등산에 재미를 추가하였다.

[그림 3] Play 스토어에 등록된 등산어플

II-2 NFC의 시장동향 및 규모

생활 속 사물들을 유/무선 네트워크로 연결

해 정보를 공유하는 요즈음, 우리는 등산이

라는 아이템을 Application에 접목시켜서 조

금 더 사람들이 안전할 수 있고, 건강 할 수

있게 하는 건강한 Application을 만들고자

하여 시작하게 되었다. 불과 3~4년 전까지만

해도 NFC는 생소한 개념이었다. 스마트폰이

보급되면서 대부분의 스마트 디바이스가 NF

C패러다임으로 전환 되고 있는 시기이다. 현

재 스마트폰, PC를 비롯하여 자동차, 가전제

품 등 다양한 제품에서 NFC가 이용되고 있

다. [그림 4]와 같이 이미 글로벌 시장은 NF

C 시장 성장을 긍정적으로 내다보고 이에

대비하고 있다. 성장 가능성으로 가장 높은

NFC장점은 보안 분야이다. NFC가 지닌 높은

암호화 기술로 보안, 인증 분야에서의 활용

도가 높을 것으로 전망하고 있다.

[그림 4] NFC의 시장동향 및 규모

Page 24: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 24 -

현재 등산 붐이 일어날 정도로 많은 사람들

이 등산을 즐겨하는 추세이다. 이러한 추세

에 걸맞게 등산을 함에 있어서, NFC기술과

Application의 연동으로 또 하나의 흥미를

제공할 수 있으며 이러한 흥미로 인하여 사

람들이 더욱더 등산을 즐길 수 있도록 한다.

그리고 산에 대한 정보를 제공함으로써 더

욱 안전하고 재미있는 등산이 될 수 있도록

도움이 되는 Android Application이 될 수

있다.

Ⅲ. 시스템의 개요

‘등산왕’ Application은 [그림 5]와 같이 전

국 각 지역의 산 정상에 NFC카드를 설치함

을 가정하여, ‘등산왕’ Application을 실행을

한다. 그리고 Android용 기기와 NFC카드의

통신으로 등정기록을 남길 뿐만 아니라 세

부정보까지 제공하는 Application이다.

[그림 5] 등산왕 시스템 시현

[그림 6]는 ‘등산왕’ Application의 흐름도

이다. NFC Tag를 함으로써 작동되는 알고

리즘을 표현한 것이다.

[그림 6] NFC 시스템 흐름도

Ⅳ. 시스템 구현

Ⅳ-1 Android Application 개발방법

[그림 7]은 java 기반의 Eclipse를 이용하여

등산정보를 서버로부터 가져오기 위해 XML

파싱을 구현하는 알고리즘이다. XML파싱은

DOM파서와 SAX파서로 나뉘며, 이중에 SA

X파서를 이용하여 서버에 있는 정보를 불러

오게 된다. 서버에는 등산 소재지와 등산로

등의 정보가 저장되어있으며, Application에

서 산 모양의 아이콘을 터치하게 되면 서버

로부터 소재지 및 다양한 정보들을 Applica

tion으로 불러오게 된다. 그리고 Application

기능중 하나인 날씨정보 또한, 기상청으로

부터 XML파싱을 통해 실시간 날씨정보를

제공할 수 있도록 구현하였다.

[그림 7] XML 이용한 서버와 APP의 연동

Page 25: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 25 -

[그림 8] NFC코드를 이용한 서버와의 연동

[그림 7]과 [그림 8]은 로그인을 한 후, 등

정을 하여 NFC태그를 하게 되면 고유의 ID

값에 자신이 등정한 산의 기록이 남게 된

다. NFC는 각각 고유의 산의 코드를 가지고

있으며, 서버에서는 NFC의 코드를 받아서

해당 코드값에 맞는 등산정보들도 함께 Ap

plication에 나타내게 된다.

Ⅳ-2 Application의 기능

첫 번째로는 [그림 9]의 회원가입 및 로그

인 기능이 있다. 회원제를 통해 회원관리가

가능하며, 회원 정보가 DB에 기록됨으로써

어느 기기든 Application 접속하기만 하면

자신의 등정 기록과 등산 정보를 알 수 있

도록 한다. 그리고 회원가입 시 보안 코딩

을 이용하여 개인정보유출을 사전에 방지한

다.

[그림 9] 회원가입 및 로그인 기능

두 번째는 [그림 10]의 등산 정보를 제공

하는 것이다. 등산 하기전 등산하고 싶은

산을 터치하게 되면 자세한 정보와 함께 안

전한 등반에 도움을 줄 수 있는 정보들을

불러오게 된다.

[그림 10] 등산 정보 제공

세 번째는 [그림 11]의 NFC Tag를 이용한

등정완료 기록 기능이다. NFC Tag를 이용

해 자신의 ID에, 자신만의 등정 기록을 남

기면서 성취감 및 흥미를 유발 할 수 있는

기능이다.

[그림 11] NFC태그로 등정 기록 남김

Page 26: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 26 -

마지막으로 [그림 12]의 날씨 기능이 있다.

사람들이 등산하기 전 기후와 온도를 체크

함으로써 등산을 할 때 참고가 될 수 있다.

[그림 12] 각 지역 산의 날씨 정보 제공

Ⅴ. 결론

본 고는 최근 스마트폰 NFC 기술의 미래

와 등산의 급속한 확산과 더불어 ‘등산왕’

어플리케이션에 대해서 살펴봤다. ‘등산왕’

어플리케이션은 어떻게 하면 시장을 확보

할 수 있는가라는 과제가 아직 남아 있다.

이는 우리가 생각하는 것으로는 각 등산

동호회나 카페에 직접 ‘등산왕’ 어플리케이

션의 재미와 더불어 여러 가지 유익한 점을

설명하면 충분히 등산객들로 하여금 흥미와

재미를 줄 수 있어 어플리케이션 시장을 확

보 할 수 있을 거라 생각한다. 따라서 이러

한 광고 및 마케팅 과제만 해결한다면 기술

적인 과제도 보안하고 이윤 및 성장 또한

기대할 수 있다.

참 고 문 헌

[1] 고현철, 유형목 Android의 모든것 분석

과 포팅, 한빛미디어

[2] 인경열, Android 프로그래밍, 가메출판

[3] 신민철, JAVA 개발자를 위한 XML, FRE

ELEC

[4] 김재필(KT경제경영연구소 김재필 팀장),

"첨단이 만드는 웹매거진 포털", HelloT

[5] 국민생활체육참여실태조사, 체육통계포

털 시스템 통계자료

Page 27: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 27 -

스마트 컨트롤 파밍 시스템Smart Control Farming System

------------------------------------------------------------------------------------------------------------

이현우, 반수현, 김정원

무선기술연구실

E-mail : [email protected]

[그림 1]스마트+농업의 언급량

요 약

본 논문에서는 시간이나 장소에 제약 받지

않고 편리하게 농업을 관리하기 위하여 스

마트폰과 MCU (Micro-Controller Unit)을

이용한 스마트 컨트롤 파밍 시스템(Smart C

ontrol Farming System)을 구현하였다.

작물 최적의 생육조건을 제공하기 위해 광

센서와 LED를 이용한 조도제어를, 토양습도

센서와 물 펌프를 이용한 토양 수분제어를,

온도센서를 이용한 환풍기와 열풍기 작동과

천장개폐를, 그리고 공중습도센서를 이용한

과습도 환경 제어 및 알람기능을 설치하였

다.

또한 이 시스템을 사용자가 원거리에서도

제어할 수 있도록 모바일 환경에서 시스템

을 조작하는 기능을 추가하였다.

I. 서론

현대사회는 ‘스마트폰의 시대’라고 할 만큼

스마트폰이 넓게 보급되고 많은 사람들이

사용하고 있다. 이러한 배경에 맞춰, ICT와

접목된 다양한 융합 기술이 미래의

기술력으로 큰 기대를 받고 있다. 농업

역시 ICT와의 융합을 촉구하고 있는 데, 그

대표적인 것이 스마트 팜이다. 농업과

정보통신기술(ICT)를 접목한다면 시간과

장소에 제약 받지 않고 농작물을 직접

관리할 수 있을 것이다.

[그림 1]에서 보는 것과 같이 스마트한

농업에 대한 언급량은 1년 사이에 35%가

증가한 것을 알 수 있다. 앞으로의 농업

기술은 보다 스마트한 방향으로 나아 갈

것이라 기대되며, 이러한 추세에 부응하여

MCU를 사용해 시스템 비용을 줄이고

일상적으로 보급된 스마트폰으로 MCU를

제어하는 시스템을 구축하였다.

II. 시스템의 개요

시스템은 [그림 2]와 같이 토양습도센서,

공중습도센서, 조도센서, 온도센서를 이용한

실시간 재배환경 조사 시스템으로 구축된

다. 이 센서 정보는 중앙제어장치(MCU)로

향하고 임베디드 시스템을 통해 펌프, LED

등의 작동기를 동작하게 한다.

Page 28: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 28 -

[그림 5] 토양과 공중습도 값의 예

[그림 3] 하드웨어 블록도

[그림 4] 시스템 제어 알고리즘

우리가 사용한 MCU는 Arduino Uno R3 보

드이고 이 제품은 간단한 Web Server를 구

축할 수 있는 기능이 있어 외부 인터넷에 접

속된 스마트폰, 노트북으로 제어할 수 있다.

[그림 2] 스마트 파밍 시스템의 개념도

III. 시스템 구현

III-1 각 센서를 이용한 환경 조사 시스템

[그림 3]은 시스템의 H/W 구성이며, [그림

4]는 기본적인 시스템 제어 알고리즘이다.

조도를 제어하기 위해 사용된 조도 센서는

CdS(황화카드뮴) 광센서를 사용하여 흡수되

는 빛의 양을 바탕으로 작물재배에 필요한

조도를 LED를 통해 추가적으로 제공한다.

또한, 녹색 식물은 녹색 빛을 흡수하지 못

하고 반사시키기 때문에 광합성을 보다 원

활히 하게 하기 위하여, LED 색상을 녹색을

제외한 빨강색과 파랑색으로 지정했다.

이는 식물에 보다 최적화된 빛의 색을 선

택 하여, 생장을 활발히 할 뿐만 아니라 소

요되는 전력도 절약할 수 있도록 하였다. L

ED는 RGB값으로 LED의 색을 제어할 수 있

는 기능을 가진 Adafruit 社의 16 NeoPixel

Ring을 사용하였다. 그리고 NeoPixel Ring

은 타 LED에 비해 충분한 휘도를 제공한다.

고휘도의 특성상 전력사용이 다소 높은데

MCU에서 제공할 수 있는 전력이 기대에

못 미쳐 건전지를 이용해 전력을 공급하였

다.

토양습도센서는 [그림 5]에서 보는 바와

같이, 토양습도센서([그림 5]의 SM Value)는

공기 중에서 0의 값을, 물에 충분히 적신

휴지(흙)에서 1000의 값을 나타낸다. 항상

촉촉한 토양 조건을 유지하기 위해 센서 값

이 중간 값 500 이하로 떨어지게 되면 MC

Page 29: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 29 -

[그림 6] MCU과 센서, 작동기의 연결

[그림 7] 자체 웹서버 페이지

U에 연결되어있는 호스를 따라 올라가 천

정형 스프링쿨러에서 1초간 물을 스프레드

한다. 스프링클러를 활용하였기 때문에 보

다 균일하게 수분을 공급할 수 있다. 또한

알고리즘 한 회전의 시간을 10초로 설정했

기 때문에 넓은 범위에서도 적절한 수분공

급이 가능하도록 하였다. 펌프의 경우 MCU

에 공급되는 5V 정전압 어댑터로 충분히

동작이 가능하였다.

마지막으로 온도제어를 위해 반도체 온도

센서(TMP36 - Temperature Sensor)를 사용

하였다.

식물의 생장과 개화에 있어 가장 최적화된

온도는 섭씨 25도에서 30도 내외이다. 따라

서 [그림 4] 알고리즘에서 보는 바와 같이

온도 값을 30도로 지정하여 하우스 내 온도

가 30도 이상이 될 경우 환풍기를 열고, 10

도 이하가 될 때는 열풍기를 가동해 실내의

온도를 자동 제어할 수 있도록 구현하였다.

특히 열풍기의 경우, 식물과 직접적으로

바람을 쐬는 것이 아니라 하우스 천장에 위

치하여 하우스 내 공기의 흐름과 순환이 윤

활하도록 구현하였다.

[그림 6]에서 보는 바와 같이 모든 작동기

와 센서는 MCU와 연결되어있다. 여기서 M

CU 내의 작동기 Enable 변수는 웹이나 하

드웨어를 통해 MCU의 기능을 일부 제한하

거나 전원을 모두 끌 수 있게 한다. 매 알

고리즘의 회전 시 각 작동기의 Enable 여부

를 확인하고 알고리즘의 Skip기능을 구현한

다.

III-2 모바일 단말기를 통한 MCU의 제어

MCU로 사용한 Arduino Uno r3는 간단한

웹 서버 포맷을 제공한다. 이를 이용해 Clie

nt(스마트폰)의 접속 요청이 있을 때 [그림

7]과 같은 웹 페이지를 제공하는 코드를 작

성하였다. 스마트폰뿐만 아니라 Browser를

이용할 수 있는 모든 단말기에서 사용이 가

능하다. 이 웹 페이지를 통해 현재 모든 센

서 값을 열람할 수 있고 작동기의 Enable

여부를 설정할 수 있다.

센서 값 확인 전 Boolean enableSensor

변수가 True인지 체크하고 동작을 실행한

다. enableSensor는 MCU의 첫 실행 시 Tru

e로 초기화 되어있는데 웹 페이지를 통해서

False로, True로 설정할 수 있다.

Ⅳ. 결론

임베디드 소프트웨어를 구성할 수 있는 Ar

duino 社의 제품을 통해 우리는 파밍환경에

서 작물의 최적 생육조건에 입각한 재배환경

을 위해 급수, 가습, 조명 제어 시스템을 구

현하였다.

이와 더불어 원격으로 관리가 가능한 웹

페이지 기능을 구현하여 네트워크를 통한

MCU 제어와 작물 생육 조건을 열람을 가

능하게 하였다.

Page 30: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 30 -

나아가 Windows 환경의 Processing을 통

해 작물별 최적 생육조건을 도출하기 위한

빅데이터 수집 및 분석 프로그램 작성의 하

드웨어적 도태가 마련되었다. 이런 주기적

데이터 수집으로 대규모 시설영농으로 확대

가 가능한 시스템을 구축할 수 있을 것이

다.

참 고 문 헌

[1] 마시모 밴지, 손에 잡히는 아두이노, 인

사이트

[2] 톰 아이고, 재잘재잘 피지컬 컴퓨팅 DIY,

인사이트

[3] 김응석, 쉽게 배우는 웹앱&하드브리드

앱, 이지스 퍼블리싱

[4] 아두이노, www.arduino.cc, Arduino 제

작사 공식 웹

[5] Home Garden Community, http://ww

w.instructables.com, DIY Community

Page 31: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

* 지도교수 : 이 훈 교수 - 31 -

버스노선 자동안내 시스템Automatic Bus Route Guiding System

------------------------------------------------------------------------------------------------------------

배재학, 차주호, 장영훈 창원대학교 정보통신공학과 네트워크연구실 *

e-mail: (배재학) [email protected](차주호) [email protected]

(장영훈) [email protected]

요 약

적절한 버스 안내판의 유무와 안내판의 시

각적 향상을 위하여 버스노선 자동안내 시

스템(Automatic Bus Route Guiding Syste

m)을 구현하였다. 본 제품은 Raspberry Pi

2 B2 model, Raspbian Operating System,

Python, GPS module 이용하여 시내버스노

선을 자동으로 안내하는 시스템이다. 모니

터를 연결한 초소형 컴퓨터 Raspberry Pi를

버스 내부에 설치, 기사의 버스번호, 종점

입력으로 프로그램이 작동한다.

GPS module을 활용하여 입력된 버스의

정류장 좌표와 현재 좌표를 비교하고 정류

장 반경 50M 내에 들어올 시 이번 정류장,

다음 정류장, 이번 정류장의 경유 노선을

모니터에 출력한다.

I. 서론

시내버스로 원하는 곳에 이동할 때 어떤

버스를 타야하는지 그리고 어디서

내려야하는지 잘 모르는 경우 스마트폰이나

정류장의 패널을 보고 버스노선정보를

확인하거나 주변 사람들에게 또는

버스기사에게 물어보고 시내버스를

이용하더라도 버스에서 내리기 전에 “몆

정거장 더 가면 되는가?, 이 정류장에서

내려야 되는 게 맞는가?” 하면서

버스노선정보를 다시 확인하고 싶어진다.

그러나 버스내부에서 버스노선정보를 확

인하려면 스마트폰이나 버스에 붙어있는 패

널을 이용해야 되는데 스마트폰으로 검색하

기 어려워하는 고객들도 있고 검색결과가

부정확 할 때도 있으며 버스패널조차도 최

신노선으로 변경되거나 노선이 너무 많은

관계로 생략된 정류장이 있는 것으로 확인

되었다.

이를 개선하고자 버스내부에서 모니터를

통한 정지영상 및 동영상 출력을 이용하여

버스노선정보, 이번정류장, 다음정류장, 정

류장 경유노선을 알기 쉽게 보여주고, 광고

나 버스회사의 공지사항을 보여줄 수 있는

제품을 만드는 것을 목적으로 개발하게 되

었다.

II. 시스템의 구조

버스노선 자동안내 시스템은 라즈베리파이

를 이용하여 개발되었는데 그 이유는 교육

용 초소형 컴퓨터로써 모니터 키보드를 통

해 입력 출력이 가능하고, 운영체제를 설치

하여 조작할 수 있고, 인터넷에 접속하여

검색도 할 수 있고, 다양한 기기들을 USB로

연결하여 사용할 수 있고, GPIO 포트를 이

용하여 회로를 구성하여 전자제품을 만들어

볼 수 있음에도 불구하고 파이의 가격은 고

작 3~4만원 사이이다

Page 32: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

* 지도교수 : 이 훈 교수 - 32 -

그러므로 수리 불가능한 상태로 고장이

나서 교체를 하더라도 가격적인 부담이 크

게 없다는 점과 노선정보, 펌웨어 업데이트

가 유에스비 연결을 통해 쉽게 할 수 있다

는 점에서 유지보수에도 용이하며 파이 내

부의 개발 프로그램인 파이썬을 이용하여

노선안내 기능을 구현할 수 있기 때문에 라

즈베리파이를 이용하여 작품을 개발했다.

버스노선 자동안내 시스템은 하드웨어와

소프트웨어로 나눌 수 있는데 먼저 하드웨

어는 다음과 같이 구성된다.

[그림 1] 버스노선 자동안내 시스템

하드웨어 구조

하드웨어 구조로 라즈베리파이는 휴대폰

충전기와 같은 5pin으로 된 선으로 전원을

공급하고 모니터를 HDMI선으로 연결하여

화면을 출력한다. 그리고 USB포트에 트랙볼

키보드로 프로그램 실행, 버스번호 입력, 시

작위치 선택, 무선랜카드로 펌웨어 업데이

트를 목적으로 인터넷 연결, 파이의 GPIO에

안테나가 달린 GPS를 연결한다.

소프트웨어 구조는 파이썬을 이용한 프로

그래밍을 기반으로 TkInter 모듈을 활용한

GUI환경을 기본으로 하며 다음과 같이 구

성한다.

동영상 출력

[그림 2] 버스노선 자동안내 시스템

소프트웨어 구조

일반적으로 시내버스는 한 대의 버스에

번호가 여러 개 할당되어 운행되기에 운전

자는 운행 전에 먼저 버스번호를 입력하고,

종점을 선택하여 시작버튼을 누르면 자동으

로 안내가 진행된다.

Page 33: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

* 지도교수 : 이 훈 교수 - 33 -

노선 안내는 Pygame 모듈을 활용하여 입

력받은 버스번호와 종점에 맞는 버스정류장

들의 GPS값이 저장된 리스트를 받아 온 다

음 노선 안내를 시작한다.

노선 안내를 위해 상태를 ST1과 ST2로

구분하는데, ST1일때는 일반적인 운행상태

를 나타내고, ST2일때는 정류장을 기준으로

반경50m안에 들어왔을때를 나타낸다.

ST1일때는 현재위치의 GPS값과 정류장리

스트의 GPS값들을 비교하면서 가까운 정류

장에 도착했는지 비교하는데, 도착하지 않

았다면 버스의 전체노선과 동영상광고, 정

지영상 광고를 출력하는데, 출력하면서도

계속 현재위치의 GPS값과 정류장리스트의

값들을 비교하기때문에 가까운 정류장에 도

착하면 상태는 ST2로 바뀐다.

ST2일때는 GPS값 비교와 ST1에서 출력하

던 것을 멈추고 정류장리스트에서 찾아낸

GPS값에 맞는 정류장을 기준으로 이번 정

류장, 다음 정류장, 정류장 경유노선을 출력

하고 정류장을 벗어나지 않았을 경우 다시

이번 정류장, 다음 정류장, 정류장 경유노선

을 출력하고 정류장을 벗어났다면 상태는

ST1으로 바뀐다.

특히 시작순서에 맞춰 차례대로 정류장

정보를 출력하는 것이 아니라 GPS값의 비

교를 통해 버스노선정보를 출력하는 구조이

기 때문에 중간에 버스가 멈춰 파이의 전원

공급이 중단되어 프로그램이 중단되더라도

다시 실행시키면 문제없이 노선정보를 안내

할 수 있다.

III. 시스템 개발 환경

Ⅲ-Ⅰ. 라즈비안 운영체제

본 시스템은 라즈베리파이 안에 데비안

기반의 리눅스 운영체제인 라즈비안을 사용

하며 라즈베리파이 재단 홈페이지에서 무료

로 다운로드할 수 있다.

Ⅲ-Ⅱ. 파이썬 2.7 Version

프로그램은 라즈비안을 설치하면 자동

으로 설치되어 있는 프로그램이며 2.x버전과

3.x버전으로 구분된다.

사람들이 2.x버전과 3.x버전 중에 어

떤 게 더 낳은지 고민하고 있으나 본 시스

템을 구현하려면 필요한 몇 가지 모듈들이

3.x버전에는 적용이 불가능하기에 2.x버전을

사용했다.

Ⅲ-Ⅲ. 1920x1080 모니터

동영상 출력 기능을 구현하려면 해상도의

고정이 필요한데, 본 개발에서의 해상도는

1920x1080이다.

Ⅲ-Ⅳ. 모니터 전원 공급을 위한 인버터

설치

본 시스템은 모니터로 정보를 출력하기

때문에 버스 내부에서 모니터 출력을 위한

220V의 전원공급이 반드시 필요하며, 이는

버스에 인버터를 설치하여 해결할 수 있다.

Ⅳ. 기대효과 및 활용방안

본 개발의 기대효과 및 활용방안은 다음과

같이 3가지로 요약된다.

Ⅳ-Ⅰ. 승객을 고려한 노선정보 안내

버스의 노선은 대부분이 뒷문 위에 작은

글씨가 적힌 패널로 나와 있기에 패널 앞으

로 가야만 노선 정보를 확인할 수 있으며,

글씨가 작거나 불빛이 비춰지지 않을 땐

[그림 3] 설치 위치

Page 34: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

* 지도교수 : 이 훈 교수 - 34 -

알아보기 힘들다.

특수형 버스는 LED전광판을 통해 하차할

정류장과 그 다음 정류장을 알 수 있지만,

글자가 계속 움직이거나 알록달록한 색 때

문에 알아보기 힘들다는 평가가 많으며,

LED전광판에 대한 인식조차 없는 사람들도

있다.

반면에 본 개발에서 시스템은 [그림 3]의

위치에 모니터로 버스 노선정보와 이번정류

장과 다음정류장 정보를 출력하므로 차 내

의 밝기에 관계없이 많은 사람들이 고정된

화면에서 정보를 알 수 있다.

Ⅳ-Ⅱ. 버스회사의 공지 방법의 변화

버스노선의 폐지나 변경, 운행시간의 변

경 등 버스회사에서 공지를 위해 A4용지로

출력해서 버스 내부에 붙여놓는 경우가 많

은데, 이를 컴퓨터이미지나 동영상으로 만

들어 모니터로 출력을 통해 승객들에게 보

여줄 수 있으므로 A4용지를 사용하지 않아

친환경적이고, A4용지에 제한되지 않아 더

욱 글씨를 크게하여 어르신들도 편하게 볼

수 있고 더 많은 정보를 전달 할 수 있다.

Ⅳ-Ⅲ. 광고를 통한 버스회사의 수익 증가

운행 중에 정지영상, 동영상 출력이 가능

하기에 기업체와 계약하여 광고를 출력시킬

수 있는 수단이 될 수 있으며, 설치비용, 유

지비용을 고려한다면 2~3년 뒤 부터 흑자

가 될 수 있을거라 예상된다.

Ⅴ. 결론

본 연구에서 구현한 시스템을 향후 실제

버스에 적용한다면 버스이용의 편리성이 상

향되어 대중교통 이용자가 증가하여 석유사

용량을 낮춰 환경문제 해결과 경제 활성화

에 큰 도움이 될 것이다.

참 고 문 헌

[1] 라즈베리파이 재단 http://www.raspber

rypi.org/

라즈베리 파이에 대한 지식, 정보 기록,

라즈비안 다운로드

[2] 이재상, 표윤석, 라즈베리 파이 활용백서

: 실전 프로젝트 20, 비제이퍼블릭, 2013.

[3] Simon Monk, (파이썬으로 시작하는)라

즈베리 파이 프로그래밍, 제이펍, 2013.

[4] TkInter wiki page,

https://wiki.python.org/moin/TkInter

TkInter 모듈 사용법 기재

[5] Pygame 홈페이지,

http://www.pygame.org/hifi.html

Pygame모듈 사용법

[6] 창원 버스 정보시스템

http://bus.changwon.go.kr/main/index.jsp

창원 버스 시스템 문의, 버스노선 참고

[7] 박응용, Jump to Python, 정보게이트,

2001.

Page 35: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 35 -

스마트 날씨시계Smart Weather Watch

------------------------------------------------------------------------------------------------------------

박태욱, 최백서, 이제원

아이비스 IVIS

E-mail : [email protected]

요 약

최근에 사물인터넷이 대중화되면서 많은

제품이 출시되었다. 실시간으로 날씨의 정

보를 받아오기 위해서 WiFi Shield를 이용

하여 날씨 정보를 제공하는 Open Weather

map api를 이용하고, 아날로그시계처럼 형

태로 표현하기 위해 Setpping Motor를 사

용, 현재의 도시 정보를 표현하기 위해 LCD

Display를 사용하였다.

그리고 도시 정보를 바꾸기 위하여 6가지

의 버튼도 설치하였지만 조금 더 많은 도시

를 표현하기 위하여 Bluetooth를 이용하여

Moblie과 연동하여 Application으로 도시

정보를 변경 가능하다.

I. 서론

Smart Phone의 사용이 급증하면서부터 날

씨에 관한정보를 TV나 컴퓨터를 통하여 정

보를 얻지 않고 간단하게 볼 수 있는 Smar

t Phone으로 정보를 얻는 것이 대중화 되

었습니다. 이와 더불어 사물인터넷이 이슈

화 되면서 많은 가정 제품이 Smart Phone

과 연동되면서 사용되기 시작했다.

이렇게 사물인터넷과 Smart Phone이 대중

화 대면서 이를 이용하여 날씨만을 볼 수

있는 제품이 많이 등장 하였는데, 그 중에

서는 "Weather Cube", “Weather Cloud" 등

이 있다.

기존의 제품들은 실제 날씨를 표현하면서

현재 날씨를 알려주기 때문에 정확한 날씨

의 표현이 되지 않는다.

그래서 아날로그 벽걸이 시계 형태를 이용

하여 날씨 정보를 표현해보고자 날씨 시계

를 제작하였다.

II. 시스템의 개요

[ 그림 1 ] 날씨 시계 시스템 개념도

[그림 1]과 같이 Arduino, WiFi Shield를 이

용 하여 날씨 정보를 제공하는 Web Site에

접속하여 실시간으로 날씨정보를 받아온다.

필요한 정보를 받아온 Master Arduino는

Motor를 제어하는 Arduino와 LCD를 제어

하는 Arduino에 각각의 필요한 정보를 전송

한다.

날씨 정보를 제공하는 도시의 정보는 미리

Page 36: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 36 -

설정해놓은 Switch를 이용하여 도시 정보를

바꾸는 방법과 Blutooth를 이용하여 모바일

Application으로 원하는 도시 정보로 바꿀

수 있다.

III. 시스템 구현

III-1 Motor를 이용한 시계 시스템

Open Weather Map에서 제공하는 날씨

정보를 필요한 부분만 받아오기 위해서 Ard

uino를 Web에 접속을 시켜야 하는데 이것

을 실행하기 위해서 WiFi Shield를 이용하

여 접속하고 필요한 날씨정보만 받아쓰기

위해 파싱을 해야 한다. 하지만 Arduino의

메모리가 한정적이기 때문에 파싱을 하다

보면 메모리 부족 현상이 생긴다. 이를 해

결하기 위해 Serial Monitor에 표시되는 정

보를 전부 Flash memory로 돌려 사용하였

다.

[그림 2] WiFi접속 및 날씨, 온도, 도시 정보

[그림 2]에서 보는 바와 같이 Open Weathe

r Map api에 접속 성공 메시지를 출력 이

후 원하는 도시의 날씨, 온도, 현재 시간의

정보를 파싱한다. (도시의 정보는 처음 Ope

n Weather Map에 접속할 때 미리 정한다.)

접속에 성공하고 파싱을 하는데 처음에는

날씨 정보를 실시간으로 받아오기 위해서

재접속을 하는 딜레이 시간을 주지 않았다.

딜레이 시간을 주지 않으니깐 10번 정도의

재접속 이후 소켓이 끊어지는 현상이 발생

하였다. 이를 해결하기 위해서 재접속을 하

는데 약간의 딜레이를 주었다. 대략 5초 정

도의 딜레이 이후에 재접속을 시도하는 방

식으로 변경하였다.

파싱을 성공한 Master Arduino는 나머지

하위 Arduino에게 필요한 정보들을 전송한

다. Motor를 제어하는 Arduino에게는 온도

정보를 int값으로 전송하고, 날씨 정보는 미

리 날씨의 개수를 정해 놓고 번호를 매겨서

int 값으로 전송한다. Master Arduino로부터

받은 정보들을 이용하여 각각의 수치에 맞

게 미리 정해놓은 각도로 Motor를 제어한

다.

LCD에 표시할 정보들은 Open Weather M

ap을 파싱하면서 받아온 정보들을 그대로 L

CD 화면에 표시한다.

III-2 모바일 단말기를 통한 시계 제어

→[Application 시작] [Seoul Button 선택]

[그림 3] 날씨 시계 작동

Blutooth 모듈을 이용하여 Mobile기기에

Page 37: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 37 -

접속한다. Mobile기기는 Application을 이용

하여 시계의 정보를 변경한다. 시계가 Ope

n Weather Map에 접속하고 파싱이 성공적

으로 이루어졌을 때 5초 이후에 재접속을

시도 한다. 재접속이 이루어지기 전이나 이

후에 도시정보를 변경하고 저장을 해버리면

재접속이 이루어 질 때 변경된 도시로 접속

을 시도 한다. 이렇게 원하는 지역을 변경

하면서 날씨 정보를 제어한다.

Ⅳ. 결론

사물인터넷을 이용하여 많은 좋류의 악세

사리 및 기기들 중에서 날씨를 표현하는 기

기들도 여러 가지가 나오고 있다. 그중 실

용적인 면에서 지금 만든 날씨 시계가 집안

들 꾸며 줌과 동시에 날씨를 보다 쉽게 알

려 준다. 지금 까지 나온 날씨정보 기기들

을 보면 현재 날씨를 표현하는데 중점을 두

고 있지만 날씨 시계는 벽걸이 형태로 지나

가다 지금 날씨 및 온도 등을 아날로그 형

태로 보다 알아보기 쉽고, 원한다면 다른

도시의 날씨들도 미리 알 수 있다.

참 고 문 헌

[1] www.arduino.cc 아두이노 공식 사이트

[2] http://kocoafab.cc/tutorial/view/102 아

두이노 WiFi 접속 예제 사이트

[3] http://www.openweathermap.org 날씨

정보 제공 사이트

Page 38: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 38 -

아두이노를 이용한 탁상알람시계Table Alarm Clock using Arduino

------------------------------------------------------------------------------------------------------------

김종우

창원대학교 정보통신공학과 4학년

E-mail : [email protected]

요 약

본 작품은 일상생활에서 사용 가능한 탁상

알람시계를 아두이노R3 Uno보드와 LCD160

2, 피에조부저 등을 기반으로 개발한 작품

이다.

I. 서론

아두이노는 오픈 소스를 기반으로 한 단일

보드 마이크로컨트롤러이다. 기존 AVR

프로그래밍은 WinAVR로 컴파일 하여

별도의 ISP장치를 통해 업로드 해야 하는

번거로운 과정을 거쳐야 하는데,

아두이노는 컴파일 된 펌웨어를 보드 내 U

SB 포트에서 PC의 USB 포트로 케이블을

연결하는 것만으로 쉽게 업로드를 할 수

있다. 그리고 여러 개발자들이 만들어 놓은

라이브러리도 공유되어 개발 시간을

단축시키고 있다는 것이 아두이노의 큰

장점이다. 이 장점을 바탕으로 아두이노를

이용해서 디지털 시계에 알람기능을 추가한

작품을 개발해 보았다.

II. 시스템의 개요

본 작품 아두이노를 이용한 탁상알람시계는

아두이노를 이용하게 된다.

시스템은 MCU는 Ardunio Uno R3로 하고

시계 화면은 LCD 1602로 나타내어진다. LC

D 1602는 10K가변저항기로 인해 시스템 밝

기를 조절할 수 있으며, 피에조 부저는 알

람기능이 삽입되었을 시에 알람이 울리는

기능을 한다. 그리고 스위치는 알람을 끌

수 있도록 하는 역할이다. AA배터리 박스는

Arduino Uno R3 전원을 On상태로 할 수

있도록 하는 건전지 역할을 한다.

[그림 1] 아두이노를 이용한 탁상알람시계

시스템 구성도

날짜, 시간을 출력하기 위해서는 외부라이

브러리를 사용하는 소프트웨어적인 방법과

RTC를 사용하는 하드웨어적이 방법이 있다.

전원을 킬 때마다 시간설정을 다시 해야 하

지만 특별한 부품이 필요하거나 코드가 복

잡한 것이 아니기 때문에 편리하다. 본 작

품은 swRTC 라이브러리를 다운받아 사용하

였으며, swRTC는 아두이노 홈페이지에서

Page 39: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 39 -

누구나 다운받을 수가 있다.

III. 시스템 구현

III-1 swRTC를 이용한 현재 시간설정

[그림 2] RTC를 이용한 현재 시간설정 화면

시스템 개요에서 RTC는 아두이노 전원을

킬 때마다 시간을 설정해줘야 된다고 하였

다. 하지만 [그림 2]와 같이 배터리박스가

있기 때문에 시간을 설정하고 업로드한 후

USB를 뽑아도 전원이 꺼지지 않음으로 써

탁상시계로 활용가능 하다.

III-2 알람시간 유효성 검사 및 시간 체크

[그림 3] 알람시간 유효성 검사 및 체크 소

[그림 3]은 알람시간 유효성 검사 및 체크

소스 화면으로 checkTheAlarmClock은 지정

한 알람시간이 유효한 시간인지를 검사하게

된다. 시 단위는 24보다 작고 분 단위는 60

보다 작아야 success를 출력하고 두 조건

중 하나라도 불만족 할 경우에는 Failed를

출력한다.

III-3 시리얼 통신을 통해 알람시간을 입력

받는 영역

[그림 4] 시리얼 통신 소스

[그림 4]을 보면 시리얼 통신으로 알람시

간을 입력받는 부분으로 Serial.available()을

통해 데이터가 들어왔을 경우에만 실행된

다. while문을 통해 입력된 알람시간을 the

day라는 버퍼에 읽어 저장하고 시리얼통신

으로 들어온 char형 변수를 숫자로 변환하

기 위해 atoi()함수를 사용하여 알람시간을

숫자로 변환한다. 변환한 알람시간은 AM, P

M 형식으로 변환되고 알람시간은 temp라

는 변수에 저장되어 checkTheAlarmTime()

함수의 매개변수로 쓰인다.

알람시간을 입력할 때에는 24시간방법으로

시분을 그대로 입력하게 된다. 예를 들어 2

247을 입력하게 되면 22시 47분을 입력한

것과 같으며 0754를 입력하게 되면 7시 54

분을 입력한 것과 같게 된다. 입력한 3~4자

리 숫자는 /100을 하면 시부분만 따로 떼어

낼 수 있으면 %100으로 나머지를 구하면

Page 40: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 40 -

분부분만 따로 떼어 낼 수 있다. 예를 들어

2145를 입력받으면 21시 45분을 나타내고

2145/100을 하면 21을 구해 시간을 구할

수 있고, 2145%100을 하면 나머지 45를 구

하면 45는 분이 된다. 이 방법으로 입력된

숫자를 시간과 분으로 구분하여 사용하게

된다.

[그림 5] 시리얼 모니터 화면

[그림 5]를 보면 정확하지 않은 시간을 넣

었을 때는 ‘Failed‘가 뜨고 정확한 알람시간

을 넣었을 경우에는 'Success'가 뜬다.

III-3 작품 구현

[그림 6] 작품 전면

[그림 6]을 보면 시간과 날짜 그리고 알람

시간을 나타내주는 LCD1602, 현재시간이

알람시간과 동일 할 경우 소리가 나는 피에

조 부저, 그리고 알람을 끌 수 있는 스위치

가 있다.

[그림 7] 작품 후면

[그림 7]은 USB케이블 입력부분과 건전지

역할을 하는 배터리박스 입력부분이다. 입

력을 위해 뒷부분에 알맞게 구멍을 내주었

다.

[그림 8] 알람시간 넣은 상태 화면

[그림 8]을 보면 시리얼 모니터에 1350를

넣으니 알람시간이 PM1시 50분으로 맞춰

졌다.

Page 41: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 41 -

[그림 9] 알람이 울리고 난 후 화면

[그림 9]와 같이 알람이 울리고 나서 스위

치를 1초 동안 누르거나 시간이 1분이 지나

게 되면 알람이 멈추면서 Alarm시간은 리

셋이 되어 진다.

Ⅳ. 결론

오픈 소스를 기반으로 한 단일 보드 마이크

로컨트롤러인 아두이노를 가지고 작품을 개

발해 보았다. 본 시스템에서는 RTC기능을 이

용하여 현재시간을 설정을 했고 시리얼 모니

터 기술을 이용하여 알람 시간을 넣어 알람

이 울리도록 하였다. 아두이노 블루투스 모

듈(HC-06)을 이용하여 스마트폰과 연동해서

알람시간을 설정한다면 더 편리하게 이 작품

을 이용할 수 있을 것이다.

참 고 문 헌

[1] 마이클 마골리스, 레시피로 배우는 아

두이노 쿡북

[2] 윤순백, “스케치로 시작하는 아두이노

프로그래밍”, 제이펍, 2013

[3] 아두이노, www.arduino.cc, Arduino 제

작사 공식 웹

[4] http://www.leonardomiliani.com/en/

Page 42: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 42 -

한글 교육용 스마트 키보드A Smart Keyboard for Practicing Hangul Word

------------------------------------------------------------------------------------------------------------

김은진 심영욱1)

창원대학교 정보통신공학과 네트워크 연구실

E-mail :[email protected]

[email protected]

요 약

본 연구에서는 한글에 익숙하지 않은 외국인,

노인, 유아들이 한글의 자음과 모음 특성을 이

용하여 반복학습을 통해 쉽고 빠르게 한글을

배우는 동시에 키 배열을 익히는 것을 돕기 위

한 스마트 키보드를 개발하였다.

개발된 키보드는 사용자가 타자연습을 위한

프로그램을 실행하면 사용자가 입력해야 할 키

에 LED가 직접 점등되고 해당키를 누르면 LED

가 꺼지는 원리를 이용하여 이용자가 무슨 키

를 입력해야 할지 직관적으로 알 수 있게 돕는

다.

개발된 키보드의 특징으로는 기계식 스위치

를 이용한 키보드이기 때문에 내구성이 매우

우수하여 어린이 시설, 노인복지시설, 그리고

한국어를 배우길 원하는 외국인 단체 시설에서

사용할 수 있다.

I. 서론

현재 우리는 정보화 시대 그리고 유비쿼터스

시대를 지나 IOT(Internet Of Things) 시대로

넘어왔다. 때문에 많은 사람들은 컴퓨터를 다

룰 줄 알아야 하고 일부분은 강요되기도 한다.

1) :이훈

한편, 저출산과 함께 사회적으로 크게 문제가

되고 있는 것이 고령화이다. [그림 1]은 우리나

라의 연도별 노인 비를 나타내고 있다.

[그림 1] 우리나라의 연도별 노인 비

고령화가 지속되면서 노인인구는 증가하고

있지만 이들을 위한 컴퓨터 교육 시설이나 프

로그램은 많이 부족한 상황이다. 스마트폰이

보급되고 인터넷을 접해야하는 상황은 많아지

면서 그들이 가장 크게 겪는 문제점 중 하나가

익숙하지 않은 타자로 인한 느린 타자속도라고

한다. 따라서 이번에 개발한 키보드를 이용한

다면 타자연습을 하는 동시에 한글을 익힐 수

있어 노인문맹 문제도 어느 정도 해소할 수 있

을 것으로 본다.

한편, 대중 문화컨텐츠가 국내뿐만 아니라 해

Page 43: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 43 -

외에서도 많은 사랑을 받으면서 우리나라가 문

화컨텐츠를 선도하는 국가가 되었다. 그로 말

미암아서 한류 붐이 전 세계적으로 일어나고

외국인의 한국 문화에 대한 관심이 늘어나면서

한글을 배우려고 하는 관심도 늘어나고 있는

데, 가수 싸이의 강남스타일이 이슈가 된 2012

년 TOPIK 응시자수가 폭증한 것이 이 현상을

방증한다. 아래의 그림은 연도별 TOPIK 응시자

의 증가 추이를 나타낸 것이다.

[그림 2] 연도별 TOPIK 응시자의 수

한글에는 외국인들이 사용하는 라틴계 언어

와 다르게 쌍자음이 있으며 키보드에는 자음과

모음에 따라 왼쪽, 오른쪽에 배열이 되어있다.

그러므로 본 연구에서 개발한 교육용 키보드를

이용하면 자음 모음간의 관계를 배워나가며 배

열에 대한 숙지를 동시에 할 수 있다고 생각된

다.

마지막으로 한글 공부를 막 시작한 유아들도

본 연구의 대상이 된다. PC의 보급이 일반화

되면서 어린 나이에 컴퓨터를 배우는 추세인

데, 영유아의 경우 타자연습을 통해 타자배열

과 한글을 동시에 익힐 수 있는 장점이 있다.

III. 시스템 구현

본 연구에서 사용한 디바이스로는 아두이노

Mega ADK와 Cherry社 MX Non-Click Switch

를 이용한 Mechanical Keyboard이고 아두이

노 Sketch 프로그램과 개발 언어로는 C 언어를

사용했다.

1. 아두이노와 스위치 회로

[그림 3]은 한글 교육용 키보드의 개념도를

나타낸 것이다. 기본적으로 아두이노 Mega A

DK 모델을 이용하여 각 키에 할당되는 LED와

키 입력을 통제하고 시리얼 통신을 통해 안드

로이드와 같은 외부기기와 통신을 한다.

[그림 3] 한글 교육용 키보드 개념도

그림 4는 각 그룹별 스위치의 개념도이다.

[그림 4] 각 그룹별 스위치 개념도

스위치의 동작 원리는 독일 Cherry 社의 기계

식 MX Switch를 이용하여 사용자의 입력을 구

분하고 각 아날로그/디지털 핀에 특정한 Analo

gRead값이 들어왔을 때 해당키를 출력한다.

[그림 4]에서 보는 것처럼 하나의 그룹 안에서

10 저항 연결에 의한 각기 다른 AnalogRead

값에 따라 키를 구분한다. 눌려진 키에서부터

종단까지 거치는 저항의 숫자가 다르기 때문에

키마다 AnalogRead값이 달라지는 원리이다.

AnalogRead는 전류나 전압과는 다른 개념이

다. 그림에서 보는 것처럼 키를 연결하면 연결

할수록 키 간의 AnalogRead값의 격차가 줄어

드는 것을 알 수 있다. 10을 사용하여 연결했

을 때 같은 그룹의 키 사이에 아두이노가 충분

히 식별 할 수 있을 만큼 AnalogRead값이 차이

Page 44: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 44 -

가 나게 하려면 그룹 당 최대 9~10키가 적당하

다. 다만 많은 키를 사용해야 하는 경우가 발생

한다면 가급적이면 오차율이 1%미만인 것을

사용하는 것이 좋다.

[그림 5]는 전체적인 키매핑을 나타낸다. 그림

에서 각 색깔이 키의 그룹을 나타내고 각 그룹

은 하나의 아날로그 핀을 배정받는다.

[그림 5] 입력단에 따라 그룹을 나눈 키맵

위의 키맵은 같은 그룹의 키를 짧은 시간에

연속적으로 누르게 되면 입력이 안 되거나 엉

뚱한 키가 눌려지는 '고스트 키‘ 현상을 방지하

기 위해 만들어진 키맵이다.

우선 연속적으로 누르는 한글의 자음과 모음

키, 연속적인 숫자, 영어의 모음에 해당하는 키

를 다른 그룹으로 분리했다. 그리고 문자키와

많이 쓰이는 Shift, Space와 같은 특수키는 독립

적인 그룹으로 편성했다.

타자연습에 필요한 문자키는 독립적으로 LED

를 조절할 수 있게 1키당 하나의 디지털 핀을

배정받는다. 나머지 키들은 인접한 키들 끼리

직렬로 연결하여 LED그룹을 만든다. 각 3 LE

D를 300Ω 연결하여 LED의 수명을 늘리고 밝

기는 아두이노 최대 밝기인 255로 설정하였다.

약 100개의 키의 입력과 LED를 제어해야하는

데 단일 MCU(Micro Control Unit)로 제어하기

위해서는 아두이노 모델 중에서는 핀이 제일

많은 Mega 혹은 Mega ADK를 사용해야만 한

다.

2. 아두이노 프로세서 내부 통신

아두이노 Mega/Mega ADK 모델은 Atmega2

560 메인프로세서와 16u2 usb 제어를 사용한

다. 아두이노는 32u2를 사용하여 기본적으로

HID(Human Interface Device) 환경과 Keyboar

d Library를 지원하는 레오나르도 모델이 있지

만 레오나르도 모델은 키 입력과 문자키의 독

립적인 LED를 제어하기에는 디지털/아날로그

단자가 턱없이 부족하다. 그래서 물리적으로

핀의 개수가 많은 Mega ADK모델의 펌웨어 해

킹을 통해 16u2칩을 32u2처럼 사용할 수 있게

했다.

아래의 그림은 해킹된 아두이노 시리얼 통신

의 회로도이다.

[그림 6] 해킹된 아두이노 시리얼 통신 회로도

아두이노 Mega ADK에서 16u2를 레오나르도

의 32u2처럼 쓰기 위해 DFU를 이용하여 독일

의 아두이노 프로그램 개발자 Nicohood가 개

발한 Hoodloader1을 업로드 한다.

원래 아두이노 Mega ADK는 Atmega 2560칩

에 부트 로더가 설치되어 있는데 Hoodloader1

을 설치하고 마이크로프로세서 펌웨어 업로드

프로그램인 AVRDude를 이용하여 ROMFlashi

ng을 하여 Hoodloader2 ROM 파일을 업로드

한다. Arduino Sketch를 통해서 KeyboardLibra

ry를 이용한 키보드 입력을 위한 소스코드와

제일 마지막에 KeyboardLibrary 명령어를 Seri

al값으로 변환 해주는 HID관련 소스코드가 추

가된 소스코드를 업로드 한다.

소스코드에는 LED를 제어하는 소스코드도 포

함되어 있다. 같은 키라고 하더라도 스위치의

핀과 LED의 핀은 독립적으로 연결되어 있기

때문에 하나의 키를 눌렀을 때 각각의 디지털/

아날로그 핀을 통해 명령을 내려야한다.

Page 45: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 45 -

기존의 키보드에서 일반적으로 사용빈도가

낮은 ScrollLock 키와 Pause 키는 각각 시리얼

매크로 키와 전체 LED ON/OFF 키로 구현했다.

Serial print를 이용하여 미리 입력한 코드를 출

력하는 키를 만들 수 있고 소스코드를 길게 작

성하면 키를 여러 번 누르는 효과 등 다양한

효과를 만들 수 있다.

그리고 사용자가 원하지 않을 때 DigitalRead

()값을 0으로 줘서 전체 LED를 끌 수 있게 구현

했다. 아두이노 내부에서는 Serial 통신을 하지

만 사용자가 입력한 KeyboardLibrary를 사용

하여 마치 HID를 이용하는 것처럼 느낄 수 있게

만드는 것이 펌웨어 해킹의 핵심이다.

HID를 위한 소스코드에는 내부적으로 Serial

통신을 할 때 상호간의 오류가 없는지 체크하

는 패리티체크 하는 코드가 포함되어 있다.

Ⅳ. 결론

본 연구에서는 스마트폰과 PC를 이용하여 반

복학습을 통해 누구나 쉽게 한글을 배울 수 있

도록 돕는 스마트 키보드를 개발하였다.

본 연구에서 개발한 키보드의 가장 큰 특징은

기존 키보드에 없는 매크로 버튼과 LED ON/OF

F 버튼을 만들었고, 장착된 LED를 미관상 아름

답게 색깔을 배치해 심미성도 살려 타자연습을

이용하지 않을 때의 활용도를 높였다.

본 연구의 장점으로는 두 가지가 있는데, 먼저

기계식 스위치의 뛰어난 내구성 때문에 기관이

나 시설에 보급해도 특별한 유지보수 없이 오

래 쓸 수 있다. 다른 한 가지 장점은 본 연구에서

사용한 HID방식은 OS에 구애를 받지 않기 때

문에, 어느 기기에서나 사용할 수 있고 그에

맞게 프로그램을 개발 할 수 있다.

본 연구에서 개발한 키보드가 향후 양산에 성

공한다면 게임, 소프트웨어 가이드 등 응용분

야가 확대될 것으로 예상된다.

참 고 문 헌

[1] 마이클 마골리스, 레시피로 배우는 아두이

노 쿡북, 제이펍, 2012.

[2] 키보드 매니아, www.kbdmania.net (온라

인 키보드, I/O장비 커뮤니티).

[4] 아두이노, www.arduino.cc (Arduino 제작

사 공식 웹).

[5] Nicohood Wordpress, https://nicohood.

wordpress.com (아두이노, 라즈베리파이

개발자 블로그).

Page 46: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 46 -

미세먼지 측정 시스템Fine Dust Measuring System

------------------------------------------------------------------------------------------------------------

김상규, 이지현, 정경원

IVIS연구실

E-mail : [email protected]

[그림 1] 전세계 도시의 미세먼지 오염 지도

요 약

산업화와 도시화로 인해 미세먼지 발생이

잦아지고 있고 최근 미세먼지가 인체에 미

치는 영향이 대두되고 있다. 아두이노를 이

용한 미세먼지 측정 시스템(Fine Dust Mea

suring System)을 구현하였다.

광학 미세먼지 센서, 온도, 습도 센서를 이

용해 미세먼지 농도[/], 온도[], 습도

[%]를 측정한다. 측정치 중 미세먼지 농도

와 온도를 7-세그먼트에 표시하고 측정치를

블루투스 통신을 활용해 스마트폰으로 전송

해 사용자에게 측정치를 알려준다.

측정치를 단순한 텍스트 형식이 아닌 캐릭

터를 넣어 사용자에게 감성적으로 데이터를

전달하며 최근 측정치를 데이터베이스에 저

장하여 그래프 형식으로 나타낸다.

I. 서론

산업화와 도시화로 미세먼지 발생이

잦아지고 있다. 하지만 눈에 보이지 않아

그 위험성을 사람들이 잘 인식하지 못한다.

미세먼지는 대기 부유 물질로 일급

발암물질로 지정되어있을 만큼 인체에

해롭다.

한국의 경우 [그림 1]에서 볼 수 있듯이

세계 보건 기구(WTO)가 조사한 자료에 따

르면 오염정도가 다른 국가에 비해 높은 것

으로 나타난다. 그리고 매년 황사로 인해

많은 피해를 보고 있다.

이러한 환경 속에서 특히 면역력이 떨어지

고 질병에 취약한 노인, 임산부, 어린이 같

은 경우 미세먼지의 심각성을 미리 인식하

고 그에 대한 대비를 하여 미세먼지로 인한

피해를 최소화하기 위해 사용자에 현재 있

는 공간의 미세먼지 농도를 측정하고 어플

리케이션으로 확인할 수 있는 측정 시스템

을 만들었다.

II. 시스템의 개요

개발환경으로 하드웨어로 아두이노 우노

보드(Arduino Uno)가 쓰였고 어플리케이션

개발 환경은 안드로이드 스튜디오를 활용했

다. 광학 먼지 센서(TF0144SEN), 온도 센서

Page 47: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 47 -

(LM35), 습도 센서(TSS9569)를 아두이노를

통해 입력받아서 미세 먼지 농도, 온도를 7

-세그먼트 세 개를 이용하여 데이터를 출력

한다.

이들 센서로 입력 받은 값을 블루투스 시리

얼 통신을 활용하여 스마트폰으로 전송해 준

다. 전송된 데이터를 입력 받아 사용자에게

단순한 텍스트 형식의 정보가 아닌 색깔과

캐릭터, 그래프를 이용해 친근하게 정보를

전달해 준다.

[그림 2] 시스템 구성

III. 시스템 구현

광학 먼지 센서, 온도 센서, 습도 센서를

이용해 아두이노 보드에 입력된 데이터를

[그림3]과 같이 7-세그먼트 세 개를 이용하

여 미세먼지 농도, 온도를 출력한다. 미세먼

지 농도의 경우 단위는 [/]이고, 농도를

세 자리 값으로 표시한다. 온도의 경우 단

위는 []이고 두 자리의 온도 값과 한자리

단위를 표시하여 둘의 값이 번갈아 가며 7-

세그먼트에 출력이 된다.

[그림 3] 7-세그먼트 출력

아두이노에 입력된 데이터를 블루투스 시

리얼 통신을 활용하여 스마트폰으로 데이터

를 전송한다. 어플리케이션을 실행하게 되

면 인트로 화면이 나오며 블루투스 사용 설

정 창이 뜨게 되고 허용하게 되면 다음으로

이미 페어링 된 기기 목록과 블루투스 연결

가능한 기기 목록을 표시한다. 아두이노 기

기가 미리 페어링한 상태이면 페어링한 기

기 목록에서 기기를 선택하고 그렇지 않으

면 아두이노에 연결된 블루투스 모듈을 찾

아 비밀번호를 입력하게 되면 페어링이 완

료된다.

어플리케이션은 총 3개의 탭으로 이루어져

있다. 첫 번째 탭은 페어링한 아두이노에서

미세 먼지 농도, 온도, 습도 값을 읽어 실시

간으로 사용자에게 보여준다. 미세 먼지 농

도의 해당 범위에 따라 색깔과 캐릭터 이미

지가 바뀐다. 미세 먼지 농도의 범위에 따

라 상쾌, 보통, 심각을 색깔과 캐릭터로 나

타내며 사용자로 하여금 측정치를 직관적이

고 친근하게 알려준다.

[그림 4] 그래프 출력

두 번째 탭은 [그림 4]와 같이 어플리케이

션이 실행될 때의 미세먼지 농도, 온도, 습

도 최초 전송 값을 어플리케이션 내부 데이

터베이스에 저장하게 된다. 이 저장된 최근

데이터의 값 일부를 불러와 그래프로 나타

내게 된다. 이 탭은 첫 번째 탭과 달리 실

기간의 데이터가 아닌 자신이 있는 환경의

전반적이고 통합적이 데이터를 사용자에게

제공하며 이 역시 그래프를 활용하여 사용

자가 데이터를 받아들이기 텍스트보다 편한

방법을 택하였다.

Page 48: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 48 -

[그림 5] 정보 탭 화면

세 번째 탭은 [그림 5]와 같이 어플리케이

션의 미세먼지의 농도에 따른 상태 설명과

개발자 정보를 제공하여 개발자와 소통할

수 있게 했다.

Ⅳ. 결론

아두이노와 안드로이드 어플리케이션을 이

용해 사용자가 있는 현재 위치, 공간의 미세

먼지를 측정할 수 있는 시스템을 만들었다.

최근 산업화와 도시화로 인해 미세 먼지로

인한 오염도가 증가하고 있다. 뉴스를 통해

현 지역의 미세 먼지의 농도는 알 수 있지만

자신이 있는 현재 위치, 공간의 미세 먼지

농도는 알 수가 없다. 미세 먼지 측정 시스

템을 활용하여 미세먼지 농도를 실시간으로

확인하고 미세먼지로 인한 피해를 줄일 수

있을 것이라 예상한다. 특히 면역력이 떨어

지는 노약자, 임산부, 어린이에게 더욱 필요

한 정보라는 점에서 색깔과 캐릭터를 이용해

텍스트 형식의 데이터보다 사용자로 하여금

보다 친숙하고 직관적으로 데이터를 전달한

다. 또한 그래프를 이용해 측정치의 변화량

을 볼 수 있기 때문에 언제, 어느 공간에서

미세먼지 농도가 높은지 확인하고 조치를 취

할 수 있다.

참 고 문 헌

[1] 정재곤, 안드로이드 앱 프로그래밍, 이

지스 퍼블리싱

[2] 아두이노, www.arduino.cc, Arduino 제

작사 공식 웹

[3] 안드로이드 펍, www.androidpub.com,

안드로이드 그래프 라이브러리

Page 49: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 49 -

피드백 지원 검색 기능 구현체Search Function Implementation with Feedback

------------------------------------------------------------------------------------------------------------

강문중

E-mail : [email protected]

요 약

이 논문에서는 이를 보완하기 위해 안드로

이드 플랫폼에서 스탠드얼론 동작이 가능한

검색 기능을 구현하고 그 구현체에 대해서

설명하고 있다.

검색 구현체의 관련도 평가 함수는 BM25

를 통해 과도한 빈도의 단어를 억제하고,

Pivoted Length Normalization을 통해 아이

템의 길이에 대한 정규화를 시켜 성능을 향

상시켰다. 또한 Rocchio's Method를 통해

묵시적 피드백을 지원하고 이를 통해 사용

자에게 맞춰 점진적으로 검색 결과가 변화

한다. 색인 작업은 오프라인/스탠드얼론을

위한 간단 색인, 그리고 온라인일 때의 정

밀 색인 작업의 두 단계로 나뉘어 동작 보

장과 성능의 향상을 모두 꾀했다. 이 구현

체는 쿼리 유추 기능을 통해 사용자의 입력

을 색인된 자료와 비교해 입력 내용을 예측

하고 오타 등의 사용자 실수에 대해서도 대

응한다. 그리고 검색 구현체의 멀티스레드

기능을 위해 Java에서 기본 제공되는 락인

ReentrantReadWriteLock을 Wrapper 클래스

를 작성해 락 모델을 변형했다.

1. 서론

정보의 양이 폭증하는 현대에서 웹이나 데

이터베이스 등지의 수많은 양의 데이터 중

에서 원하는 정보를 찾아주는 검색 기능은

이제 광대한 자료를 다루기 위해서는 필수

적인 요소로 자리 잡았다.

물론 이런 중요한 기능을 제공하는 구현체

는 시중에 이미 많이 있으며, 무료로 사용

할 수 있는 오픈 소스 프로젝트도 많이 있

다.

Apache Nutch의 경우 Web 검색 구현체

로서 여러 프로젝트에서 사용되고 있으며,

Xapian의 경우 프로그램에 탑재 가능한 구

현체로서 그 프로그램의 자체 DB에 대한

검색 기능을 제공한다.

그러나 이들 외에도 여러 프로젝트가 있지

만, 시중에 제공되는 검색 구현체 중 안드

로이드 플랫폼에서 프로그램 내의 데이터베

이스에 대한 검색 기능을 제공하는 구현체

는 없다는 한계가 있었다. 애플의 Spotlight

와 같은 비공개인 것들만이 있었다.

따라서 이 논문에서는 이를 보완하기 위해

안드로이드 기반의, 스마트폰 내에 탑재된

DB에 대한 검색 기능을 구현하였고 이에

대해 설명한다.

2. Ranking Function

2.1. Vector Space Model

기본적으로 이 검색 구현체는 VSM 이론에

기반하고 있다. 먼저 사용자가 보고 호출할

Page 50: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 50 -

그림 1 BM25 TF Transformation [5]

수 있는 아이템들은 구현체 내에서

ActionMacro 객체에 대응된다. 그리고 이

ActionMacro 객체는 ActionWord 객체을

여럿 포함할 수 있으며 이 ActionWord는

VSM 상에서 더 이상 분해할 수 없는 하나

의 독립된 단위로서 하나의 차원으로 간주

되며 전체 n개의 ActionWord가 있는 DB는

n차원 공간으로 취급된다. 그리고 모든 아

이템과 쿼리문 등은 이러한 각각의 단위에

대한 연관성값의 벡터의 합으로 취급된다.

그리고 보통 이 각각의 독립된 단위의 차원

은 서로 직교해야 가장 이상적이다. 그리고

이 구현체는 문장을 "Bag of Words"로 취

급하며, 따라서 문장 속 단어의 선후 관계

등은 고려하지 않으며 단지 각각의 아이템

을 순서를 구별할 수 없는 최소 단위의 집

합으로만 간주한다. [1][2]

그러나 이 구현체는 이 각각의 차원이 직

교관계에 놓인 두 벡터처럼 엄밀히 구분된

다고는 볼 수 없다. 인간이 사용하는 자연

어의 특성상 각 단어의 연관성을 엄밀하게

구별할 수 없어 완벽한 구분을 보장할 수

없기 때문이다. 예를 들어 스마트폰 자체에

서 진행되는 간단 색인만으로는 형태소 단

위까지의 분석이 이루어지지 않으므로 "풋

사과"와 "사과"의 연관성을 알아낼 수 없다.

"풋사과"는 "풋"+"사과"로 분리될 수 있다.

따라서 형태만을 보아도 분명 연관성이 있

는 단어들임에도 서로 다른 ActionWord로

처리된다. 이 예시 말고도 형태가 다른 유

의어, 동의어 등의 경우까지 포함한다면 형

태소 분석을 거쳐도 최종적으로 분해된 모

든 단위가 서로 직교한다는 보장은 불가능

하다.

2.2. BM25 for TF Transformation

ActionMacro에서 어떤 특정 ActionWord

가 많이 반복되는 경우가 있다. 간단한 예

시를 들자면 우리말의 조사나 영어의 be동

사와 같은 것들이 있다. 이런 ActionWord

들은 그 빈도수는 매우 높지만 그

ActionMacro의 중요한 뜻을 담는 경우는

거의 없기 때문에 실제로 검색어로서의 가

치는 없다. 즉, 어떤 단어가 어떤 아이템 내

에서 많이 반복된다고 해서 그 단어가 그

아이템과 깊게 연관성이 있는 것은 아니라

는 뜻이다.

따라서 이런 경우를 대비하기 위해 한

ActionMacro 내에서 너무 어떤

ActionWord가 많이 반복되는 경우 그

ActionWord의 중요도에 대해 패널티를 가

할 필요가 있다. 단 하나의 ActionWord가

다른 모든 ActionWord에 대해 너무 중요도

를 우세하게 가지는 경우를 막아야 하는 것

이다.

이렇게 중요도에 대한 제한을 수학적으로

두기 위해 이 구현체의 평가 공식에는

BM25를 적용되었다. BM25는 빈도가 높아

질수록 결과값이 특정 한계에 수렴하는 경

향을 보여 안정적이고 효율적이다. [3][4]

2.3. Pivoted Length Normalization

상대적으로 다른 ActionMacro들에 비해

너무 긴 ActionMacro의 경우, 그만큼 쿼리

에 매치될 확률이 평균적으로 높아진다. 간

단하게 예를 들자면 동일한 거리에서 작은

표적과 큰 표적을 두고 사격을 하는 것으로

볼 수 있다. 당연한 말이지만 큰 표적에 대

한 사격이 작은 표적에 대한 사격에 비해

명중률이 높을 것이다.

따라서 ActionMacro의 길이에 따른 패널

티를 부과해 길이에 따른 정규화를 시킬 필

요가 있다. 이 때, 너무 긴 ActionMacro에

대해서는 그만큼 패널티를 더 부과할 필요

Page 51: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 51 -

그림 2 Pivoted Length Normalization [7]

그림 3 동작 방식 6번에 의해 발생하는 문제

가 있으며, 반대로 너무 짧은 ActionMacro

에 대해서는 보너스를 주어야 한다. [6]

이 구현체에서는 PLN의 Pivot 지점을 평균

ActionMacro 길이로 결정한다. 따라서 PLN

보정계수는 평균 길이를 가지는

ActionMacro는 보정이 가해지지 않으며 이

에 대해 차이가 클수록 보정치의 크기가 커

진다. 또한 여기서의 "길이"라 함은

ActionMacro를 구성하는 ActionWord의 수

를 말한다.

2.4. 최종 평가식

앞서 언급한 BM25, Pivoted Length

Normalization을 적용해 만들어진 최종 평

가식은 다음과 같다. [8]

q 쿼리 벡터d 문서 (ActionMacro)c(c1, c2) c2 내에서 c1의 수|d| 문서의 길이avdl 전체 문서 길이의 평균M 전체 문서의 수df(w) w를 포함하는 전체 문서의 수b PLN 보정 계수

3. ReentrantReadWriteLock 개량

3.1 기존 ReentrantReadWriteLock의 문제

Java에서 제공하는 락 모델 중 하나인

ReentrantReadWriteLock의 동작 방식은 다

음과 같다. [9]

1) 쓰기 락은 읽기 락으로 격하할 수 있다.

그 역은 불가능하다.

2) 모든 락은 소유 스레드의 경우 재진입이

가능하다.

3) 읽기 락은 공유된다. 한 스레드가 읽기

락을 가지고 있으면 다른 스레드도 읽기

락을 가질 수 있다.

4) 쓰기 락은 동시에 단 한 스레드만이 가

질 수 있다. 쓰기 락은 읽기 락과 동시

에 걸릴 수 없다.

5) 대기열에 쓰기 락 요청이 있다면, 먼저

요청된 스레드라도 읽기 락 요청은 블럭

된다.

6) 대기열에 쓰기 락 요청이 있다면, 읽기

락의 소유 스레드의 재진입도 블럭된다.

여기서 문제가 되는 것은 5, 6이다.

먼저 문제가 되는 6번의 경우 이미 읽기

락을 소유한 스레드가 다층적인 Atomic 코

드 블럭을 손댈 때 문제가 된다. 모든

At\omic 코드 블럭은 시작과 끝에 읽기 락

을 걸고 해제하게 되어 있기 때문이다. 6

번 때문에 읽기 작업의 매 Atomic 블럭의

재진입을 보장할 수 없는 상황에 처하게 된

다.

이 경우 스레드 1은 겹친 3개의 Atomic

블럭을 지나는데, 3번째 블럭으로 진입하려

할 때 스레드 2의 쓰기 락 획득 요청이 큐

에 올라오고 이로 인해 영역 3으로의 진입

Page 52: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 52 -

그림 7 Wrapper 클래스의 동작 알고리즘

그림 6 해결된 동작 방식 6번의 문제

그림 5 동작 방식 5번에 의해 발생하는 문제

을 할 수 없게 된다. 그런데 스레드 1의

읽기 작업이 모두 끝나야 스레드 2의 쓰기

작업이 가능한데, 스레드 1이 영역 3으로

진입하려면 스레드 2의 쓰기 작업이 끝나야

하므로 데드락 상태에 빠진다.

그 다음으로 문제가 되는 것은 5번이다.

평상시에는 별 문제가 되지 않지만, 읽기

락을 가진 스레드가 병렬 처리를 하기 위해

다른 워커 스레드를 여럿 시작할 때 문제가

된다.

여기서의 하위 스레드들은 이미 읽기 락을

가지고 있는 주 스레드와 다른, 새로운 생

성된 스레드들이므로 읽기 락을 재진입하는

케이스에 들지 못한다. 하위 스레드들이 시

작하기 이전에 쓰기 락 획득 시도가 있을

경우엔 당연히 쓰기 락이 우선권을 가지므

로 하위 스레드는 읽기 락을 가지지 못하

며, 쓰기 작업 스레드도 주 스레드가 모든

작업이 종료되야 읽기 락을 해제할 것이므

로 쓰기 락을 확보하지 못해 데드락 상태에

빠진다.

3.2 개량점

기본 베이스는 ReentrantReadWriteLock

클래스로 두되, 그걸 감싸는 Wrapper 클래

스를 만들었다.

먼저 6번 상황의 문제에 대응하기 위해,

어떤 스레드가 읽기 락을 소유하지 않은 상

황에서 읽기 락을 확보하려는 경우

Wrapper 클래스에서 내부 RRWL 객체로 잠

금/해제 요청이 들어가도록 설계했다. 재진

입 혹은 그 역의 경우에는 이 클래스의 맴

버 HashMap<Thread, Long> 객체에서 각

스레드의 읽기 락 재진입 횟수를 따로 관리

하도록 만들었다.

그리고 5번 상황을 대응하기 위해서는 먼

저 주 스레드와 하위 스레드를 구분할 필요

가 있었고, 이를 해결하기 위해 Thread의

하위 클래스로 SubThread 클래스를 정의했

다. SubThread는 Thread와 별 차이는 없

으며 단지 그 하위 스레드의 주 스레드에

대한 참조 변수만이 추가되었다.

그리고 하위 스레드가 읽기 락에 대한 잠

금/해제를 요청할 때에는 그 요청을 무시하

고 바로 종료하게 만들었다. 하위 스레드는

주 스레드가 시작하고, 그 주 스레드는 읽

기 락을 가지고 있으며 주 스레드가 하위

스레드가 종료될 때까지 대기해준다는 조건

만 지킨다면 하위 스레드가 자체 읽기 락을

가지고 있을 필요가 아예 없기 때문이다.

앞의 읽기 락 잠금/해제에 덧씌운 것을 통

해 6번의 문제는 다음과 같이 해결된다.

본래라면 영역 3에 재진입 시 데드락 상태

가 되어야 하지만, 실제로는 자체 해시맵만

업데이트될 뿐이다. 그리고 읽기 작업이 마

Page 53: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 53 -

그림 8 해결된 동작 방식 5번의 문제

그림 9 변형된 코사인 유사도

무리되고 읽기 락이 해제되자 스레드 2에

쓰기 락이 주어지고, 스레드 2의 작업이 완

료된 후 스레드 2도 종료된다.시점에서는

스레드 1이 읽기 작업을 시작할 때 읽기 락

이 스레드 1에 주어지고 진입횟수는 1로 유

지되던 도중 스레드 2의 쓰기 락 요청이 전

달된 후 스레드 1가 읽기 작업을 끝내고 읽

기 락을 반환해 스레드 2에 쓰기 락이 전달

되었을 뿐이다. 아예 재진입 상황 자체가

RRWL 시점에서 발생하지 않으므로 6번 상

황 자체가 발생하지 않게 되는 것이다.

또한 5번 문제도 비슷하게 해결된다. 하위

스레드가 읽기 락 잠금을 시도할 때 RRWL

객체에 읽기 락 확보 시도가 아예 이루어지

지 않으므로 하위 스레드가 데드락에 빠질

수 있는 5번 상황을 회피하게 된다.

3.3 결론

이렇게 설계된 Wrapper 클래스를 통해서

락 모델의 동작은 다음과 같이 수정되었다.

1) 쓰기 락은 읽기 락으로 격하할 수 있다.

그 역은 불가능하다.

2) 모든 락은 소유 스레드의 경우 재진입이

가능하다.

3) 읽기 락은 공유된다. 한 스레드가 읽기

락을 가지고 있으면 다른 스레드도 읽기

락을 가질 수 있다.

4) 쓰기 락은 동시에 단 한 스레드만이 가

질 수 있다. 쓰기 락은 읽기 락과 동시

에 걸릴 수 없다.

5) 대기열에 쓰기 락 요청이 있다면, 먼저

요청된 스레드라도 읽기 락 요청은 블럭

된다. 단, 읽기 락을 이미 가진 스레드가

시작하는 하위 스레드는 부모 스레드처

럼 취급되어 이 경우에도 블럭되지 않는

다. 그리고 이 때 하위 스레드가 살아있

는 시간 동안은 반드시 부모 스레드가

읽기 락을 가진 채로 살아있어야 한다.

6) 쓰기 락은 읽기 락으로 격하할 수 있다.

그 역은 불가능하다.

그러나 이 Wrapper 클래스는 아직까지 개

량해야 할 주의점이 남아있다. 하위 스레드

인데, 하위 스레드는 동기화가 필요한 블럭

을 보호할 읽기 락이 주어지지 않으므로 하

위 스레드는 반드시 이미 읽기 락을 가진

주 스레드 내부에서만 호출해야 하며, 이것

을 강제할 수단이 없다는 점이다.

4. 쿼리 유추

이 구현체는 사용자가 검색어를 입력하면

입력된 내용을 기반으로 쿼리 유추를 수행

한다. 쿼리 유추는 두 가지 기능이 있다. 첫

째는 단순한 문자열에 불과한 검색어를 색

인된 정보와 연관된 쿼리 벡터로 변환하는

것이고, 두 번째는 현재 주어진 내용을 기

반으로 사용자가 의도하는 쿼리가 무엇인지

유추하고, 사용자의 키 입력 횟수를 줄이는

데에 있다. 예를 들어 "강" 자만 입력창에

입력되어도 "하강"이라는 단어가 해당 검색

어와 연관이 있을 수 있음을 판단하게 되는

것이다.

쿼리와 각 단어간의 유사도는 코사인 유사

도 방식을 변형해서 이용한다. 먼저 비교할

두 단어를 각 음절 단위로 서로 비교하게

된다. 일례로 "고길동", "홍길동"이란 단어를

비교하게 될 경우, "고"와 "홍", "길"과 "길",

"동"과 "동"이 짝을 이루게 된다. 그리고 비

Page 54: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 54 -

교대상이 되는 각 음절을 유니코드 정규화

방식 D(이후 NFD로 기술)로 분해해 초, 중,

종성을 분리한다. "고"와 "홍"의 경우 <ㄱ,

ㅗ,0>, <ㅎ,ㅗ,ㅇ>이 된다. 그리고 벡터의

내적 비슷하게 초, 중, 종성을 비교하되 자

모가 같으면 1, 틀리면 0으로 처리해 그 값

들을 합한다. 그리고 분모에는 코사인 유사

도와 비슷하게 두 음절별 각 자모의 수의

제곱근값끼리의 곱을 넣는다. 이리 되면 "고

", "홍"의 경우 중성만이 같으므로 1, 나머

지는 모두 0이 나오고, 따라서 분자는 1

이 되고, 각 벡터의 크기는 와 이므로 평가

값은 약 0.408248이 나온다. 그리고 뒤의

두 음절은 완전히 같으므로 둘 다 이 때 1

이 나오며, 이 3개의 값의 평균값을 입력값

과 비교대상 아이템과의 유사도로 결정한

다. 따라서 "고길동"과 "홍길동"의 유사도

평가값은 약 0.8027494로서 80.27%의 유사

도를 가진다고 볼 수 있다. 이 방식은 코사

인 유사도와 비슷하게 결과값의 범위가

0~1로 고정된다.

본래 이렇게 초, 중, 종성 단위까지의 분석

으로 인해 "ㄱ", "ㄴ"과 같은 쿼리만으로도

비교작업을 진행하는 것은 가능했다. 그러

나 이렇게 될 경우 저런 짧은 쿼리에 대해

비교해야할 아이템의 수가 너무 많아지므로

사용자의 입력 속도에 대한 대응이 떨어 질

수 있었다. 그래서 SQLite를 통해 먼저 한

음절이라도 일치하는 것들에 대해서만 비교

를 수행하도록 필터링을 한 후 반환된 아이

템들에 대해서만 일치작업을 수행하도록 제

한을 걸었다.

이렇게 쿼리 유추 단계를 거친 후 만들어

진 쿼리 벡터는 VSM에 따라 색인된 정보와

비교할 수 있게 된다.

5. 색인

이 검색 구현체는 색인 작업에 있어 주어

진 ActionMacro를 형태소 단위까지 쪼갤

수 있다.

단, 형태소 단위까지의 분석은 스마트폰

자체에서 해결하지 않는다. 형태소 분석에

사용한 라이브러리는 무료로 공개된 Java

기반의 Komoran 2.4e이며 여기에 같이 제

공된 한국어 위키피디아의 모든 데이터를

학습시킨 데이터를 첨부시켜 사용했다. 이

라이브러리는 너무 RAM 요구량이 커 에뮬

레이터에서의 로드 시도 결과 OOM 에러를

일으켰고 스마트폰 어플리케이션에서 자체

적으로 사용하는 것이 부적합했다.

이에 대응하기 위해 주어진 ActionMacro

를 두 가지 방법으로 색인하는 전략을 취했

다.

5.1 간단 색인 – 공백 단위 분리

먼저 스마트폰에서 스탠드얼론으로 처리하

는 간단 색인이 있다. 사용자가

ActionMacro를 추가하면 그 ActionMacro에

대해 스마트폰 자체적으로 간단하게 공백을

구분자로 삼아 단위를 분리한다. 예를 "I

like yours."는 "I", "like", "yours."로 구분된

다. 그리고 이를 스마트폰 내부의 데이터베

이스에 기록한다.

이 방식은 아래에서 언급할 형태소 분석

서버에 접속이 불가능한 오프라인 상황에서

의 동작 보장을 위해 마련되었다. 그러나

간단 색인은 형태소 분석이 되지 않으므로

의미있는 형태소 단위까지 정확한 분리가

불가능하다. 예를 들어 "풋사과"와 "사과"

란 단어가 추가된다면, "풋사과"는 "풋" + "

사과"로 분리할 수 있으나 간단 색인으로는

이를 수행할 수 없다. 따라서 "풋사과"와 "

사과"는 서로 독립된 ActionWord로 추가된

다.

그러나 앞서 언급한 쿼리 유추 기능으로

인해 간단 색인만으로도 이 문제는 다소 해

결된다. 예를 들어 간단 색인만 된 상태로 "

사과는", "사과를", "사과가"가 데이터베이스

에 있는 상태를 가정하자. 정밀 색인 처리

가 된다면 count=3인 "사과", "는", "를", "

가"로 분리해낼 수 있지만, 간단 색인 단계

에서는 그럴 수가 없다.

Page 55: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 55 -

그림 10 쿼리 유추로 간단 색인의 동작 보완

그림 11 전체 색인 작업의 순서도

하지만 사용자가 "사과"를 입력하면 쿼리

유추 단계에서 세 가지 ActionWord에 대해

유사도를 측정하게 된다. 그리고 세 가지

ActionWord는 모두 문자열 "사과"와 비교

시 높은 유사도를 보인다. 그리고 만들어진

쿼리 벡터는 "사과는", "사과를", "사과가"의

세 차원에서 0.66667 값을 가지는 벡터로

만들어진다. 그리고 이 쿼리 벡터를 통해

세 단어가 연관된 ActionMacro들이 검색되

게 된다. 비록 유사도 값이 차이가 나지만

결국 형태소 분석이 없더라도 어느 정도는

사용자가 입력한 단어에 대해 유사한 단어

들을 찾아낼 수 있는 것이다.

5.2 정밀 색인 – 형태소 단위 분리

그리고 원격 서버에서 동작하는 형태소 분

석 라이브러리를 이용한 정밀 색인이 있다.

앞서 언급한 라이브러리는 스마트폰 자체에

서 구동이 불가능하므로 독립된 서버에서

이 라이브러리를 구동해 문제를 해결했다.

형태소 분석 서버의 운영체제는 FreeBSD

9.3-RELEASE-p25이며, 구현체는 언어는

Java 8을 이용, Ecilpse IDE를 써서 작성하

였으며 openjdk8-8.45.14_2로 구동하였다.

또한 멀티스레딩과 오브젝트 풀링 기능을

넣어 최대한 최적화를 시도했다. 그리고 서

버-클라이언트간 통신은 최대한 패킷을 아

끼기 위해 객체 직렬화를 위해 기본

Serialization 구현체 대신 Kryo 라이브러리

를 사용했다.

정밀 색인에서는 앞서 언급한 "풋사과"의

문제가 해결된다. "풋사과"는 서버에서 "풋"

+ "사과"로 분리되고, 스마트폰에는 "풋"과

"사과"가 저장된다. 그리고 사용자가 추가한

"사과"는 앞서 추가된 "사과"와 같은 단어임

을 확인하고 새 ActionWord를 만드는 대신

기존의 "사과"의 count 수를 1 늘리는 것으

로 끝난다.

형태소 분석은 2가지 방법으로 두 결과를

얻은 후 그 두 결과를 병합해 사용한다. 공

백 포함 분석과 공백 미포함 분석이다.

이런 방식을 채택하는 이유는 공백을 포함

하는 고유명사의 존재 때문이다. 예를 들어

"나는 친구가 적다"라는 ActionMacro가 있

다. 형태소 분석 서버에 탑재된 Komoran

라이브러리에서는 공백 포함 분석시 "나는

친구가 적다"를 고유 명사로 판단하며, 공백

미포함 분석시 "나" + "는" + "친구" + "가

" + "적" + "다"로 반환한다. 분석 방법에

따라 판단 결과가 다른 것이다. 그리고 사

용자는 전자의 고유 명사로서 동명의 라이

트 노벨을 의미했을 수도, 아니면 후자의

평범한 문장을 의미했을 수도 있다. 따라서

이 두 가지의 경우를 모두 포함할 필요가

있다.

아이템을 수정하거나 새로 추가하는 이벤

트가 발생할 경우 이 구현체는 먼저 인터넷

에 접근이 가능한지 확인한 후, 접근이 가

능하면 서버로 아이템을 보내 그 처리 결과

를 받는다. 그 후 서버에서 결과값을 회신

받으며 이 처리를 맡겼던 해당 아이템이 그

사이에 변경되었는지 확인한다. 아이템이

만일 사용자에 의해 변경되었다면 다시 분

석을 해야하므로 회신받은 결과값을 버리지

만 그렇지 않다면 분석 결과값들은 아이템

Page 56: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 56 -

그림 12 Rocchio’s Method

의 최소 단위로서 DB에 업데이트된다. 이

일련의 송신-수신-업데이트 과정은 모두 백

그라운드 스레드에서 진행된다. 만일 서버

로의 접속이 불가능할 경우 다시 DB 업데

이트 이벤트가 발생할 때까지 대기했다 미

처리된 아이템에 대한 처리를 재시도한다.

단, 이 업데이트 작업은 단일 스레드로 동

작하게 만들었다. 어차피 SQLite의 쓰기 작

업은 반드시 동시에 한 명령씩만 처리되기

때문이다.

먼저 아이템이 추가되면 주 UI 스레드에서

대응되는 ActionMacro가 만들어지고 이

ActionMacro를 먼저 간단색인해 DB에 저장

한다. 그리고 이러한 DB 변경 작업이 발생

할 때마다 이벤트를 발생시키고, 이 이벤트

는 백그라운드 스레드를 관장하는

ThreadPool를 호출해 백그라운드 스레드를

시작시키게 된다. 이 때 백그라운 스레드는

동시에 단 하나만 가동되게 했다. 이 백그

라운드 스레드는 DB를 업데이트, 즉 쓰기

작업을 하기 위한 스레드인데, SQLite 3는

쓰기 작업의 경우 동시에 한 명령만 처리할

수 있기 때문이다.

그리고 백그라운드 스레드는 먼저 DB 상

에 정밀 분석 처리가 되지 않은 레코드가

있는지 확인해 그 목록을 확보한다. 그 다

음에는 서버의 접속 가능 여부를 확인한다.

그리고 만일 서버 접속이 가능하다면 형태

소 분석 서버로 한 레코드씩 정보를 전송해

분석을 요청한다. 앞서 말한 것과 같이 분

석이 진행되어 결과가 반환되면 먼저 백그

라운드 스레드가 하는 작업은 분석을 맡겼

던 레코드에 분석 작업이 진행되는 동안 사

용자의 개입에 따른 변경 사항이 있었는지

확인한다. 만일 그렇다면 분석을 다시 해야

하므로 결과를 버린다. 먼저 동일성 확인을

위해 백그라운드 스레드는 이 때까지 가지

고 있던 읽기 락을 해제하고 쓰기 락을 확

보한다. 검증 와중의 변경 작업이 있어서는

안 되기 때문이다. 그리고 동일성이 검증되

면 DB를 업데이트한 후 쓰기 락을 해제한

다. 그리고 다음 잔존 아이템이 있는지 확

인한 후 서버 접속 가능 여부 확인 단계부

터 작업을 반복한다.

6. Rocchio's Method를 쓴 묵시적 피드백

이 구현체는 피드백을 받으며 사용자의 반

응이 미래의 검색 결과에 영향을 준다. 사

용자의 사용 기록은 DB에 저장되며 점차

사용자의 선호에 따라 검색 결과가 조정된

다.

피드백은 Rocchio's Method를 사용했다.

피드백 대상 쿼리의 각 단위에 대해 사용자

에 의해 상관있는 것으로 판별된 아이템들

의 단위의 참조를 추가하되, 참조 보정값은

쿼리 내 각 단위의 코사인 유사도와 그 쿼

리의 기존 피드백 보정값에 따라 결정되어

기존 보정값에 더해진다. 또한 반대로 상관

없는 것으로 판별된 아이템들에 대해서는

동일한 계산 과정을 거쳐 보정값이 감소된

다. 그리고 이렇게 저장된 피드백 정보는

검색 시작 단계에서 쿼리 유추가 끝난 뒤의

쿼리에 대해 쿼리의 구성 단위와 연관된 피

드백 정보들을 가져와 쿼리를 한 번 더 보

정하는데 사용된다.

피드백 방식을 위해서 먼저 조건을 두었

다. 첫번째는 검색 결과는 평가값을 기준

내림차순으로 일렬로 결과가 출력된다는 것

이다. 그리고 두번째는 사용자가 맨 위에서

부터 차례차례로 검색 결과를 훑으며 자신

이 원하는 값을 찾는다는 것이다. 결과 출

력은 첫째 조건에 정확하게 부합되도록 만

들 수 있었지만, 두 번째 조건은 사용자의

행동 패턴이므로 단순 가정으로 넘어갈 수

Page 57: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 57 -

그림 13 Rocchio’s Method에 따른 쿼리 벡터의 확

그림 14 묵시적 피드백

밖에 없었다.피드백 방식은 사용자의 번거

로움을 피하기 위해 묵시적 피드백으로 정

했다. 사용자가 위에서부터 아래로 목록을

훑어 내려가며 클릭하는 아이템을 그 쿼리

와 상관있는 아이템, 클릭하지 않고 넘어가

는 아이템을 상관없는 아이템으로 결정하

고, 맨 마지막으로 클릭된 아이템까지만 사

용자가 검토한 것으로 간주했다. 그 아래의

클릭되지 않은 아이템에 대해서는 피드백을

할 수가 없다. 명시적 피드백이 아닌 이상,

사용자의 검토 여부가 확실하지 않기 때문

이다. 탐색 결과가 나온 직후부터 사용자가

결과의 탐색을 종료하는 시점, 즉 다른 메

뉴로 넘어가거나 새로운 검색어를 입력해

결과목록을 갱신해야 할 때까지 그 사용자

의 탐색 결과를 모은 뒤 한 번에 피드백된

다.

먼저 피드백을 위해서 피드백 정보를 관리

할 주체인 SearchImplicitFeedback 클래스를

정의했으며, 이 클래스는 알고리즘에 넘길

피드백 정보 그 자체 뭉치를 의미한다. 피

드백을 해야하는 액티비티는 이 클래스의

객체를 생성해 그 객체에 사용자의 반응을

기록한 후 검색이 종료되는 시점에서 검색

구현체에게 그 객체를 전달해 피드백 정보

를 처리해 DB에 기록하게 한다.

이 클래스로 피드백을 넘겨주는 방식에 대

해서는 DocumentProcessor 인터페이스를

선언하여 추상화시켰다. 피드백을 줄 액티

비티의 형태와 방식은 다양할 수 있기 때문

이다.

7. 결론

앞서 언급한 Ranking Function를 기반으로

이 구현체는 안드로이드 스마트폰 플랫폼에

서 스탠드얼론 DB 검색 기능으로서 동작하

는 것이 가능했다. 쿼리 유추 기능을 통해

사용자의 키 입력 횟수를 줄였고, 개량한

락 모델을 통해 성공적으로 데드락 상황 없

이 멀티스레드로 시간 지연이 발생할 수 있

는 모든 중요한 기능을 백그라운드 스레드

에서 동작할 수 있게 만듬으로서 구현체의

반응성을 증가시켰다. 그리고 묵시적 피드

백 기능을 통해 단순한 필터링 정도가 아니

라 사용자의 선호에 따라 검색 기능이 검색

결과가 점차 맞춰갈 수 있게 되었다.

이 검색 구현체는 다른 안드로이드 소프트

웨어에 임베디드 형식으로 탑재할 수 있어

DB의 정보에 대한 검색 기능 제공에 좀 더

편리한 길을 제공할 수 있을 것이다.

하지만 아직 더 많은 개선과 검증이 필요

하다. 충분한 시간과 자료만 주어진다면 이

검색 구현체의 성능을 좀 더 명확하게 평가

하고 단점을 파악해 개선하는 방안을 마련

할 수 있을 것이다.

참 고 문 헌

[1] G. Salton , A. Wong , C. S. Yang, A v

ector space model for automatic index

Page 58: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 58 -

ing, Communications of the ACM, v.18

n.11, p.613-620, Nov. 1975

[2] ChengXiang “Cheng” Zhai (16 Mar. 20

15). “Vector Space Model : Basic Idea”

Coursera. <https://www.coursera.org/co

urse/textretrieval>. (16 Oct. 2015).

[3] ChengXiang “Cheng” Zhai (16 Mar. 20

15). “1.8 TF Transformation” Coursera.

<https://www.coursera.org/course/textre

trieval>. (16 Oct. 2015).

[4] S. Robertson and H. Zaragoza. The Pr

obabilistic Relevance Framework: BM25

and beyond, Found. Trends Inf. Rear.

3, 4, Apr. 2009

[5] ChengXiang “Cheng” Zhai (16 Mar. 20

15). “1.8 TF Transformation” Text Retri

eval and Search Engines[On-line]. Page

6. <https://www.coursera.org/course/tex

tretrieval>. (16 Oct. 2015).

[6] A. Signal, C. Buckley, and M. Mitra. P

ivoted document length normalisation.

In Proceedings of ACM SIGIR 1996.

[7] ChengXiang “Cheng” Zhai (16 Mar. 20

15). “1.9 Doc Length Normalization” T

ext Retrieval and Search Engines[On-li

ne]. Page 5. <https://www.coursera.org

/course/textretrieval>. (16 Oct. 2015).

[8] ChengXiang “Cheng” Zhai (16 Mar. 20

15). “1.9 Doc Length Normalization” T

ext Retrieval and Search Engines[On-li

ne]. Page 6. <https://www.coursera.org

/course/textretrieval>. (16 Oct. 2015).

[9] Oracle (28 July 2011). “Class Reentrant

ReadWriteLock” Oracle Java Reference.

< http://docs.oracle.com/javase/7/docs/

api/java/util/concurrent/locks/Reentrant

ReadWriteLock.html >. (16 Oct. 2015).

Page 59: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 59 -

VITAL 휠체어

------------------------------------------------------------------------------------------------------------

지도교수 : 강 창 순

백성훈, 박한흠, 주철민

이동통신연구실

E-mail : [email protected]

심박 센서 기울기 센서 트위터

wifi shield

Arduino

Arduino

ON/OFF

휠체어

요 약

(Machine to Machine : M2M)을

기반으로 오픈소스 하드웨어 개발 플랫폼인

'Arduino'와 스마트 폰 및 소켓통신을 활용하여 휠

체어 사용자를 위한 바이탈 휠체어를 구현하였다.

개발한 바이탈 휠체어는 몸이 불편한 사람들을 위

해 센서를 사용하여 심박수 측정과 기울기 감지,

과전류 방지 기능을 제공한다. 또한 사용자가 위급

상황 일 경우 보호자가 알 수 있도록 WIFI망을 통

해 SNS 알림 기능을 추가하였으며, 그 이외에 휴

대폰의 Hot Spot을 사용 할 수 있다.

I. 서론

요즘 각광받고 있는 사물지능통신(Machine to M

achine : M2M)은 사물에 센서 및 통신 기능을 결

합해 정보를 상호 전달하는 응용네트워크 기술을

말하며, 교통 · 기상 · 환경 · 재난 정보 등을 수집

하여 재난 및 재해를 사전에 예방하거나 유지, 보

수 및 관리 등에 활용할 수 있다. 이는 실제로 가

전제품, 전자기기뿐만 아니라 자동차, 의료기기 등

다양한 분야에서 유용하게 사용되고 있다.

M2M은 크게 센서 기술, 유무선 통신망 기술

및 데이터 처리기술 등으로 구성된다. 본 논문에서

는 이와 같은 M2M 기술을 이용하여 인적이 드문

곳에서 심장에 이상이 생기거나 휠체어가 넘어졌

을 때 즉각 보호자에게 알려 추가로 발생하는 사

고에 대해 방지하기 위한 시스템을 개발하였다.

II. 개발시스템의 개요

[그림 1] VITAL 휠체어 시스템 개념도

개발하는 바이탈 휠체어 시스템은 [그림 1]

과 같이 두 개의 아두이노를 사용하고 있으

며, 1번 아두이노에는 심박수 센서와 기울

기감지 센서, 압전 센서, 2번 아두이노에는

WiFi shield를 각각 장착하여 알림 기능을

Page 60: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 60 -

구현 하였고, 휠체어에 부착이 가능 하도록

기능을 설계 하였다.

또한 심박센서의 측정방법은 손가락을

사용하여 측정이 가능하도록 설계하였고,

기울기센서를 통해 휠체어의 기울기를 감지

할 수 있으며, 압전 센서를 부착하여 사용

할 때 전원 On/Off가 가능하며, WiFi Shield

를 사용하여 WiFi망과 휴대폰 HotSpot에

접속하여 SNS알림 전송이 가능하도록 설계

하였다.

III. 바이탈 휠체어 시스템의 구현

III-1 사용자의 상태를 보호자에게

전달하기 위한 기초 연결망 설정

[그림 2] 설정한 와이파이 망 자동연결

[그림 2]는 전원연결 시 설정한 WIFI에

자동 연결 되며, 와이파이 쉴드는 802.11b/

g규격이고, 보안모드는 WEP, WPA2, AES, T

KIP방식을 지원한다. 이를 통해 사용자의

심장박동수가 기준수치를 초과하거나 미달

할 경우 지정한 사람에게 알림이 가도록 구

현하였다. 필요에 따라 핫스팟이 아닌 공공

와이파이 망도 설정이 가능하다.

III-2 각 센서를 통한 측정값의 출력 및 I2C

통신으로 측정값 전송

[그림 3] 압전센서를 통한 전력제어

야외활동에 의해 전력공급이 제한이 따른

다. 따라서 불필요한 전류를 막기 위해 심

박센서 위에 압전센서를 부착하여 손가락을

삽입 시에만 전력을 공급하고, 미사용 시에

는 전력을 차단하도록 전력제어기능을 구현

하였다.

[그림 4] 측정값 출력 및 전송

심박수 센서를 통해 사용자의 심박수를

측정한다. 손가락을 이용해 측정하도록 제

작하였지만, 편의에 따라 귓불, 가슴부착 등

여러 방법을 구현할 수 있다.

추가적으로 사용자도 자신의 상태를 확인할

수 있게 TFT LCD에 출력하도록 하였다.

Page 61: 2015 창원대학교 정보통신공학과 졸업 논문 gateway

- 61 -

[그림 5] 기울기 감지 측정

기울기 센서는 틸트/기울기 센서모듈을

이용하였다.

동작원리로는 수은 방울을 이용하여 센서가

기울어져 있으면 한 방향으로 기울 경우 수

은 방울이 이동하면 한 쪽의 + -극에 연결

되어 감지가 되어 불이 들어오는 방식이다.

[그림 5]은 사용자의 휠체어가 넘어 졌을

경우 기울기 감지 센서에 불이 들어오면서

위험을 주변사람 및 사용자에게 알 수 있도

록 한다.

전원이 들어오게 되면 [그림 4]와 [그림

5]를 통해 계속적으로 사용자의 상태를 측

정하게 된다. 심박수가 기준치를 초과 및

미달 할 경우와 넘어져서 기울기센서에 감

지가 되면 바로 알림이 가는 것이 아니라

일정시간동안 재 측정한 다음 보호자에게

알림이 가는 시스템이다. 일정시간 재측정

하는 이유는 혹시 모를 잘못 측정된 값에

알림이 가는 것을 방지기 위함이다.

III-3 트위터로 알림을 받기위한

토큰과 메세지

[그림 6] 트위터 토큰

알림을 받기 위해서는 트위터 각 계정마

다 할당된 토큰이 있는데, 해당하는 토큰을

입력하면 된다. 메시지에도 Time 라이브러

리를 통해 상황이 발생한 날짜와 시간을 함

께 전달하여 보호자가 언제 발생하였는지

인지하고 대처를 서둘러 할 수 있게 제작하

였다.

[그림 7] 개발 시스템의 기능 테스트 모습

Ⅳ. 결론

과제 수행을 통해 M2M 기능을 더 구체

적으로 알 수 있었으며, 자동화가 되어가는

시대에 맞춰 몸이 불편한 사용자들을 위한

자동화된 의료기기 발전에 한발자국 더 나

아간 것이라고 할 수 있다. 이와 더불어 휠

체어뿐만 아니라 유모차, 자동차 등 넓은

분야에 접목 시킬 수 있을 것이다.

상용화가 된다면 요즘 문제가 되고 있는 외

진 곳이나 인적이 드문 곳에서의 응급상황

이 발생하더라도 즉각 대응하여 인명피해를

줄일 수 있다.

참 고 문 헌

[1] 아두이노, www.arduino.cc, Arduino 제

작사 공식 웹

[2] 레시피로 배우는 아두이노 쿡북

[3] 마시모 밴지, 손에 잡히는 아두이노, 인

사이트

[4] 메카솔루션 http://www.mechasolution.c

om