최강 김조장이 - K-Cocktail Mate

MIE capstone
EmSys2024B (토론 | 기여)님의 2021년 6월 20일 (일) 04:04 판 (제어부 및 회로 구현)
이동: 둘러보기, 검색

프로젝트 소개

프로젝트 명

K-Cocktail Mate

프로젝트 기간

2021.3~2021.6

팀 소개

서울시립대학교 기계정보공학과 2014430035 조*웅 (팀장)
서울시립대학교 기계정보공학과 20154300** 장*빈
서울시립대학교 기계정보공학과 (학번) (이름)
서울시립대학교 기계정보공학과 20174300** 이*희

프로젝트 개요

프로젝트 요약

프로젝트의 배경 및 기대효과

프로젝트 개발 목표

동작 시나리오

구현 내용

시스템 구성

기구부 설계 및 구현

제어부 및 회로 구현

펌프 제어:

  1. 하드웨어: 선택 목록 중에는 노즐과 펌프가 있다. 노즐의 경우, 시중에서 판매하는 라즈베리파이 전용 노즐은 존재하지 않는다. 따라서 별도의 모터를 통해 노즐을 작동시켜 줄 새로운 기계 파트를 설계해야 한다는 단점이 있다. 그리고 너무 강하게 나와서 주류가 튀는 경우에는 PWM 제어를 통해 세기를 낮춰야 하는데 노즐의 경우 누르다가 어느 한순간에 확 나오기 때문에 그 또한 쉽지 않다. 반면 펌프의 경우에는, 라즈베리파이 전용으로 사용할 수 있는 펌프가 시중에 존재한다. 그리고 나오는 속도가 일정하고, PWM을 통해 손쉽게 제어가 가능해진다. 그래서 최종적으로 워터펌프를 사용하기로 결정하였다. 그리고 최종 결정된 펌프의 스팩은 다음과 같다.
  소형 DC 380 펌프모터 [SZH-GNP139] 
  스펙:  •작동 전압 : DC 6-12V
         •무부하전류 : 0.18A
         •부하시전류 : 0.3A
         •최대유량 : 2~3ℓ/분
         •양정 : 2m
         •노즐직경 : 8㎜
         •제품 크기 : 100×45×62㎜
         •무게 : 110g
  선정 이유: 위에 제시된 제품의 스펙을 통해 유량을 계산해 봤을 때 15초에 최소 500ml의 양을 산출한다. 이는 한 잔의 양인 180ml를 채우는 데에 15초 미만으로 설정한 기존 목표를 이루기에 충분하다. 또한 양정이 2m이므로 1m가 채 안되는 호스 길이를 사용하여 주류를 사출하기에 충분하다. 이러한 이유에서 해당 펌프모터를 선정하게 되었다.

소프트웨어 설계 및 구현

프로세스 흐름도

프로세스 흐름도3.png

UI에서 사용자 입력을 받아 음료 제조 과정과 온도 제어 과정을 비동기적으로 실행한다. 처음 제안과는 달리 음료를 섞어주는 서보모터 기능이 제작 도중 제외되었다.


프로세스 구성도

프로세스 구성도2.png

UI프로세스와 냉장고 프로세스를 독립적으로 구성했다. UI 프로세스에서 음료 제조 제어부와 프로세스간 데이터 통신을 위한 제어부와 데이터 통신을 멀티쓰레드로 구현했다. 냉장고 프로세스에서 팬 제어와 온도 측정을 비동기적으로 수행하기 위해 멀티쓰레드로 구현했다. 또한 프로세스간 통신을 위해 공유메모리를 사용했다.


프로세스간 통신

프로세스간통신2.png

프로세스간 통신을 위해 공유메모리에 각각의 인덱스에 특정 정보를 저장한다. 프로그램 실행시 텍스트파일로 저장되어 있는 기본값을 읽어서 공유메모리에 저장한다. 그 다음, 각각의 프로세스가 동작하며 공유메모리에 읽고 쓰기를 수행한다.


협업 과정

소프트웨어 구현을 UI, 펌프, 냉장고 총 세 모듈로 나누어서 제작했다. 원활한 소프트웨어 통합을 위해 Github를 사용했다. 각각 모듈의 브랜치를 만들어서 각각의 모듈을 구현한 뒤 최종적으로 통합했다.

Github.PNG

Github 주소 : https://github.com/JoHyunwoong/No.1-kim.jo.jang.lee.


UI 구현

제안서 발표 당시 UI초안

UI초안.png

홈, 모니터링, 제어 조정, 설정 탭이 있고 홈 화면에서는 음료의 비율을 조정할 수 있고 음료 제조 시작 기능이 있다.


