개발자/스마트팜

Greenhouse 원격 관리시스템 안드로이드 앱 9

지구빵집 2020. 8. 25. 09:05
반응형

 

Greenhouse 원격 관리시스템 안드로이드 앱 9 

 

여기까지가 아마도 스마트 Greenhouse 원격 관리 시스템의 마지막 포스팅이다. 여기서 남은 모든 과정을 정리하여 소개한다. Greenhouse 원격관리시스템 안드로이드 앱의 동작과 조작방법, 카메라 응용, 프로젝트 완료/평가/보완사항, 참고 문서와 키워드까지 설명해야 하는 내용 모두 기술한다. 남은 것은 '우연'이 해결해 줄 것이다.

 

우연에게 자리를 내어주면 내어 줄수록 우리는 큰 여지를 얻게 되고, 풍성해 질 수 있다. 지나고 보니 중요한 것은 태도와 자세였다. 우리의 노력도 겉으로 보이는 자세와 태도 속에서 이루어지는 노력에 의해 성장하고 원하는 결과를 달성한다. 자세와 태도 속에서 빛을 발하는 것이 바로 노력이었다. 지치지 않고 꾸준히 하는 것은 가장 기본적인 일이고 그렇기에 보통 사람은 닿을 수 없는 어려운 지점이다. 당신이 하는 모든 일을 지치지 않고, 넘어지면 다시 일어서 걷고 또 걸어서 원하는 곳에 닿기를 바란다. 멈추지 않고 걷기만 하면 닿으니까?라고 말하지만 대부분의 사람은 닿지 못한다. 그곳에 도착하고 싶다. 고생 많으셨습니다.   

 

Greenhouse 원격관리 시스템을 구현하는 전체 포스팅은 아래와 같이 진행합니다. 참고하세요.

Greenhouse 원격관리시스템 개요 1

Greenhouse 원격관리시스템 Hardware 2

Greenhouse 원격 관리시스템 센서와 액츄에이터 3

Greenhouse 원격 관리시스템 액츄에이터 4

Greenhouse 원격 관리시스템 전원부 5

Greenhouse 원격 관리시스템 연결도 6

Greenhouse 원격 관리시스템 소프트웨어 테스트 7

Greenhouse 원격 관리시스템 서버프로그램과 카메라 8

Greenhouse 원격 관리시스템 안드로이드 앱 9

 

이 장에서는 안드로이드 앱과 Greenhouse 원격관리 시스템의 연동에 대해 설명한다. 안드로이드 어플리케이션은 클라이언트 프로그램으로 동작한다. 라즈베리 파이에서는 앞 장에서 구현한 서버 프로그램과 동영상 스트림 쉘이 수행되는 상태에서 스마트 폰의 “Greenhouse 원격관리 시스템” 애플리케이션을 실행시켜 동작 상태를 확인하고, 다양한 액츄에이터를 구동한다.

 

Greenhouse 원격관리 시스템의 스마트 폰 앱은 안드로이드 OS 기반의 스마튼 폰에서 수행되는 Application으로 아래와 같은 기능을 가지고 있다.


○ Greenhouse의 기후와 현재 기상상태를 조회.
○ Greenhouse의 현재 상태를 카메라로 영상 확인
○ Greenhouse의 과거 이벤트와 이력사항을 조회
○ 설정된 조건(습도, 온도, 조도, 시간)에 따라 정해진 액츄에이터 가동
○ Greenhouse에 설치된 Actuator의 원격 제어  

 

스마트 Greenhouse 원격관리 시스템 앱 소프트웨어 구조

 

프로그램 구성을 설명하고 스마트 폰 앱을 실행하여 동영상을 확인하고 다양한 액츄에이터를 제어한다. Greenhouse 원격관리 시스템의 메인 화면은 농장상태, 농장 모습, 물 주기 설정, 디바이스 연결과 같은 네 가지 메뉴로 구성되어 있다. 간단하게 요약하면

 

*농장 상태 : 스마트 농장의 현재 상태 정보를 보여준다. 센서 값과 액츄에이터의 이상 유무
*농장 모습 : 실시간으로 Greenhouse의 영상을 디스플레이
*물 주기 설정 : 물 주는 시간을 설정하고 액츄에이터 직접 제어
*디바이스 연결 : 라즈베리 파이와 연결

 

스마트 Greenhouse 원격관리 안드로이앱을 실행할 때 메뉴와 설명을 나타낸다. 

 

