컴구조안들었조 - 스마트 소형 냉온장고

MIE capstone
2013430008 (토론 | 기여)님의 2018년 6월 14일 (목) 01:19 판 (위젯을 활용한 UI 구현)
이동: 둘러보기, 검색

프로젝트 소개

프로젝트 명

Design Smart and Remotable Chiller & Warmer dual-compact machine by using Peltier module
펠티어 소자를 이용한 냉온장 전환이 가능한 원격 소형 스마트 냉온장고 설계

프로젝트 기간

2018.03.02. ~ 2018.06.15

팀 소개

서울시립대학교 기계정보공학과 201556000* 김*영 (팀장)
서울시립대학교 기계정보공학과 201343000* 김*훈
서울시립대학교 기계정보공학과 20134300** 박*윤

프로젝트 개요

요약

냉장 및 온장 보관을 사용자의 편의에 따라서 조절이 가능한 소형 냉온장고를 제작한다. 2개의 칸을 제공하므로써 하나의 제품 내에 온장과 냉장이 공존할 수 있도록 한다.
또한 사용자의 스마트폰 안드로이드 어플과 연동되어 원격으로 냉장과 온장을 변환하거나 전원의 차단 혹은 설정 변경이 가능하다.

개발 배경

현재 우리 사회에서 1인 가구의 수는 역대 최대이며 점점 늦어지는 결혼 시기와 등을 고려한다면 1인 가구의 숫자는 점점 증가할 것이다. 1인 가구의 경우 매 끼니 마다 새로 음식을 하지 않고 미리 조리했던 음식을 데워 먹는 경우가 많다. 이러한 경우 최근 각광받는 IoT(Internet of Things) 기술을 접목하면 아침에 조리한 음식을 냉장으로 보관하다가 저녁에 귀가하기 전에 미리 온장고로 전환시켜 두면 귀가와 동시에 식사를 할 수 있다는 생각에 착안하게 되었다.  

1인가구.png

프로젝트 목적 및 기대효과

현재 시중에 판매 중인 스마트 냉장고의 경우에도 냉온 전환이 가능하지는 않다는 점과 냉온 전환이 가능한 소형 냉온장고가 존재한다는 점을 융합하고자 하였다.
본 개발을 통해 완성될 냉온장고는 사용자의 휴대전화를 통해서 원격으로 온도의 조절이 가능하여 미리 조리해둔 음식물을 냉장으로 보관하다가도 귀가 시간에 맞추어 따뜻하게 데우거나 냉동 보관된 요리재료를 미리 해동시켜 바로 조리를 시작할 수 있는 등의 장점을 가지고 있다. 따라서 미리 조리된 음식을 냉장보관 할 경우가 많은 1인 가구와 귀가 후 바로 요리를 해야 할 경우가 많은 직장인들에게 유용한 보조 보관 장비로 사용될 것이다. 또한 소형 냉장고로써의 역할 역시 수행 가능한 동시에 전자레인지의 대용으로 사용할 수 도 있을 것이다.
본 과제를 진행하는 과정에서 앞서 수강한 고체역학, 기계요소설계, 열 및 유체역학 등의 지식 역시 사용될 것이며 기계와 IT의 융합을 통한 종합 설계에 대한 이해 및 연습이 되어 전공역량을 향상시키는 계기가 될 것이다

개발 목표

개발목표.png

 냉온장고 전체적인 시스템 관리 CPU는 하나의 라즈베리 파이가 관리한다. 이 라즈베리 파이는 냉온장고 내부에 있는 온도 센서와 압력 센서의 데이터를 계속 모니터링하면서 받은 데이터를 LCD 모니터와 안드로이드 어플리케이션에게 보내주어 사용자가 현재 내부 상태를 확인할 수 있도록 한다. 사용자는 직관적이고 간편한 LCD모니터와 어플리케이션으로 희망온도, 전원, SAVING MODE 등을 선택하여 냉온장고를 제어하도록 한다. 사용자가 입력한 데이터를 받은 라즈베리 파이는 그 데이터에 맡게 펠티어 소자, 릴레이 스위치 등을 제어하여 냉온장고를 제어하도록 한다. 사용자가 현장에서 뿐만이 아니라 원격으로도 온도 제어가 가능하고 현재 온도를 확인할 수 있도록 한다.

