DOI QR코드

DOI QR Code

Management System for Unmanned Study Cafe

무인 스터디카페 관리 시스템

  • 윤하영 (한국산업기술대학교 컴퓨터공학과) ;
  • 민희수 (한국산업기술대학교 컴퓨터공학과) ;
  • 신동진 (한국산업기술대학교 스마트팩토리융합학과) ;
  • 이용수 (여주대학교 컴퓨터정보과) ;
  • 김정준 (한국산업기술대학교 컴퓨터공학과)
  • Received : 2019.01.23
  • Accepted : 2019.06.07
  • Published : 2019.06.30

Abstract

The trend of studying is changing, and it is not a place to study but also a new cultural environment. The study cafe, which is relatively free and comfortable compared to a stuffy library or reading room, is suitable for an unmanned system that can generate greater profits by reducing labor costs. However, the system that can manage this systematically is still insufficient and needs to be supplemented. In this paper, we developed an Android application that integrates the unattended study cafe and provides convenience to users through additional functions. The user and the manager are separated so that the user can use the desired study cafe in the corresponding region through reservation and inquiry of the seat. The manager manages seats and members and allows the outside of the cafeteria to check the current situation. In addition, community and noise measurements and member time visualization capabilities have been added to enhance application utilization.

공부하는 트렌드에 변화가 일어나며 단순히 공부하는 공간이 아닌, 복합 문화 환경으로 거듭나야 새로운 수요층의 욕구를 충족할 수가 있다. 답답한 도서관이나 독서실에 비해 비교적 자유롭고 쾌적함에 주목을 받고 있는 스터디카페는 인건비 절감을 통해 보다 큰 이익을 창출할 수 있는 무인 시스템에 적합하다. 하지만 이를 체계적으로 관리해 줄 수 있는 시스템이 아직 미흡하여 보완이 필요하다. 따라서 본 논문에서는 무인 스터디카페를 통합적으로 관리해주고 부가적인 기능을 통해 사용자에게 편의성을 제공하는 안드로이드 애플리케이션을 개발하였다. 사용자와 관리자를 구분하여 사용자는 좌석 예약 및 조회 등을 통하여 해당 지역의 원하는 스터디카페를 이용할 수 있도록 구성하였다. 관리자는 좌석 및 회원을 관리하고 스터티카페의 현재 상황을 외부에서도 확인할 수 있도록 하였다. 부가적으로 커뮤니티 및 소음 측정과 회원의 이용 시간 시각화 기능 등도 추가하여 애플리케이션의 활용도를 높였다.

Keywords

Ⅰ. 서론

최근 답답한 도서관이나 독서실을 떠나 카페에서 공부하는 사람들이 늘어나는 추세이다. 카페에서 타인의 시선으로 인해 적절한 긴장 수준을 유지하면서도, 개방감과 자유로움을 느낄 수 있다는 점이 장점으로 작용하지만 타 장소에 비해 집중력이 떨어지는 것 또한 사실이다[1]. 스터디카페는 이들을 위한 완벽한 장소로 도서관처럼 엄숙하지도 않고 카페처럼 소란스럽지 않은 분위기로 그 수요가 증가하고 있다. 소규모 공간에서 운영되며 비교적 관리가 수월한 스터디카페의 특성상 무인화 시스템을 도입하기에 적절하다. 이에 스터디카페에 무인화 시스템을 도입하여 인건비를 절감하는 전략을 세우면 매출 증대를 할 수 있을 것으로 예상된다. 따라서 스터디카페 관리에 도움이 되는 안드로이드 애플리케이션을 개발하여 수익을 극대화하는 전략을 세웠다.[2]

현재 이미 사용 중인 기존 애플리케이션은 카페 외부에서는 사용할 수 없으며 카페의 부가적인 정보들을 얻기에도 부족하다. 이에 아직 미흡한 무인 스터디카페를 통합적으로 관리해주고 부가적인 기능을 통해 사용자에게 편의성을 제공하는 안드로이드 애플리케이션을 개발하고자 한다.

본 논문의 구성은 다음과 같다. 2장에서는 본 연구에서 사용되는 기술들에 대하여 설명한다. 3장에서는 스터디카페 애플리케이션 시스템의 설계와 구현에 대하여 설명한다. 4장에서는 본 논문의 내용을 정리하며, 기대 효과에 대하여 설명하고 마친다.

