DOI QR코드

DOI QR Code

Fishberry: A Remote Fishbowl Management System

원격 어항 관리 시스템

  • 신제우 (한국산업기술대학교 컴퓨터공학부) ;
  • 차해운 (한국산업기술대학교 컴퓨터공학부) ;
  • 김병갑 (한국산업기술대학교 컴퓨터공학부) ;
  • 공기석 (한국산업기술대학교 컴퓨터공학부)
  • Received : 2019.09.30
  • Accepted : 2019.12.06
  • Published : 2019.12.31

Abstract

As the number of fish keepers increases, fishbowl-related convenience products are on the rise. Existing products are not welcomed by consumers because of their lack of functions or high price. In this paper, we deal with a system that remotely controls sensors and motors of fish bowl based on Raspberry Pi and Arduino. In Android applications, you can use the following functions. firstly, feeding. Second, water changing. Third, it measures, visualizes temperature and pH values including alert function. Through the several experiments, it was verified that the system can be quickly accessed from the outside, and when it is appropriate to change water. This system allows the user to keep the fish more comfortable and safe.

물고기 반려인들이 증가함에 따라 어항 관련 편의제품들이 증가하고 있다. 기존의 제품들은 기능이 부족하거나 비싼 가격으로 인해 소비자들로부터 환영받지 못하고 있다. 본 논문에서는 라즈베리 파이와 아두이노를 이용하여 어항의 센서, 모터 등을 원격으로 제어하는 시스템을 다루었다. 안드로이드 애플리케이션에서 다음과 같은 기능을 수행할 수 있다. 첫 째, 먹이지급 진행 및 예약. 둘째, 환수 진행 및 예약. 셋 째, 온도와 pH 수치의 측정 및 시각화 그리고 알림기능이다. 동작시간 측정 실험을 통해 외부에서도 시스템에 빠르게 접근할 수 있는 것을 검증하였고, 날짜별 pH 측정 실험을 통해 언제 환수를 하는 것이 적절한지 검증하였다. 이 시스템을 통해 사용자가 물고기를 더 편하고 안전하게 기를 수 있도록 한다.

Keywords

Ⅰ. 서론

반려동물 시장이 커지면서 물고기에 대한 관심이 늘어나고 있다.[1] 물고기는 강아지와 고양이보다 키우기는 쉽지만, 신경 쓰지 않으면 먹이 주는 시간을 잊어버리거나 물을 제때 갈지 않아 폐사하는 등 관리 소홀의 문제가 많이 발생한다. 또한, 애완 호텔에서는 물고기를 맡아주지 않기 때문에 장기간 자리를 비우기 어렵다.

본 논문에서는 라즈베리파이와 아두이노 보드, 사용자의 스마트폰을 이용하여 위와 같은 문제를 해결할 수 있는 여러 기능을 구현한 IoT시스템을 다룬다. 시스템의 이름은 FishBerry라고 명명한다.

사용자는 스마트폰 ‘FishBerry’ 앱을 이용하여 어항상태를 실시간으로 확인할 수 있으며, 온도와 pH를 확인할 수 있다. 온도와 pH는 물고기를 기를 때 가장 중요한 3대 요소(온도, pH, 용존산소량) 중 2가지이다. 또한, 사용자가 먹이 지급을 특정 시간에 예약하거나 ‘먹이주기’ 버튼을 눌러 물고기들에게 원격으로 먹이를 지급할 수 있으며, 환수(換水)를 특정 시간에 예약하거나 ‘바로환수’ 버튼을 눌러 어항의 물을 부분 환수할 수 있다. 사용자가 지정한 온도와 pH 값을 벗어나게 되면 사용자 스마트폰으로 안드로이드의 Notification[2] 기능을 이용한 알림이 가게 되며, 장치의 LED가 변하게 된다. 이를 통해 사용자는 어항의 이상을 감지하여 빠른 대처를 할 수 있게 된다. 어항의 상태는 라즈베리파이 서버에 저장되며, 이를 날짜별, 시간별 그래프로 표현한 화면 또한 구현하였다.