프로젝트 설계

개발 일정

개발일정컴구조.PNG

시나리오

시나리오컴구조.png

목적계통도


목적계통도컴구조.png

편의성

- 직관성
사용자가 직접 어플리케이션이나 LCD 터치 모니터를 이용하여 냉온장고의 온도를 조절하기 때문에 사용자로 하여금 희망 온도를 설정 하는 데에 조작이 직관적 이여야 한다. 어플리케이션과 LCD 모니터 화면을 만들 시 사용자가 쉽게 사용할 수 있도록 이미지나 터치 버튼 위치를 설정한다.
- 공간 효율성
가정에서 집안에 두고 사용하는 것이기 때문에 집안 공간에서 차지하는 부피가 중요한 요구 사항이다. 내부에 음식을 보관 하는 데에 요구되는 공간 외에 작동 부분을 최소화해야한다.

유지 보수성

- 확장성
스마트폰과 연동하여 외부에서 조작 가능한 냉온장고이지만 추가적인 기능이나 업데이트가 필요하게 되는 경우가 생기는 데 어플리케이션 내부 소스 코드 업데이트만으로 쉽게 업데이트 가능
- 정밀성
압력 센서나 온도 센서가 추후 기능 확장에 있어서 추가되는 기능을 조작하는데 정밀하게 입력값을 주는 지 중요하다.
- 내구성
내부 온도가 수시로 바뀌는 제품이기 때문에 냉온장고의 외벽이나 온도센서 , 압력센서 , 열전소자 모듈 등이 외부 온도에 민감하지 않고 정상으로 작동되어야 한다. 두 번째로 제작을 하고 가정으로 이동하는 사이와 가정 내에서 사용할 때 외부의 충격에 의해 결함이 생기지 않는 내구성이 보장되어야 한다.
- 안정성
냉온장고와 스마트폰 연동, 온도&압력 센서와 라즈베리 파이의 연동, 라즈베리 파이와 펠티어 열전소자 연동이 안정적으로 통신이 되어야 결과적인 냉온장고 내부 온도 조절이 가능하다. 각 기기에 들어가는 전압이 다르기 때문에 전압조절과 전선들의 합선여부, 접지가 안정적으로 설계되어야 한다.

경제성

냉장고와 다르게 냉장과 온장 기능을 멀티로 할 수 있는 장점과 스마트폰 연동 기능에 있어서 메리트가 있지만 펠티어 열전소자 모듈을 성능의 한계가 있어 수용 가능한 면적이 기존 냉장고 보다 좁다. 따라서 추가 기능과 수용 면적에 따라 사용자로 하여금 합리적인 가격 책정이 필요하다.

설계안


설계안컴구조.png

SMPS

펠티어 모듈에 들어가는 펠티어 소자와 홴은 12V의 정격전압을 가지고 있기 때문에 SMPS가 220V의 전원에서 필요한 12V로 나누어주는 역할을 한다.

펠티어 열전소자 모듈 

냉장과 온장을 모두 가능하게 하는 펠티어 소자를 사용함에 있어서 필요한 홴과 핀이 함께 있는 모듈을 사용하여 제작에 편리, 전선에 흐르는 전류의 방향을 제어하여 냉장과 온장을 조절 가능, 부피가 작으면 비교적 가격이 저렴하며 모듈 형태이므로 쉽게 수리나 조작 가능하다. 추가적으로 기존 냉장고헤서 사용하는 냉각기의 경우 부피가 크고 튜브를 사용해야하는 단점이 있는데 이를 보완할 수 있는 장점을 가지고 있다.

FSR-406 아날로그 압력센서