Ⅱ. 관련 기술

1. 안드로이드

안드로이드는 대표적인 스마트폰의 운영체제 제한적인 아이폰의 ‘IOS’와는 달리 오픈소스로 좀 더 사용자들이 이용할 수 있도록 구글이 제작하여 배포한 리눅스와 자바 기반의 모바일 전용 운영체제이다. 자바의 이식성이 매우 높아 개발자의 편의를 위해 자바의 라이브러리를 사용한다. 안드로이드는 단순한 애플리케이션 계층을 의미하는 것이 아니라 소프트웨어 전체 스택이라고 표현할 수 있으며, 애플리케이션 계층을 포함하고는 있지만 그와 함께 하부의 운영체제와 API 라이브러리, 그리고 애플리케이션 자체를 둘러싼 소프트웨어 스택 전체를 말한다.[3,4]

2. 아두이노

아두이노는 우리 주위의 정보를 읽고 제어하는 컴퓨터를 만들기 위한 도구이며, 간단한 마이크로 컨트롤러 보드에 제공되는 오픈 소스 피지컬 컴퓨팅 플랫폼이다. 아두이노를 사용하여 스위치와 센서등 다양한 종류의 입력을 받아 조명이나 모터 등 다양한 것을 제어하는 대화형의 작품을 만들 수 있다. 아두이노에 쓰이는 프로그래밍 언어는 Processing 멀티미디어 프로그래밍 환경을 이용하고 있다.[5]

3. ThingSpeak

ThingSpeak은 MATLAB 및 Simulink 제조업체인 MathWorks의 IoT 분석 플랫폼 서비스이다. ThingSpeak를 사용하면 클라우드에서 실시간 데이터 스트림을 집계, 시각화 및 분석할 수 있다. ThingSpeak는 장치 또는 장비에 게시된 데이터를 즉시 시각화하며 ThingSpeak에서 MATLAB 코드를 실행하고 들어오는 데이터의 온라인 분석 및 처리를 수행한다. ThingSpeak은 개념 증명 IoT 시스템, 특히 분석이 필요한 IoT 시스템의 개발을 가속화하며 서버를 설정하거나 웹 소프트웨어를 개발하지 않고도 IoT 시스템을 구축할 수 있다. 중소 규모의 IoT 시스템의 경우 ThingSpeak는 프로덕션 환경에서 사용할 수 있는 호스팅 솔루션을 제공한다.[6]

Ⅲ. 설계 및 구현

본 논문에서는 외부에서도 스터디카페를 관리하며 실시간으로 스터디카페를 조회하고 예약하는 방법을 요구하는 애플리케이션 시스템을 개발하고자 한다.

1. 개발환경

스터디카페를 관리하기 위한 애플리케이션 구현은 JAVA 환경에서 JDK 1.7과 Android SDK를 사용하였다. Autoset을 통해 Apache HTTP 웹서버를 사용하고 Mysql 데이터베이스 서버에서 데이터를 전송하고 수신하기 위해 REST 기반의 웹서비스 방식을 사용한다. 웹서버는 URL을 통해 웹서비스를 호출하고 데이터를 XML 형태로 전송받는다.

테스트에 사용한 단말기는 삼성전자 SM-N900(Android 4.3), Arduino Uno SMD R3, Arduino Bluetooth HC-06, SZH-EK033을 사용하였다.

2. 시스템 구성 요소

이 애플리케이션의 기본적인 동작 방식은 서로 다른 클라이언트를 두어 하나의 서버가 데이터를 받는 방식이다. 서버에는 카페 이용자의 성명, 휴대폰 번호, 좌석 유무, 적립금 등 최소한의 정보를 담는 DB가 포함되어 있으며, 다른 클라이언트에서 DB를 전송할 경우 모바일 네트워크 환경하에서 데이터를 전달받아 그래프로 표시하고, 일정 값을 초과하는 경우 알림이 울린다.

그림 1은 스터디카페를 관리하기 위한 애플리케이션 시스템 구성이다. 본 시스템은 크게 사용자, Input process, Reserve process, Express process, 웹 서버, 데이터베이스 서버로 구성된다.

OTNBBE_2019_v19n3_1_f0001.png 이미지

그림 1. 스터디카페 관리 시스템 구성도