n  서버에 연결 시 좌측 상단에 원 모양의 이미지가 회색에서 파란색으로 바뀌며, 그 옆의 텍스트는 “연결 끊김”에서 “연결 됨”으로 바뀐다.

 

n  서버에 연결 시 좌측 상단에 원 모양의 이미지가 회색에서 파란색으로 바뀌며, 그 옆의 텍스트는 “연결 끊김”에서 “연결 됨”으로 바뀐다.

 장치가 연결되지 않은 상태에서 농장 상태/농장 모습/장치 제어/설정 메뉴를 클릭하게 되면 “기능을 사용하기 전에 타겟보드를 연결하셔야 합니다.”라는 메시지 박스가 뜬다.
 메시지 박스의 확인 버튼을 누르면, 연결 창이 뜨게 된다.
 연결 창에서 서버의 IP(192.168.0.220)와 PORT(11000)를 적어주고 연결 버튼을 누르면 된다.

 

서버 또는 네트워크 상태를 확인해주세요.


 만약 서버가 닫혀 있다면, “서버 또는 네트워크 상태를 확인해주세요.”라는 메시지 박스가 뜨게 된다.
 연결에 성공하게 되면 기본 화면의 왼쪽 상단의 이미지와 텍스트가 바뀌게 된다.
 다시 디바이스 연결 메뉴를 누르게 되면, IP와 PORT는 수정 불가능한 상태로 바뀌어 있으며, 연결 버튼이 연결 해제 버튼으로 바뀌어 있다.
 그리고 연결 해제 버튼을 누르면 연결이 해제되면서 기본 화면의 왼쪽 상단의 이미지가 회색으로 바뀌고 텍스트는 “연결 끊김”으로 바뀌게 된다.  

 

 

 

 서버에 연결된 상태에서 기본 화면의 메뉴 중 농장 상태 버튼을 누르게 되면 위 화면이 뜨게 된다.
 표시 되는 센서 값은 조도 세기, 풍속 세기, 온도, 습도, 강우 유무이다. 그리고 장치들의 정상 유무도 표로 나타난다.
 데이터가 갱신되는 주기는 APP에서 서버로 데이터를 보내는 시간 서버에서 값을 다시 APP으로 보내고 APP에서 Parsing 해서 다시 보여주는 시간까지 대략 2~3초 정도가 소요된다.
 조도의 경우 Lux의 형태로 값을 출력한다.
 풍속 센서의 경우 0~30까지가 출력되며 단위는 m/s이다. (0~5V)
 온도의 경우 섭씨 -40부터 120℃까지 측정이 가능하다.
 습도의 경우 %로 0부터 100%까지 출력이 된다.
 강우 센서의 비를 감지하면 우산이 펼쳐진 모양이, 감지하지 못하면 우산이 접힌 모양이 나타난다.
 장치 상태의 경우 H/W적으로 구현되지 않은 상태이며 정상으로 표기되도록 되어 있다.  

 

Display Camera 화면

 

 Raspberry Pi의 mjpg-steaming 서버를 이용해서 영상을 전송 받는다.
 영상은 YUV Format이며 30 Frame이다.
 Smart Phone의 App에서 확인이 가능하며 Web에서도 가능하다.
 Web으로 연결 시 Chrome에서 {Server ip}:{Port Number}를 주소창에 입력하면 된다.
 예) http://192.168.1.220:8080/  

 

mjpg-streamer 홈페이지

 위 홈페이지에서 Stream 메뉴로 들어가면 영상을 확인할 수 있다. 

 

서버와 연결 된 상태에서 기본 화면의 장치제어 버튼을 누르면 나타나는 화면

 

 서버와 연결 된 상태에서 기본 화면의 장치 제어 버튼을 누르면 나타나는 화면이다.
 Control Box의 수동·자동 스위치의 상태에 따라 수동/자동 변경이 자동으로 된다.
 수동일 경우 App에서는 제어가 되지 않으며, Control Box에서 장치들을 On/Off 하면 App의 화면에서도 그 상태에 따라 자동으로 On/Off 된다.
 자동일 경우 Control Box의 스위치로 제어가 되지 않으며, App으로 제어가 가능하다.
 자동일 경우 설정된 조건에 따라(온도/풍속 등) 그 조건을 만족하면 자동으로 동작하도록 되어 있으며, 수동일 경우 조건에 상관없이 스위치의 상태에 따라 제어가 된다.   

 