본 논문의 구성은 다음과 같다. Ⅱ장에서는 본 논문에 관련된 제품들을 비교 분석하였다. Ⅲ장에서는 원격 어항 관리 시스템에 대한 설계 및 구현 내용을 기술하였다. Ⅳ장에서는 실험 및 결과를 분석한다. Ⅴ장에서는 연구결과 및 향후 계획에 관해 설명한다.

Ⅱ. 관련 연구

본 논문에서 참고한 관련 제품들을 아래와 같이 표 1로 정리하였다.

표 1. 관련 제품들

Table 1. Related Products

OTNBBE_2019_v19n6_95_t0001.png 이미지

위 세 제품의 어항 관리 시스템과 본 논문에서 다루는 시스템을 비교해보면, 위 세 제품의 단점의 공통점은 일체형이라는 점이었다. 이것은 이미 어항을 소유 중인 사용자들에게는 추가 비용이 발생하는 것이고, 기존의 어항을 활용할 여지가 사라진다는 단점이 있다. 또한 FiSHBiT와 블루네로는 스마트폰 앱을 제공하지만 다양한 편의기능을 제공하고 있지 않다. 이에 반해 본 논문에서 다루는 FishBerry는 기존에 어항을 사용하던 사용자들이 기존 어항을 활용할 수 있도록 시스템을 탈부착형으로 만들어 확장성을 고려하였고, 스마트폰 앱과 웹을 통해 사용자 편의를 위한 IoT 기반의 다양한 기능들을 제공할 수 있도록 설계하였다.

방대식의 논문[6]에서는 온도와 시간을 이용해 어류에 필요한 요소가 무엇인지 판단하여 그에 맞는 적당한 온도조절, 그리고 먹이와 광량을 제공하여 물고기가 자생할 수 있는 시스템을 제안하고 있다. 하지만, 물고기사육에 있어 고려해야 하는 pH에 대한 내용이 부족하여 본 논문에서 제안하는 시스템에서는 pH의 측정과 더불어 pH조절을 할 수 있는 환수기능을 제안하고 있다.

또한, 안병구의 논문[7]에서는 공유기와 DDNS를 통해 외부에서 내부네트워크로 접근하는 방법을 제안하고 있다. 여기에 덧붙여 본 논문에서 제안하는 시스템은 안드로이드 앱의 HTTP요청들을 공유기의 포트포워딩을 통해 라즈베리파이로 전달하고 있다. 이러한 통신과정에서 Web Socket[8]을 이용하여 앱과 라즈베리파이 서버 간 양방향 통신이 가능하게 하였다.

Ⅲ. 시스템 설계 및 구현

1. 개발환경

본 논문에서는 아두이노와 라즈베리파이를 사용하여 어항 관리 시스템을 개발하고, 온도 센서와 pH센서를 이용하여 어항의 수온과 오염도를 측정하며, 원격으로 제어가능한 자동 먹이지급 기능과 자동 환수 기능, 어항 스트리밍 및 위험 상황 시 알림 기능 등을 개발한다. 실험 및 데이터 수집에 사용한 어종은 ‘플래티’이며 선호하는 온도는 20~24도, pH는 6.8~8이다. 10~14일마다 어항의 수질관리를 위해 어항의 20%에 해당하는 양을 환수하였고 10갤런(약 37리터)의 물을 담을 수 있는 어항을 준비하고 실험하였다.[9]

본 연구를 위한 HW 개발환경은 아래 표2와 같다.

표 2. HW 개발 환경

Table 2. Hardware development environment

OTNBBE_2019_v19n6_95_t0002.png 이미지