Fig. 1. Study cafe management system configuration diagram

일반 모드와 관리자 모드의 가장 큰 차이점은 권한이다. 일반 모드일 경우 사용자의 정보만 조회 및 수정할 수 있다. 하지만 관리자 모드일 경우 현재 좌석 정보와 DB에 저장되어있는 모든 사용자의 정보를 조회하고 수정할 수 있다.

Input process는 사용자와 관리자의 고유한 정보를 입력하는 모듈, 입력한 사용자 데이터를 저장하는 모듈, 맞는 DB 정보가 있다면 접근 권한을 부여하는 모듈로 구성된다.

Reserve process는 접근하고 있는 사용자와 스터디카페 데이터를 가져와 비어있는 좌석을 예약하는 모듈, 예약 정보와 같은 사용자일 경우 좌석을 반납하는 모듈, 좌석을 예약할 시 포인트를 지급하는 모듈로 구성된다.

Express process는 스터디카페의 좌석 예약 상태를 시각화하는 모듈, 실시간으로 소음 값을 그래프로 표시하고 데시벨 값을 감지하여 알리는 알림 모듈로 구성된다.

웹서버 시스템은 클라이언트 사용자가 URL로 서비스를 요청하면 데이터베이스 서버에서 데이터를 XML 형태로 반환하여 데이터를 공유한다. 이러한 지원을 위한 웹서비스 프로그램은 사용자 등록 관리, 스터디카페 관리, 소음 알림을 필요로 한다. 데이터베이스 서버는 사용자와 스터디카페의 기본 정보, 좌석 정보, 예약 정보를 보관한다.

3. 세부설계

외부에서도 관리자는 스터디카페를 관리하고 사용자들은 이용할 수 있는 시스템을 구축하기 위해 필요한 데이터베이스 테이블들 간의 객체 관계도는 그림 2와 같다. 이러한 테이블들은 크게 스터디카페의 좌석 예약 정보와 사용자의 개인 정보를 저장하는 부분으로 분류된다.

OTNBBE_2019_v19n3_1_f0002.png 이미지

그림 2. 데이터베이스 테이블의 관계도

Fig. 2. Relationship diagram of database tables

애플리케이션에 접근하기 위한 스터디카페 정보 및 사용자의 데이터는 실제 상용 중인 데이터 수집에 제약이 있어 시흥시에 존재하는 가상의 스터디카페로 설계하였다.[7]

스터디카페(TB_CAFF)와 사용자(TB_USER)의 개인정보에 관한 테이블이다. 스터디카페(TB_CAFF)의 카페 ID(caffID)는 임의로 주어진 고유한 카페의 ID이다.

스터디카페는 다수의 사용자들이 가입할 수 있고 사용자들 또한 다수의 스터디카페의 정보를 확인하고 좌석을 예약할 수 있다. 다수의 좌석 중에서 한 사용자당 한 좌석만 예약하고 반납할 수 있다. 스터디카페의 좌석 예약 정보를 나타내는 테이블(TB_SEAT)은 카페ID, 좌석번호, 예약 여부, 예약한 사용자ID를 저장하는 필드로 구성된다. 주 키인 좌석번호(seatNum)는 고유한 가상의 1번 좌석부터 34번 좌석으로 구성된다. 카페ID(caffID)는 임의로 구성된 고유한 스터디카페의 ID값으로 스터디카페 DB의 ID값과 같다. 예약여부(seatReseve)에서 0은 비어있음, 1은 예약되어있다는 의미가 된다. 예약한 사용자 ID(uID)는 좌석을 예약하고 반납하기 위한 예약한 사람의 ID를 전달받아 저장한다.

사용자들이 스터디카페의 좌석을 예약하면 실시간으로 로그를 저장하기 위한 테이블인 로그 테이블(TB_LOG)은 예약한 사용자의 ID, 예약한 좌석 번호, 예약한 날짜, 예약한 시간 값을 전달받아 저장한다.

사용자의 데이터는 입력 모듈인 애플리케이션을 통해 수집하였다. 그림 3은 XML과 Java를 사용하여 구축한 애플리케이션 화면이다.

OTNBBE_2019_v19n3_1_f0003.png 이미지

그림 3. 사용자의 정보를 수집하는 애플리케이션 화면