주기 설정 List 화면

 

 서버와 연결 된 상태에서 기본 화면의 설정 버튼을 누르면 주기 설정의 List 화면이 나타난다.
 List 화면에서 추가 버튼을 누르면 반복할 시간 및 요일, 장치를 선택할 수 있는 화면이 나타난다.
 장치를 선택하지 않으면 “장치를 선택해주세요.”라는 메시지가 나오며 요일을 선택하지 않으면 “요일을 선택해주세요.”라는 메시지가 나오게 된다.

 

동작 주기 설정 화면

 

 요일과 장치 및 시간을 설정하고 저장 버튼을 누르면 List에 추가된다.
 List에 추가되는 동시에 Server의 Database에 저장된다. 그러면 Server에서는 그 요일 시간이 되면 해당 장치들을 동작 시킨다. (아직 끄는 동작은 되어 있지 않다.)
 그리고 다시 추가 버튼을 누르고 요일과 장치 및 시간을 설정하고 저장버튼을 누르면 다음 칸에 추가된다.
 또한 List에서 목록을 하나 제거하면 Server의 Database에 저장된 그 해당 내용 또한 지워지게 된다.
 App을 껐다 켜도 리스트는 그대로 저장되어 있다.  

 

 

라즈베리파이에서 사용하는 카메라는 보통 라즈베리파이 전용카메라를 사용한다. 위에 설명한 카메라는 라즈베리파이 전용 카메라를 사용하여 테스트하였다. 아래에 카메라는 USB 웹 카메라를 사용하였다. 그럴 경우 설정 명령어와 쉘 파일에 들어갈 내용을 적었다. 아래 내용은 사용하는 카메라 환경이 바뀌거나 전용카메라를 사용하지 않을 때의 예라서 중요하니 잘 알아두기 바란다.    

 

 

 Raspberry Pi USB Camera mjpg-streamer로 재생하기
 참고 사이트
https://forum.openwrt.org/viewtopic.php?id=55607
https://www.raspberrypi.org/forums/viewtopic.php?t=109352

 

 명령어
 uvcdynctrl –f –d /dev/video0
 지원하는 Pixel format, Frame size, Frame rates 확인
 v4l2-ctl -d /dev/video0 --list-formats-ext
 지원하는 Pixel format, Frame size, Frame rates 확인


 명령어 수정 : mjpg.sh  

 

수정 전

export STREAMER_PATH=/home/pi/mjpg-streamer/mjpg-streamer-experimental

export LD_LIBRARY_PATH=$STREAMER_PATH

$STREAMER_PATH/mjpg_streamer -i "input_raspicam.so -d 200" -o "output_http.so -w $STREAMER_PATH/www"

수정 후

export STREAMER_PATH=/home/pi/mjpg-streamer/mjpg-streamer-experimental

export LD_LIBRARY_PATH=$STREAMER_PATH

$STREAMER_PATH/mjpg_streamer -i "input_uvc.so -d /dev/video0 -y -n -f 30"  -o "output_http.so -w $STREAMER_PATH/www"

 

-y : YUV Format
-f : frame rate
-i : Input
-o : Output
카메라의 스트리밍 서버가 너무 빠르다보니 프로세서가 감당을 못하는 것 같다. 화소가 높거나 프레임 레이트가 너무 빠르면 온습도 센서가 값을 읽지 못한다. 

 

 

10. 카메라 응용

 

처음에는 라즈베리파이 전용 카메라를 사용하다가 케이블 길이, 카메라 위치 선정의 어려움, 해상도 문제 등으로 USB Web Cam 을 사용하여 변경하였다. 9장에 설정과 사용법을 정리하였다.  

 

 

11. 프로젝트 완료/평가/보완사항

 

데모 시연을 위한 개선 요청사항 문서를 첨부한다.  

 

1

- 수동 모드로 순환팬, 관수모터, 자동개폐기, 조명 제어 시연

> 조명제어는 4개 정도의 램프를 달아 개별적으로 제어되는 것을 시연

2

- 자동 모드로 전환 하여 스마트폰 앱으로 각 센서, 카메라를 통한 농장 상황 실시간 모니터링 시연

- 스마트폰 앱으로 관수모터 작동 주기 설정 시연

- 스마트폰 앱으로 순환팬, 관수모터, 자동개폐기, 조명 수동 제어 시연

3

- 풍속계에서 일정 이상의 강한 바람이 감지되었을 경우 자동개폐기를 작동하여 농장을 닫음

> 풍속계를 인위적으로 회전시켜 해당 작동 확인