개발을 위한 하드웨어 부품은 1개의 아두이노 우노 보드와 1개의 라즈베리파이 보드, 2개의 측정 센서, 라즈베리파이 카메라 보드, 2개의 모터이다. 아두이노 우노(UNO) R3 보드는 주로 서보모터와 수중모터를 제어하며 RTC 모듈을 이용한 현재 시각 측정과 LED 제어를 담당한다. RTC모듈은 현재시간을 아두이노의 시리얼 모니터에 출력한다. 수중 모터 펌프 JT-180A는 DC3.5V~12V 직류로 동작하는 방수 수중펌프이다. DC12V 전원을 사용하면 최대 유량은 350L/H의 성능을 가진다. 이 수중모터를 이용하여 1분 내로 부분환수를 진행한다. 라즈베리파이 보드 Raspberry Pi 3 B+는 Wi-Fi를 통해 외부에서 앱과 통신이 가능하다. 수온 측정 센서 DS18B20은 방수형으로서 –55℃~+125℃ 범위까지 수온측정이 가능하며 위험 상황 시 장치에 부착된 LED 센서 및 앱의 알림기능을 통해 위험을 알린다. pH 측정 센서 SEN0161은 어항의 오염도를 측정하기 위해 어항 내 pH를 측정하며 측정된 pH는 아날로그 신호로 연결된 라즈베리파이에 출력한다. 라즈베리파이 서버는 출력받은 수온과 pH의 측정값을 데이터베이스에 저장하고 앱과 소켓 통신을 통해 사용자가 확인하고 경고를 받을 수 있도록 한다.

소프트웨어 개발 환경은 아래 표 3과 같다.

표 3. SW 개발 환경

Table 3. Software development environment

OTNBBE_2019_v19n6_95_t0003.png 이미지

2. 하드웨어 및 소프트웨어의 구성

아래의 그림 1은 원격 어항 관리 시스템 구성도이다. 시스템은 여러 센서가 연결된 Arduino UNO R3, Raspberry Pi 3 B+와 데이터의 처리 및 저장 역할을 하는 서버로 구성되어 있다. Arduino UNO R3는 Raspberry Pi 3 B+와 Serial통신[18]을 통해, 스마트폰과 서버는 Web Socket통신을 이용해 데이터를 송수신한다. 사용자는 안드로이드 Fishberry 앱을 통해 시스템을 이용할 수 있다.

OTNBBE_2019_v19n6_95_f0001.png 이미지

그림 1. 시스템 구성도

Fig. 1. System configuration diagram

아래의 그림2는 시스템의 실제 구현 모습이다.

OTNBBE_2019_v19n6_95_f0002.png 이미지

그림 2. 시스템의 실제 구현 모습

Fig. 2. Actual implementation of the system

어항 외부의 왼쪽에는 아두이노와 라즈베리파이로 구성된 툴박스가 있고, 툴박스 외부에는 수온 및 pH의 위험을 인지할 수 있도록 LED 센서를 부착하였으며 어항의 좌측 상단에는 먹이지급을 위한 자동먹이지급기를 부착하였고 어항 내부에는 수온 측정센서, pH 측정센서, 그리고 환수를 위한 워터펌프가 있다.

아래의 그림 3은 소프트웨어 구성도이다.

OTNBBE_2019_v19n6_95_f0003.png 이미지

그림 3. 소프트웨어 구성도

Fig. 3. Software configuration diagram

소프트웨어는 먹이 지급 모듈, 환수 모듈, 온도 및 pH 범위 설정 모듈, 스트리밍 모듈, 알림 모듈, 기타 모듈로 구성된다.

3. 각 모듈의 설계와 구현

그림 3의 소프트웨어 구성도에 나오는 각 모듈 별 자세한 설명은 다음과 같다.

a. 먹이 지급 모듈

먹이지급 모듈의 첫 번째 기능은 실시간 먹이 지급 기능이다. FishBerry앱의 ‘바로먹이지급’버튼을 통해 웹 서버로 실시간 먹이 지급 명령이 앱, 서버, 아두이노의 서보모터 순으로 전달되어 먹이지급기를 180도 회전하면서 먹이를 지급할 수 있도록 구현하였다.

두 번째 기능은 예약 먹이 지급기능이다. 사용자가 FishBerry앱을 통해 지정한 주기 시간과 먹이 지급기 회전수를 설정하면, 서버로 데이터를 전달하여 데이터베이스에 저장한다. 서버는 데이터베이스에 저장된 주기 시간을 받아와 1초씩 감소시켜, 0초가 되면 저장된 회전 수만큼 먹이 지급기를 회전시키도록 구현하였다.

b. 자동 환수 모듈