Fig. 3. Application secreen for collecting user information

사용자는 그림 3에서 고유한 ID, Password, 이름, 전화번호, 이메일을 입력하여 데이터를 생성한다. 입력된 데이터는 데이터 전송 모듈을 통해 DB에 저장된다. 해당 ID 정보가 DB에 존재하지 않다면 사용 가능하지만 동일한 ID 정보가 존재한다면 Toast 알람을 띄우며 사용자에게 ID를 재입력 받는다.

좌석 예약 모듈은 사용자 데이터와 좌석 데이터를 바탕으로 예약 기능을 제공한다. Java 프로그래밍과 PHP 프로그래밍을 사용하여 구축하였다. PHP 프로그래밍은 웹 서버에서 구동하였다.

그림 4의 Step 1은 좌석 예약 여부를 확인하기 위한 소스코드이다. 만약 예약된 자리라면 그 자리는 예약할 수 없다. Step 2는 사용자의 예약 여부를 확인하는 소스코드이다. 만약 자리가 예약되어 있지 않고 사용자 또한 예약한 자리가 없다면 Step 3을 실행하여 좌석을 예약할 수 있다.

OTNBBE_2019_v19n3_1_f0004.png 이미지

그림 4. 좌석 예약을 위한 명령어

Fig. 4. Commands for booking seats

좌석 반납 모듈도 예약과 마찬가지로 사용자 데이터와 좌석 데이터를 바탕으로 반납 기능을 제공한다. Java 프로그래밍과 PHP 프로그래밍을 사용하여 구축하였다.

그림 5의 Step 1은 사용자의 이름으로 좌석을 예매여부를 확인하기 위한 소스코드이다. 만약 사용자의 이름으로 좌석이 예매되어 있다면 Step 3을 실행하여 좌석을 반납할 수 있다.

OTNBBE_2019_v19n3_1_f0005.png 이미지

그림 5. 좌석 반납을 위한 명령어

Fig. 5. Commands for retuming seats

그림 6은 화면에 차트를 쉽게 그릴 수 있도록 돕는 오픈소스인 MpAndroidChart 라이브러리를 활용하여 꺾은 선 그래프(LineChart)를 만들었다. 개발 시 라이브러리의 버전은 3.0를 사용했다. DB에 저장된 지난 30일간의 로그 데이터를 이용하여 데이터셋을 만든 뒤 x축은 날짜, y축은 시간으로 설정하여 2차원 그래프에 표시했다.

OTNBBE_2019_v19n3_1_f0006.png 이미지

그림 6. 좌석 예약의 통계 그래프

Fig. 6. Statistical graph of seat reservation

좌석 추천 알고리즘은 DB에 저장된 지난 7일간의 로그 데이터를 날짜별, 시간별로 개수를 세어 가장 예약률이 적었던 날짜와 시간을 실시간으로 추천하여 표시한다. 그림 7의 Step 1은 낮은 예약률의 날짜를 찾기 위한 소스코드이다. 예약률이 가장 낮은 숫자를 뽑아 날짜 정보를 제공한다. Step 2은 오전에 예약률이 낮은 시간에 대한 정보를 찾기 위한 소스코드이다. Step 3은 오후에 예약률이 낮은 시간에 대한 정보를 찾기 위한 소스코드이다. Step2와 Step3 모두 가장 낮은 숫자 중 첫 번째의 숫자를 뽑아 시간 정보를 제공한다.

OTNBBE_2019_v19n3_1_f0007.png 이미지

그림 7. 좌석 추천 알고리즘 코드

Fig. 7. Seat recommendation algorithm code

다음 그림 8은 회원가입을 한 사용자들이 커뮤니티에 입력하였던 메시지 내용이다. 구글의 Firebase를 연동하여 FirebaseDatabase.getInstance()를 사용했다. Firebase Realtime Database는 NoSQL기반 cloud-hosted database이다. 실시간으로 모든 클라이언트에서 데이터가 동기화되고, 애플리케이션이 오프라인 상태라도 계속 사용할 수 있다.[8]

OTNBBE_2019_v19n3_1_f0008.png 이미지

그림 8. 커뮤니티를 위한 애플리케이션 화면

Fig. 8. Application screen for community

다음 그림 9는 아두이노의 소음 센서와 ThingSpeak을 이용한 실시간 소음측정 데이터 값을 그래프로 나타낸 사진이다.