눌러지는 압력에 따라 전압이 달라지며 이를 이용해 압력이 가해졌는지 아닌지를 알 수 있다. 길이 4.5cm 정도로 시중에서 구할 수 있는 압력센서 중 이번 프로젝트에 가장 적합한 크기이다. 100g에서 10kg까지 감지 가능하다. 이를 통해 냉온장고 내부 물체 유무에 대하여 판별할 수 있어 물체가 없는 경우에는 전원을 끄도록 하여 전력소비 감소에 이점을 가지고 있다.

KY-001 디지털온도센서모듈

디지털모듈이므로 아날로그센서에 비해 비교적 적은 핀을 사용한다. 별도의 연산과정 없이 온도 정보를 쉽게 가져올 수 있다. 영하 55도에서 125까지 측정가능하며 오차가 0.5도 정도로 적다. 냉온장고 온도제어에 있어서 내부 현재온도가 필수적인 데이터이므로 온도 센서는 필수적인 센서이다.

H-Bridge 모듈

펠티어 소자는 전류에 방향에 따라 한 쪽의 온도가 낮아지거나 높아지는 특징을 가지고 있다. 이를 이용하여 냉장기능과 온장기능을 바꾸는데 전류의 방향을 바꿔주는 과정이 필요한데 이 때 사용하는 모듈이 H-bridge이다.

릴레이 스위치

릴레이 스위치를 이용하여 소자로 들어가는 전류를 제어한다. 라즈베리 파이와 하나의 GPIO선 연결을 하므로 회로 구성에 있어서 간단하다. 온도 피드백제어 및 on/off 전원 제어가 가능하다.

lcd 터치스크린

lcd 터치스크린을 이용하여 냉온장고에서 직접 사용자의 입력을 받는다. 외부에서 원격으로 하는 제어 뿐 만 아니라 직접 내부에서 제어를 할 수 있게 하는 장치이다. LCD화면과 터치 기능을 가지고 있기 떄문에 사용자로 하여금 직관성과 편리성을 보장할 수 있다.

설계사양

필요사항컴구조.PNG

프로젝트 개발 과정

냉온장고 센서 및 펠티어 모듈 제어

펠티어 소자 모듈 분리

모듈분리.jpg

펠티어 열전소자 모듈 기존의 제품을 경우 홴과 펠티어 소자의 +- 전선이 통합되어 있는 형태이다.
따라서 전류의 방향을 바꾸면 펠티어 소자는 냉장에서 온장으로 열 공급 방향의 전환이 가능하지만
홴의 경우 전류의 방향이 반대가 되면 동작하지 않는 한계점을 발견했다.
모듈을 분리하여 홴과 펠티어 소자의 전선을 따로 분리 시키는 작업을 진행하였다.

압력 센서 구현 

압력센서.pngMcp3208.JPG

압력센서의 경우 압력센서에 입력되는 압력의 크기인 아날로그 값을 특정 전압 값이 디지털 값으로 변환이 필요하다.
아날로그 값을 디지털 값으로 변환 시켜주는 mcp3208칩을 이용하여 라즈베리파이와 SPI 통신을 구현하였다.
2개의 칸에 압력센서가 각각 들어가므로 2개의 압력센서 값을 받기 위해 mcp3208의 두 개의 채널을 이용하여
하나의 라즈베리 파이로 두 개의 압력 값을 받도록 구현하였다.

압력센서스프링.jpg카티아압력.png

압력센서의 경우 가로 , 세로 길이 40mm로 칸 내부 아래 면적 전체를 걸쳐 압력을 인식하기에는 한계가 있었다.
위 사진과 같이 스프링을 이용하여 판 위에 물체를 올리면 판이 내려가면서 압력센서에 압력을 가하도록 하여
전체적인 면적에 걸처 압력을 인식할 수 있도록 설계 하였다.

온도 센서 구현 

온도센서.JPG 온도센서.jpg