시스템에 구성된 워터펌프는 2개이며 하나는 어항 내부의 물을 빼는 용도로 사용되고, 나머지 하나는 어항 외부에서 어항 내부로 물을 채우는 용도로 사용된다. 환수모듈의 첫 번째 기능은 FishBerry 앱의 ‘바로 환수'버튼을 통해 환수 명령을 앱, 서버, 아두이노의 워터펌프 순으로 전달하여 환수를 진행한다. 또한, 환수 도중 일시정지, 재시작이 가능하도록 구현하였다. 두 번째 기능은 예약 환수다. 사용자가 FishBerry 앱을 통해 원하는 환수시각을 설정하면 서버로 데이터를 전달하여 데이터베이스에 저장한다. 아두이노의 RTC 모듈에서 서버로 전달되는 현재 시각과 데이터베이스에 저장된 환수시각을 비교하여 해당 시각이 되면 환수를 진행하도록 구현하였다.

아래의 그림 4는 예약환수 기능의 순서도이다.

OTNBBE_2019_v19n6_95_f0004.png 이미지

그림 4. 예약환수 기능의 순서도

Fig. 4. Flowchart of reservation based water changing function

순서도에 나타나듯 사용자는 앱에서 버튼을 눌러 환수를 예약할 수 있고, 라즈베리파이는 예약시간에 맞춰 아두이노에 환수요청을 할 수 있다.

c. 온도 및 pH 범위 설정 모듈

FishBerry 앱의 온도 및 pH 액티비티에서 사용자가 원하는 적정 범위의 온도와 pH 수치를 기입하고 ‘저장’ 버튼을 누르면 서버로 각 수치의 범위가 전달되어 데이터베이스에 최소, 최대 수치가 저장된다. 아래 그림 5는 온도 및 pH 범위 설정 화면이다.

OTNBBE_2019_v19n6_95_f0005.png 이미지

그림 5. FishBerry앱의 온도 및 pH 범위 설정 액티비티

Fig. 5. Temperature and pH range settings acitivity of Fishberry App

d. 위험 알림 모듈

현재 온도 혹은 pH가 저장된 설정 범위를 벗어나게 되면, 사용자의 스마트폰으로 Notification을 출력한다. 하드웨어에서는 LED가 평상시에는 녹색, 온도가 벗어나면 적색, pH가 벗어나면 보라색, 모두 벗어나면 흰색으로 출력하도록 구현하였다.

아래의 그림 6은 설정 최대온도를 25도로 설정했을 때 설정한 범위를 벗어난 것을 인식하고 사용자의 스마트폰으로 Notification을 보내는 화면이다.

OTNBBE_2019_v19n6_95_f0006.png 이미지

그림 6. 온도가 설정범위에서 벗어났을 때의 스마트폰 Notification

Fig. 6. Smartphone notification when temperature is outside the set range

e. 스트리밍 모듈

스트리밍 모듈은 파이카메라에서 현재 촬영하고 있는 어항 내부 영상을 웹 서버에 송출하고, FishBerry 앱에서 웹 뷰를 통해 실시간 영상을 출력하는 기능을 담당한다.

아래 그림 7은 실시간으로 어항 내부 영상과 현재 온도와 pH를 보여주는 FishBerry 앱의 스트리밍 액티비티이다.

OTNBBE_2019_v19n6_95_f0007.png 이미지

그림 7. FishBerry앱의 스트리밍 액티비티

Fig. 7. Streaming activity of Fishberry App

f. 기타 모듈

기타 모듈에는 차트, 로그인 및 로그아웃, 기기 종료 및 재시작, 비밀번호 변경, 설정 초기화, 서버 IP 주소 확인 기능이 있다. 차트는 3시간 단위로 측정되는 온도와 pH 수치가 데이터베이스에 저장되어 하루 단위의 데이터를 꺾은선 그래프로 출력하고 일주일 단위의 최소, 최대 온도 및 pH, 총 먹이 지급 횟수를 TextView로 보여주는 기능이다.

아래 그림 8은 하루 치의 온도와 pH를 3시간 단위의 꺾은선그래프로 나타내는 DailyChart와 일주일의 최소 및 최대 온도, 최소 및 최대 pH, 총 먹이 지급 횟수를 출력하는 WeeklyChart를 구현한 차트 액티비티이다.

OTNBBE_2019_v19n6_95_f0008.png 이미지