OTNBBE_2019_v19n3_1_f0009.png 이미지

그림 9. ThingSpeak을 이용한 소음측정 값 실시간 그래프

Fig. 9. Real time graph of noise measurement value using ThingSpeak

다음 그림 10은 아두이노의 소음 센서가 측정하는 값에 따라 3가지 기준으로 나누는 소스코드이다. Step 1은 현재 소음의 수치가 표준인 상태를 의미하고, Step 2는 주의를 요구하는 상태이다. 마지막 Step 3은 현재 소음의 수치가 경고인 상태를 의미한다.

OTNBBE_2019_v19n3_1_f0010.png 이미지

그림 10. BT Chart를 이용한 푸시 알림메시지 구현 소스

Fig. 10. Implement push alarm message using BT Chart

다음 그림 11은 현재 개발된 애플리케이션의 초기 화면과 예약 화면이다.

OTNBBE_2019_v19n3_1_f0011.png 이미지

그림 11. 애플리케이션 구현 결과

Fig. 11. Application implemnetation result

Ⅳ. 결론

본 논문에서는 최근 각광받고 있는 스터디카페와 무인시스템을 결합하여 현재 대중에 나와 있는 유사 애플리케이션과 비교하고 부족한 기능들이 보완된 통합 애플리케이션을 개발하였다. 스터디카페 외부에서도 접속이 가능하게 하여 관리자와 사용자의 접근성과 편의성을 증대시켰다. 특히 외부에서의 접속은 관리자가 항상 상주해야 하는 불편함을 없앤 것이다. 부가적인 기능들을 추가한 이유도 본래 외부에서의 관리에 제한을 덜어주고자 함이었다. 이러한 정보를 사용자들도 일부 공유함으로써 장점을 배로 증가시켰다. 또한 한가지 애플리케이션으로 하나의 카페만 이용해야 하는 번거로움을 해결함으로써 같은 지역의 스터디카페를 비교하여 선택할 수 있는 기능도 추가하였다. 이러한 설계를 바탕으로 애플리케이션을 통해 스터디카페를 관리하고 이용한다면 보다 효율적인 관리와 장소 선택이 가능해지고 능률적인 학습환경이 조성될 것으로 기대된다.

References

  1. Dae-Kwon Ha, Min-Ha Cho, Young-Sin Sung, "Why do people stduy at a cafe?", Korean Psychological Association Conference, pp. 402-402.
  2. Hee-Jin Jung, Hyun-Chul Sim, Sung-Wook Cho, "Preliminary Study of Flight Control using a Humanoid", Proceedings of the Korean Society for Aeronautical & Space Sciences Conference, pp. 925-929.
  3. Jung-Gun Lim, Chang-Suk Choi, Tae-Eun Park, Hyo-Sun Ki, Beong-Hu An. "Android Based Mobile Combination Login Application", The Journal of the Institute of Internet, Broadcasting and Communication, Vol. 13, No. 3, pp. 151-156, June, 2013. DOI: http://dx.doi.org/10.7236/JIIBC.2013.13.3.151
  4. Bum-Kyo Oh, Tae-Hwan Kang, Beong-Hu An, "Android Based Booky Content", Journal of IWIT, Vol. 10, No. 2, pp.53-59, April 2010.
  5. In-Gu Lee, Myeon-Gyun Cho, "Arduino Based Smart Home System for the Elderly Living Alone", IEMEK Journal of Embedded Systems and Applications, Vol. 10, No. 5, pp. 307-315, Oct, 2015. DOI: http://dx.doi.org/10.14372/IEMEK.2015.10.5.307
  6. Yang-ja Jang, "IoT Platform Technology Review", Communications of the Korean Institute of Information Scientists and Engineers, Vol. 32, No. 6, pp. 19-24, June, 2014
  7. Eun-ki Lim, "An Algorithm for Deriving Design sequence of DB tables based on Data Flow Diagrams", The Journal of Korean Institute of Information Technology, Vol. 5, No. 4, pp. 226-233, Dec, 2017.
  8. He Qiao, Hung-Bog Park, "Android Based SMS Management Application Design", Proceedings of the Korean Society of Computer Information Conference, Vol. 22, No. 1, pp. 357-360, 2014.