이번 프로젝트에서 사용되는 온도센서는 DS18B20으로 라즈비안에서 1-wire 통신에 대한 구현이
GPIO4 핀에 대해 커널 모듈로 구현되어 있기 때문에 위와 같이 연결한다.
1-wire 통신에서 bus의 idle 상태는 HIGH LEVEL 이다. 따라서 VDD와 DQ 선 사이에 풀업 저항이 연결되어야 한다.

온도센서2.JPG

GPIO4 핀을 연결하면 여러 온도센서의 갑을 받을 수 있기 때문에 하나의 라즈베리 파이에 두 개의 온도센서 값을 받을 수 있다.
라즈베리파이에서 온도센서를 인식하는 순서는 온도센서 고유 ID의 알파벳 순서로 인식하기 때문에 알파벳 순서로 1번 칸 , 2번 칸에 각각 온도센서의 값을 받았다.

온도센서배치전.jpg온도센서배치.jpg

온도 센서의 칸 내부 배치 기존 계획은 위 왼쪽 사진 처럼 아크릴 판 벽면과 단열재 사이에 선을 연결하여 온도 센서 부분만 칸 배부로 나오게 하려 했으나
아크릴 판 벽면 가공에 있어서 흔들림이 있었고 이 흔들림이 온도 센서의 점프선에 영향을 주어 일정한 온도 데이터 값을 받는데 한계가 있었다.
결국 위 오른쪽 사진 처럼 라즈베리파이와 온도센서 간격을 최소로 하고 점프선을 밖으로 꺼내어 데이터 값의 변동을 제거할 수 있었다.

펠티어 소자 on/off 제어 

릴레이스위치.JPG

칸 내부의 온도제어의 경우 희망 온도와 현재 온도를 지속적으로 비교하여 상황에 맞게 펠티어 소자 모듈의 on/off 제어를 통하여 온도를 유지한다.
펠티어 소자 모듈의 on/off제어는 릴레이 스위치를 이용하여 제어한다. 릴레이 스위치는 IN에 들어가는 입력값이 HIGH/LOW 에 따라 연결된 전선을 연결하고 끊는 기능을 한다.

안드로이드 어플리케이션

위젯을 활용한 UI 구현

어플.jpg

위와 같은 content xml 파일을 수정하여 필요한 Button, EditText, TextView 및 ToggleButton 등을 추가하고 각각의 id를 부여하였다.

어플2.jpg -> 어플3.jpg

초기 Application 상태, 희망 온도에 대한 설정과 절전모드 사용 여부에 대한 입력만 가능한 상태이다.
바탕을 하얀색으로 바꾸었으며, 사용을 종료할 수 있는 버튼을 추가하였다.
어플4.jpg

최종 완성된 Application의 상태이며 Local에서 LCD touch screen을 통하여 진행가능한 모든 설정이 가능하도록 반영하였다.
또한 현재 냉온장고의 상태를 업데이트하여 확인할 수 있다. 전원이 켜져있다면 현재온도와 목표 온도를 표시해주며
꺼져있다면 현재온도와 절전모드에 의하여 꺼져있는지 단순히 전원이 꺼져있는지 표시된다.

C서버와 안드로이드 클라이언트와 TCP 통신 구현

서버의 구현은 수업시간에 다룬 TCP server 의 기본을 참조하였다.
서버는 계속해서 켜져있는 상태로 사용자가 Application에 접속하는 것을 지속적으로 기다리고 있으며
사용자가 접속하면 accept 이후 Application에서 보내는 시그널을 기다린다.
칸에 대한 제어의 경우 각 칸의 번호 (1번 혹은 2번)가 첫 번째 요소인 캐릭터 배열로 시그널을 전송한다.
반면 칸에 대한 현 상태의 업데이트의 경우 3번 혹은 4번이 첫 요소인 배열로 시그널을 전송한다.
따라서 서버에서는 이 첫 번째 요소에 대하여 판별하여 제어를 처리하거나 필요한 정보를 Application으로 전송하게된다.

통신하는 캐릭터 배열에 대한 Protocol은 본 위키 5.3 안드로이드 어플리케이션 UI 및 통신 구현 부분에 도식화 되어있다.