완성된 UI

UI제작을 위해 PyQt5 프레임워크를 사용하였다. 또한 터치스크린으로 라즈베리파이 7인치 터치스크린을 사용하기 때문에 해상도에 맞게 800 * 480 해상도로 UI를 제작하였다. UI는 총 5개의 화면으로 구성되어 있다. 라즈베리파이가 부팅되면 처음으로 보이는 main화면, 칵테일 모양을 누르면 진입하는 home 화면, 모니터 모양을 누르면 진입하는 monitor화면, 제어 모양을 누르면 진입하는 parameter화면, 톱니바퀴 모양을 누르면 진입하는 setting 화면으로 구성되었다.


main 화면

Ui main.PNG

main 화면은 4개의 버튼이 존재한다. 각각의 버튼을 클릭하면 특정 기능을 수행하는 화면으로 이동하게 된다.


home 화면

UI home2.PNG

home 화면은 맥주의 비율을 조정하는 기능과 제조를 시작하는 기능들을 제공한다. 비율 조정은 슬라이더를 움직여서 할 수 있으며 제조 시작 기능은 버튼을 클릭하면 음료 제조가 시작된다.


monitor 화면

Ui monitor2.PNG

monitor 화면은 음료의 잔량을 확인하고 음료가 교체되었을 시 교체버튼을 눌러 소프트웨어에 전달하는 기능, 현재 냉장고의 온도를 표시해주는 기능, 목표온도를 설정할 수 있는 기능들을 제공한다.


parameter 화면

Ui parameter.PNG

parameter 화면은 펌프의 출력양을 조절한다. 각각의 펌프가 다른 음료를 사용하기 때문에 미세한 조정이 필요하다.


setting 화면

Ui setting.PNG

setting 화면은 음료 제조가 완료된 후 발생하는 부저의 소리를 켜고 끌 수 있는 기능을 제공한다. 또한 현재 ui에서 설정된 음료의 비율, 현재 온도, 목표 온도, 펌프 출력양을 텍스트 파일로 저장해 재기동 시 기본값으로 불러오는 기능을 제공한다.


펌프 구현


냉장고 구현

온도 측정에 필요한 온도 모듈과 팬 모듈로 구성되어 있다. 하지만 냉장고 목표온도에 비해 열전소자의 냉각능력이 부족해 팬을 항상 최대속도로 가동하게 됨으로써 팬 모듈이 제외되었다.

온도 측정 모듈은 DS18B20온도 센서와 1Wire 통신을 함으로써 온도를 읽어온다. 해당 온도센서는 디지털 출력으로 구성되어 있어 AD과정을 거치지 않는다. 읽어온 온도는 프로세스간 공유메모리의 리스트의 약속된 인덱스에 저장된다.

프로젝트 결과

최종 결과물

결과물 사진 혹은 시연 영상 등

미구현 내용

프로젝트 평가

평가항목

평가결과

UI 완성도 : 다양한 음료비율에서 제조 시작, 음료 교체, 목표온도 설정, 펌프 출력양 설정, 부저 소리 설정, 기본값 저장 기능 등에서 15회 이상 테스트 시 아무런 오류가 발생하지 않았다.

느낀점

이*희 : 하드웨어가 필요한 제품을 만들 때 생각보다 많은 물적,인적 자원이 필요하다는 것을 깨달았다. 또한, 순수하게 제작으로 들어가는 시간으로 인한 작업 지연만큼, 협업으로 인한 지연 및 물품 배송 지연으로 인한 지연, 이로 인해 발생하는 추가적인 지연 요소들에 대해 체험할 수 있었다. 의사소통의 중요함과 협업 시 신경써야 할 부분들에 대해서도 배울 수 있는 좋은 기회였다.


장*빈 : 처음으로 하드웨어와 소프트웨어가 결합되는 프로젝트를 해봤다. 소프트웨어의 경우 비대면으로 완성하는 것이 큰 문제가 없지만 하드웨어의 경우 물품 배송부터 실제 제작까지 환경적으로 많은 어려움이 있었다. 또한 협업 과정 중 각자의 사정으로 인해 지연되는 경우, 프로젝트 진행에서 생각보다 치명적으로 작용했다. 서로에 작업에 대해 구체적으로 알지 못하기 때문에 의사소통이 매우 중요한데 비대면으로 이를 진행하다 보니 의사소통에 어려움이 있었다. 혼자 하는 일이 아닌 여럿이서 하나의 작업을 할 때는 의사소통이 매우 중요하다는 것을 배웠다.

부록