그림 8. FishBerry앱의 차트 액티비티

Fig. 8. Chart activity of Fishberry App

Ⅳ. 실험 및 결과

본 논문에서는 장치가 정확하고 신속하게 동작하는지 확인하기 위하여 앱에서 먹이 지급기 동작까지 걸린 시간, 환수 동작부터 완료까지 걸린 시간, 그리고 날짜별 pH 변화량 측정 실험을 진행하였다.

앱과 라즈베리파이 서버 간의 소켓 통신 도중 2개의 메시지가 동시에 발생할 경우 통신이 안 되는 문제점을 시스템 개발 과정에서 확인하였는데, 이는 서버에서 FishBerry 앱의 내 어항 액티비티로 온도, pH 값을 5초에 한 번 보내는 것을 30초에 한 번으로 수정해서 문제발생 빈도가 줄어드는 것을 확인하였다. 또한, 5분 동안 스트리밍 화면을 켜둔 결과 500MB의 데이터가 사용되는 것을 확인하였다.

다음 그림 9는 앱에서 ‘바로먹이지급’ 버튼을 클릭했을 때 먹이지급장치가 동작할 때까지 걸린 시간을 측정해본 실험 결과를 그래프로 표현한 것이다. 10회 실시하였을 때 앱에서 먹이 지급까지 평균 1.5초가 걸렸으며 실패한 적은 없었다.

OTNBBE_2019_v19n6_95_f0009.png 이미지

그림 9. 먹이 지급기 동작까지 걸린 시간

Fig. 9. Time taken for food feeding

다음 표 4는 환수의 동작부터 완료 시점까지의 응답시간을 나타낸 것이다. 총 3번의 환수 작동 응답시간을 각 구간마다 수치로 나타냈으며, 전체적으로 환수는 60초 이내로 완료되었고 거리에 상관없이 앱에서 아두이노까지의 응답시간은 평균적으로 일정하였다.

표 4. 환수 작동 응답시간 측정

Table 4. Measurement of the operation response time

OTNBBE_2019_v19n6_95_t0004.png 이미지

다음 그림 10은 pH 센서를 통하여 날짜별 pH 변화량을 측정해 본 실험 결과이다. 환수 이후 어항 내부 청소를 하지 않은 상태로 25x25x41의 어항을 사용하여 7월 1일에 pH7.15로 시작하여 7월 12일에 pH6.46을 기록하였다. 약 2주간의 pH 변화를 보면 어항 내부를 청소하지 않거나 환수를 하지 않으면 물고기의 건강에 위험한 pH 수치를 기록하는 것을 확인하였다. 이런 위험은 알림기능을 통해 사용자가 인지할 수 있었다. 또한, 사용자가 어항과 떨어져 있을 경우 원격으로 환수를 진행할 수 있기 때문에 위험 상황에 대응이 가능했다. 실제로 2019년 7월 12일에 스마트폰으로 알림이 왔고, 원격으로 환수를 진행하여 7월 13일에는 안정 pH 수치인 pH7.25로 복원할 수 있었다. 이를 통해 시스템의 유효성을 검증할 수 있다고 판단된다.

OTNBBE_2019_v19n6_95_f0010.png 이미지

그림 10. 날짜별 pH 변화량

Fig. 10. pH variation by date

Ⅴ. 결론

현재 시중에 판매되고 있는 어항 관리 편의성 증대를 위한 제품들은 비싼 가격에 비해 기능이 부실하였고, 앱의 접근성도 좋지 않았다. 또한, 어항에 위험 상황이 발생하더라도 사용자가 멀리 떨어져 있는 환경이라면 대응하기 어려웠다.

이에 본 논문에서 다루는 원격 어항 관리 시스템은 기존 제품들의 단점을 보완하고 환수, 먹이 지급, 그리고 원격관리와 같은 새로운 기능을 추가하였고, 앱의 접근성을 보완하여 사용자가 쉽고 간편하게 어항을 관리할 수 있도록 하였다.