터치스크린 및 메인 프로그래밍

UI 수정과정


x윈도우 라이브러리 설치. 창을 생성하여 사용자 입력을 받는다.

LCD.png

초기 UI 양 쪽이 각각 하나의 CASE를 의미하고 입력을 받는다. 키패드를 만들어 사용자로부터 숫자를 직접 입력받으려 하였으나 시간이 많이 필요한 작업이라고 판단되어 수정하였다.

LCD2.png

10, 1 단위로 올리고 내릴 수 있도록 수정하였다. 화면에 전원 및 power saving mode 상태를 표시할 수 있는 창을 만들었다.

Lcd2.jpg

창의 설정값을 변경하여 전체 화면으로 바꾸었고 기본 폰트로 안에 적절한 글자를 추가하였다.

안드로이드 어플리케이션 서버 코드 통합

하나의 파이만을 사용하게 되면서 안드로이르 어플리케이션과 통신하는 코드를 통합해야할 필요성이 생겼다. lcd에서는 항상 터치스크린 이벤트를 기다리고 있기 때문에 스레드를 이용하기로 하였다. 기존의 서버 쪽 코드를 함수로 만들어 스레드로 구현하였다. 변수를 전역변수로 설정하여 각 스레드에서 값을 저장하고 읽도록 하였다.

냉온장고 제어코드 통합

마찬가지로 하나의 파이를 사용하게 되면서 각 칸을 제어하는 파이에서 사용하던 코드를 통합하게 되었다. 위와 마찬가지로 기존의 코드를 스레드로 구현하였고 전역변수에 값을 저장하였다.

Race Condition 해결

냉온장고 케이스 제작

냉온장고 케이스 모델링

냉장고캐드1.jpg

측면


냉장고캐드2.jpg

정면

아크릴케이스 실물 제작


아크릴1.jpg

모델링에 맞추어 아크릴 가공

아크릴2.jpg

실리콘으로 아크릴 접합

아크릴3.jpg

내부 단열재 부착

온도센서배치.jpg

온도센서 연장 후 칸 내부 배치

압력센서스프링.jpg

압력 센서 부착 구조

하드웨어.jpg

SMPS, 냉각 모듈, 브래드보드 등 부품 배치

프로젝트 결과

Flow Chart


Flowchart컴구조.PNG

사용자 입력 스크린 구현



LCD3.jpg

폰트 데이터를 이용하여 폰트 종류와 크기를 수정하고 적절히 배치하였다. 창에 전원, power saving mode 설정 여부, 현재 온도, 설정 온도 값을 표시하고 +10, +1, -1, -10 버튼으로 설정 온도 값을 바꿀 수 있도록 구현하였다.

LCD4.jpg

사용자가 누르는 이벤트를 입력받아 위와 같이 설정 온도 및 전원, 모드 설정을 바꿀 수 있다. 현재 온도 값은 주기적으로 온도 센서에서 받아 자동으로 업데이트 된다. 파이가 켜지면서 자동으로 프로그램이 실행되도록 구현하였다.

안드로이드 어플리케이션 UI 및 통신 구현


어플4.jpg

어플리케이션 최종 구현 모습. -5도에서 65까지 희망 온도를 설정할 수 있고 업데이트 버튼을 누르면 누른 칸의 이전 설정 온도값과 현재 새로운 설정 온도값을 표시해준다. 전원과 절전모드 설정이 가능하다.

어플5.jpg

어플리케이션 구동 결과 lcd화면이 바뀌었다. 원격에서 온도 값을 보내도 로컬에서 변경 값을 실시간으로 확인할 수 있도록 구현하였다.

데이터 송수신.PNG

안드로이드 스튜디오를 통해 java 클라이언트를 구축하고 라즈베리 파이에 c 서버를 구현 하여 사용자가 어플리케이션을 통해 제어 신호를 보내고 서버에서 받을 수 있는 환경을 구축하였다. 제어에 필요한 신호를 위의 문자 배열로 확정하였으며 UI에서 각각의 설정 버튼을 누름에 따라 제어 신호가 다르게 보내지게끔 이벤트를 처리하였다.