4

- 강우센서에 비가 내리는 것을 감지하였을 때, 자동개폐기를 작동하여 농장을 닫음

> 강우 센서에 물을 흘려 해당 작동 확인

5

- 온습도 센서에서 일정 이상 온도가 올라갔을 경우, 자동개폐기를 작동하여 농장을 열고 순환팬이 작동되는 것을 시연 (강우센서에서 비가 감지되지 않았을 경우 실행)

> 온도를 인위적으로 올리기 위해 온도 센서에 라이터 등을 사용하여 온도를 올림

> 같은 상황에서 강우센서에 물을 흘려 비가 감지되었을 때 작동하지 않는 상황 시연

6

- 조도센서를 통해 날이 어두워졌을 경우 자동개폐기를 작동하여 농장을 닫음

> 조도센서를 손으로 가려 조도를 낮춰 시연

7

- 근접센서 감지 시 카메라의 이미지를 스마트폰 앱으로 송출하는 기능 시연

> 카메라 앞에서 움직여 해당 모습이 스마트폰 앱으로 송출되는 것을 확인

 

12. 참고자료

 

1. 사물인터넷 기반의 농장물 관리 시스템 구현 김경아, 정연만, 박동영 강릉원주대학교(한국통신학회 2016년도 동계종합학술발표회)
2. 스마트 팜 운영실태 분석 및 발전방향 연구(2016.10 한국농촌경제연구원 발간등록번호 11-1541000-001674-01)
3. 스마트 농업 확산을 위한 IoT기반 개방형 플랫폼의 필요성 및 구축 방안 연구(Journal of Korea Multimedia Society Vol. 17, No. 11, November 2014 (pp. 1313-1324) http://dx.doi.org/10.9717/kmms.2014.17.11.1313)
4. 차세대 IoF-Cloud 기반 스마트 온실 및 서비스 연구 (Research of Next Generation IoF-Cloud based Smart Geenhouse & Services) 2016년 09월 스마트미디어저널
5. ICT기반 스마트팜 토마토 농업경영체의 경영성과 비교분석1 - 전남지역 도입농업경영체와 비도입농업경영체를 대상으로 - 이승현a , 김덕현b , 하지영c , 박향자d , 이혜림 (2017 경영정보관련 춘계통합학술대회)
6. Smart 농업/냉동설비 모니터링 &제어 시스템(FutureTek 제품 소개문서)
7. (주)휴인스 사물인터넷(Smart_IoT) 설계시스템
8. 스마트팜이 이끌 미래 농업(제62호 October 2016 삼정KPMG 경제연구원)
9. 스마트온실 자동제어를 위한 클라우드 시스템 개발에 관한 연구 이재수, 홍영기, 김국환, 이대현, 임동혁, 한새론* *국립농업과학원 농업공학부 (한국통신학회 2016년도 추계종합학술발표회)
10. 오픈 소스 하드웨어 기반의 스마트 온실관리 시스템 설계 및 구현 박정웅, 최영민, 박희동 나사렛대학교 정보통신학과
11. An Smart Greenhouse Automation System Applying Moving Average Algorithm 이동평균 알고리즘을 적용한 스마트 그린하우스 자동제어 시스템 Barun Basnet식별저자, Injae Lee, Myungjun Noh, Hyunjun Chun, Aman Jaffari, Junho Bang식별저자 (전기학회논문지 제65권 제10호, 2016.10, 1755-1760 (6 pages))

 

13. 키워드

 

IoF-Cloud, 스마트 팜, 스마트 온실, 마이크로 규브, 농업, smart green house management, sensors, arduino, agent program, actuators, context awareness, 스마트 온실 관리 시스템, 센서, 아두이노, 에이전트 프로그램, 액츄에이터, 상황인지, Greenhouse, Automation, Moving average, Sensors, Actuators  

 

-끝-

 

여기까지 무사히 왔다. 이미 완료한 프로젝트라서 쉽게 할 줄 알았더니 그게 아니다. 어렵게 생각하면 정말 어렵게 되고, 할 수 있을 만큼 하다보면 의도하지 않은 선물을 받게 된다. 필요한 것은 인내뿐이다. 인생에 큰 반전은 없다. 대개 스스로 노력하고 애쓴만큼 얻게 된다. 그동안 미룬 인공지능 공부를 해야 한다. 다시 항해하는 거지 인생에 별거 없다. 무상을 이해하기에는 아직도 어리다. -見河-

 

 

 

 

반응형