앱과 라즈베리파이의 통신 중 2개의 통신 메시지가 겹칠 때 발생하는 통신 불가 문제점은 서버에서 예외처리를 함으로써 해결할 수 있을 것으로 판단된다. 또한, 서버에서 앱으로 스트리밍 화면을 전송할 때 인코딩을 하지 않아 데이터가 타 스트리밍 플랫폼보다 많이 소모되는 문제점은 데이터 크기를 줄여주는 인코딩 방식의 도입이나 다른 스트리밍 방식 개발이 필요하다.[19][20][21] 또는, 이미지의 중요도에 따라 컬러 이미지를 압축하는 방식으로 해결할 수 있을 것이라 판단된다.[22]

References

  1. WonKyung Hwang, "Survey on Parenting of Pet in 2017", KB Financial Group Management Institute, 2017. https://www.kbfg.com/kbresearch/processFileDownloadManager.do?file_name=20170731184528_1.pdf
  2. Android Notification, https://developer.android.com/guide/topics/ui/notifiers/notifications
  3. FiSHBiT, https://getfishbit.com
  4. Bluenero, https://bluenero.org/
  5. Flexible LED Mini Interior Smart Fishbowl, http://itempage3.auction.co.kr/DetailView.aspx?itemno=B519621320
  6. Dae-Sic Bang, Jang-Ryeol Ryu, "Optimum Environmental Practices of Smart-Bowl With Bluetooth", Proceedings of KIIT Conference, pp. 400-403, 2016. http://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE06690839
  7. Beongku An, "Smart LED Push Notification System based on Android", IIBC, Vol.16, No.1, pp 97-100, 2016. DOI:http://dx.doi.org/10.7236/JIIBC.2016.16.1.97
  8. Socket.IO, https://socket.io/
  9. platy-fish reference site, https://www.fishkeepingworld.com/platy-fish/
  10. Arduino UNO R3, https://store.arduino.cc/usa/arduino-uno-rev3
  11. Raspberry Pi 3 B+, https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/
  12. DS18B20 Sensor, http://mechasolution.com/shop/goods/goods_view.php?goodsno=1864&category=
  13. SEN0161 Sensor, http://mechasolution.com/shop/goods/goods_view.php?goodsno=427195&category=
  14. 8MP Camera, https://www.devicemart.co.kr/goods/view?no=1077951
  15. SG-5010 Servo Motor, https://eleparts.co.kr/goods/view?no=2570498
  16. JT-180A, https://www.banggood.com/Machifit-JT-180A-DC-12V-350LH-Water-Pump-Aquarium-Electric-Brushless-Submersible-Water-Pump-p-1348183.html?utm_source=google&utm_medium=cpc_ods&utm_campaign=cam-sds-view-airtrack&utm_content=arvin&gclid=EAIaIQobChMI7a_Qz9ex4wIVWXRgCh2vyQWWEAMYASAAEgLMJ_D_BwE&cur_warehouse=CN
  17. DS1307, https://smartstore.naver.com/mechasolution_com/products/3126918034?NaPm=ct%3Dk0wdocvs%7Cci%3D30d5a2a749687fd7abdf92fe3ab7b3d0c4dda087%7Ctr%3Dsls%7Csn%3D650840%7Chk%3D88854e65899fac6903da608dede8bfe7ad2585dc
  18. To connect raspberry Pi with Arduino, http://www.makewith.co/page/project/1009/story/2412/
  19. Kitae Hwang, "Implementation of Multi-Streaming System of Live Video of Drone", IIBC, Vol.18 No1, pp.143-149, 2018. DOI:https://doi.org/10.7236/JIIBC.2018.18.1.143
  20. Seung Joon Noh, "Streaming Compression Scheme for Reducing Network Resource Usage in Hadoop System", KIISE, 45(6), 516-521. DOI:https://doi.org/10.5626/JOK.2018.45.6.516
  21. Chang-Hun O, Yong-Hee Jeon, "Implementation and Characteristics Analysis of Java-based Software Streaming Technology", JKIIT, Vol.11, No.1, pp 205-216, 2013. DOI:10.14801/kiitr.2013.11.1.205
  22. Wan-Bum Lee, "A study on color image compression using downscaling method and subsampling method", Journal of the Korea Academia-Industrial cooperation Society, Vol 20, No.2, pp 20-25, 2019. DOI:https://doi.org/10.5762/KAIS.2019.20.2.20