냉온장고 센서 및 모듈 제어 시스템 구현


통합센서.PNG

처음 설계에서는 lcd와 각 칸 제어에 라즈베리파이를 하나씩 사용하여 제어하러 하였으나 파이와 LCD모니터 간의 UART통신을 통해 데이터 교환 구현을 완료했지만 LCD모니터 파이에 UART통신 핀이 하나 뿐이어서 두 개의 파이와 데이터 교환을 할 수 없는 한계에 봉착하였고 또한 세 개의 파이를 사용할 경우 생기는 비용 문제가 생겨 하나의 파이만 사용하는 것으로 변경하였다.
하나의 파이에서 두 개의 칸의 각각 온도와 압력을 받기 위해 압력센서의 경우 ADC칩의 서로 다른 채널을 이용하였고 온도센서는 온도센서 아이디를 이용하여 GPIO4 하나 만의 연결로 각각의 온도 값을 받을 수 있도록 구현하였다.
파이 하나만으로 두 개의 칸의 온도와 압력을 모두 알 수 있기 때문에 제어 부분 파이와 LCD 모니터를 따로 두고 통신을 할 필요성이 없어졌고 제어 함수를 LCD모니터 파이에 넣어 하나의 파이로 제어부분 , 안드로이드 , 터치스크린 모든 부분에서 통제가 가능해졌다.

최종 통합 냉온장고



칸내부.jpg

앞모습. 문을 연 상태이다. 바닥 아크릴 판에 압력센서를 부착하고 그 위에 단열재를 부착하였다. 스프링이 달려 있는 판을 위에 배치하였다.
온도센서는 좌측 벽에 붙어 있어 칸 내부의 온도를 측정한다.

하드웨어.jpg

뒷모습. 열전소자 모듈, 릴레이 스위치, SMPS, 파이, Bread Board(회로 구성) , LCD터치 모니터 부품이 들어간다.

최종결과물시연

미구현 내용

- 냉온장 변경
초기 설계는 하나의 칸에서 냉장과 온장이 자유롭게 바뀌면서 영하 -5도에서 65도까지 온도를 바꿀 수 있는 냉온장고를 만드는 것이 목표였다. 하지만 모듈의 냉온장 제어에서 가장 핵심적인 전류방향 제어를 위한 H-bridge 모듈이 예상과는 다르게 배송이 지나치게 지연되면서 구현할 수 없게 되었다.
따라서 하나의 칸에서는 냉장을 다른 칸에서는 온장을 하고 원하는 온도로 제어하는 것으로 변경하였다. 전류의 방향을 바꾸는 부분을 제외한 나머지 부분을 구현하였으므로 이후 이 부품이 추가된다면 좀 더 빠른 온도 제어와 기존 목표를 달성할 수 있을 것으로 생각된다.

제약 사항

- LCD 모니터와 안드로이드 Application 간 통신 제약

LCD모니터와 안드로이드 Application 간의 통신은 Wifi를 기반으로 하는 TCP 소켓 통신으로 구현한다.
Wifi가 보장되는 환경에서는 어디에서든 스마트폰으로 기기 자체 제어를 할 수 있는게 목표였으나
이와 같은 설정을 하기 위해서는 공유기에 포트 포워딩을 하여 외부(Application)에서는 공유기의 ip로 접근하여야 한다.
개발 과정에서 사용한 Wifi가 교내 Wifi이기 때문에 학교측의 승인을 얻어야 진행할 수 있는 사항이기에 구현하지 못하였다.
따라서 현재로서는 같은 Wifi 환경에서만 스마트폰으로 기기를 제어할 수 있는 제약이 생겼다.

프로젝트 평가

평가항목

평가항목컴구조.PNG

평가결과

느낀점


김*영 :

김*훈 :

박*윤 :