"월요일이 좋아 - Smart Window Device"의 두 판 사이의 차이

MIE capstone
이동: 둘러보기, 검색
(구동부 설계 및 구현)
(어플리케이션 설계 및 구현)
127번째 줄: 127번째 줄:
 
::메인 화면은 각종 api를 통한 외부 미세먼지 수치, 온도와 라즈베리파이에서 제공하는 실내 미세먼지, 이산화탄소 수치를 확인할 수 있다. 실외 정보는 api를 통해 정보를 받아와 출력하고 실내 정보는 연결 화면에서 소켓통신을 성공하면 서버에서 주는 데이터를 사용해 출력한다. pdlc 제어와 창문 자동 모드는 버튼을 클릭하여 제어 신호를 서버로 전성한다. 창문 수동 모드 버튼을 클릭할 경우 창문 제어 화면으로 이동한다. 화면 제일 하단에는 공공데이터 api의 저작권을 표시해 두었다.
 
::메인 화면은 각종 api를 통한 외부 미세먼지 수치, 온도와 라즈베리파이에서 제공하는 실내 미세먼지, 이산화탄소 수치를 확인할 수 있다. 실외 정보는 api를 통해 정보를 받아와 출력하고 실내 정보는 연결 화면에서 소켓통신을 성공하면 서버에서 주는 데이터를 사용해 출력한다. pdlc 제어와 창문 자동 모드는 버튼을 클릭하여 제어 신호를 서버로 전성한다. 창문 수동 모드 버튼을 클릭할 경우 창문 제어 화면으로 이동한다. 화면 제일 하단에는 공공데이터 api의 저작권을 표시해 두었다.
 
::pdlc 제어
 
::pdlc 제어
[[파일:Pdlconoff.png|800픽셀|섬네일|가운데|pdlc 제어]]
+
[[파일:Pdlconoff.png|700픽셀|섬네일|가운데|pdlc 제어]]
 
:: 창문 자동 모드
 
:: 창문 자동 모드
[[파일:창문자동모드.png|800픽셀|섬네일|가운데|창문 자동 모드]]
+
[[파일:창문자동모드.png|700픽셀|섬네일|가운데|창문 자동 모드]]
 +
 
 +
:나.API
 +
[[파일:api 개략도.png|700픽셀|섬네일|가운데|API 개략도]]
 +
::api는 다음과 같이 수행된다. 단말기에서 GPS 신호인 경위도를 카카오 위치 API에 넣어 TM좌표를 반환받는다. 이 좌표를 다시 동네예보 API와 미세먼지 측정소명API에 사용한다. 동네예보 API에서는 해당 지역 실시간 날씨 정보가 반환되고, 측정소명 API에서는 해당 좌표에서 가장 가까운 측정소명이 반환된다. 측정소명은 다시 미세먼지 API에 입력되고 미세먼지 데이터를 반환 받는다
  
 
==프로젝트 결과==
 
==프로젝트 결과==

2021년 6월 20일 (일) 13:41 판

프로젝트 소개

프로젝트 명

Smart Window Device

프로젝트 기간

2021.3~2021.6

팀 소개

서울시립대학교 기계정보공학과 20144300** 노*하 (팀장)
서울시립대학교 기계정보공학과 20144300** 장*선
서울시립대학교 기계정보공학과 20154300** 김*호
서울시립대학교 기계정보공학과 20164300** 이*재

프로젝트 개요

프로젝트 요약

미세먼지 센서, 이산화탄소 센서 등 IoT 센서와 라즈베리파이를 이용하여 기존의 창문에서 탈부착 가능한 장치를 개발한다. 인터넷으로부터 기상 정보를 불러오고 각종 센서를 통해 전달받은 값을 이용하여 PDLC필름에 ON/OFF 값을 주어 채광 조절을 하고, 여러 조건들을 만들어 자동으로 창문이 열림/닫힘 기능이 가능하도록 구현하였다. 시나리오에 따라 창문이 개폐 될 때도 있지만 스마트폰 어플리케이션을 활용하여 수동으로 개폐할 수 있도록 어플리케이션을 추가로 개발한다. 어플리케이션을 통해 센서 값을 실시간으로 확인할 수 있다.

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

Iot 기술의 발달로 많은 가정에서 전등과 TV 등 많은 가구 및 가전의 자동화 혜택을 누리고 있다. 그러나 창문의 경우 아직도 수동으로 열고 닫아야 하고, 기존의 스마트 창문의 경우 대부분 새로운 집에 직접 빌트인되어있다. 따라서 우리는 창호에 장착할 수 있는 스마트 디바이스를 만들어 사용자의 IOT경험을 극대화시키는 것을 목표로 한다. 또한 미세먼지 경보 발령 빈도가 잦아지고, 코로나19의 확산으로 인하여 적절한 시기에 행해지는 환기의 중요성이 커지는 요즘, 미세먼지를 체크하여 자동으로 여닫아 사용자의 건강 증진에도 기여하는 것을 목표로 한다. 이 프로젝트를 통해 IOT 개발에 대해 더 학습하고 실습할 수 있는 기회를 얻을 수 있을 것으로 생각된다. 이 장치를 통해 기존의 창문에서 스마트 창문을 사용할 수 있고, 가정 혹은 카페나 사무실 등에서 실내 정보를 확인해 공간별로 적합한 실내 환경을 조성할 수 있고 이를 통해 사용자의 건강을 증진할 수 있을 것으로 기대한다. 또한 창문 조작의 편의성을 증대하고 필요에 따라 사용자의 프라이버시를 지킬 수 있을 것으로 기대된다.  

프로젝트 개발 목표

목적 계통도

우리의 프로젝트 개발 목표를 목적 계통도로 나타내면 다음과 같다.

  • 편의성
직관적이며 편리한 조작을 목표로 한다. 적절한 창문의 개폐 알고리즘의 적용을 통하여 실내 대기 질에 반응해 창문을 자동으로 여닫을 수 있고, 센서로부터 받은 정보를 연결된 어플로 전달하여 사용자가 쉽게 볼 수 있다. 스마트폰 어플리케이션은 하위 컨텍스트 메뉴의 개수를 줄이고 깔끔하게 디자인하여 가능한 한 적은

터치 횟수로 창문을 여닫을 수 있다.

  • 호환성
장치와 실제 창문이 잘 결합되어 작동하도록 단단하게 고정되고, 스펙 내의 각각 다른 창문의 크기에도 전부 대응하여야 한다. 차후 소프트웨어적인 기능의 추가가 가능하다.
  • 성능
내부 공기 질의 측정과 창문의 조작이 정확하여야 한다. 제품은 너무 비싸면 안되며 작동에 에러가 일어나지 않고 안정적으로 동작하여야 한다. 오버스펙을 지양하고 비교적 저렴한 센서와 구동부, 제어장치를 사용하여 단가를 낮춘다.

동작 시나리오

어플 시나리오

구현 내용

시스템 구성

전체 시스템 구조도

시스템은 위와 같은 구성으로 이루어진다. 메인 서버가 되는 라즈베리 파이에 미세먼지 센서 PMS7003과 이산화탄소 센서 Mh-z19가 장착되고, 공공데이터포털에서 대기질 데이터를 api로 받아온다. 어플리케이션은 공공데이터포털 OpenApi를 사용하고 라즈베리 파이와 소켓 통신을 하여 실내와 실내의 대기 질을 사용자에게 보여준다. 어플리케이션으로부터 라즈베리 파이에 명령이 입력되면 블루투스 통신을 통해 제어부의 아두이노로 전달된다. 이러한 명령에 따라 아두이노가 모터와 pdlc 필름을 제어하여 최종적으로 디바이스가 동작 시나리오대로 작동한다.

구동부 설계 및 구현

가) 랙 앤 피니언
랙 앤 피니언은 회전운동을 직선운동으로 바꾸는데 사용하는 기어이다.
이를 이용하여 창문의 여닫음 구동을 설계하였다.
기어설계는 표준규격에 맞추어서 3D캐드로 설계하였다.
정면도, 윗면도, 측면도와 배치도를 나타낸다. <그림1>.
<그림1>
  • 피니언
피니언 설계스펙은 다음과 같다.
pinion 피치경 : 30mm
m  : 1.5
z  : 20
원주  : 94.2mm
피니언이 랙 끝까지 이동 시 필요한 회전수는 1.8회전이고 시간은 3.1 sec이다.
  • 설계된 랙 앤 피니언은 다음과 같다.
랙앤피니언확대.png
랙앤피니언.png
나) 아두이노
구동부 회로는 다음 그림과 같이 구현되었다.
<구동부회로>
  • 모터부
3A모터 드라이버 AM-DC1-3D 와 모터 RB-35GM+Encoder 21TYPE 로 구성되어 있으며, 12V 배터리로부터 전원을 인가받아 아두이노로부터 명령받은 대로 동작한다.
엔코더를 이용해 제어부에서 측정하고 계산한 rate에 따른 모터 회전 수를 조절할 수 있도록 설계하였다.
  • PDLC부
스마트필름 (PDLC), DC_DC 가변 컨버터, MOSFET IRF520 모듈로 구성되어 있으며, 12V 배터리-인버터 로부터 전원을 인가받는다. 아두이노에서 신호를 받아 MOSFET을 통해 on/off 를 제어한다.
전원이 인가되면 필름이 투명해지며, 전원이 인가되지 않는경우 필름이 다시 불투명해진다.
  • 블루투스 Client
HC-06 모듈을 사용하여 제어부와 통신한다.
  • winduino.INO
아두이노에 내장된 명령어는 다음과 같다.
명령어 '1' = 자동모드 on
명령어 '2' = 자동모드 off
명령어 '3' = 자동모드 open
명령어 '4' = 자동모드 close
명령어 '5' = PDLC on
명령어 '6' = PDLC off
명령어 '7' = 수동모드 open 또는 측정 start
명령어 '8' = 수동모드 close
명령어 '9' = 수동모드 stop 또는 측정 end
명령어 'else' = 측정된시간*모터회전수 만큼의 rate를 가져온다.
  • 기구부
정면샷.jpg
기구부의 경우 22cm x 13cm x 7cm 의 상자형태로 제작하였다. 전면부는 경첩을 통해 여닫이 구조로 제작, 창문과의 접합부의 경우 판을 하나 덧대어 접합 가능한 표면적을 넓게 하였다.
창문과의 접합부의 경우 양면젤테이프/나사못고정 두가지 경우를 두었으며, 프로토타입 제작에서는 양면 젤테이프를 이용하기로 하였다.
내부 정면.png
내부 회로 구성은 다음과 같다.
후면부 패널에 회로를 고정시키고, 모터는 상부에 고정하였다. 배터리는 전면부 개방시 가장 앞에두어 후에 배터리 교체가 용이하도록 구성하였다.

제어부 설계 및 구현

라즈베리 파이 제어 프로그램

  • 미세먼지 센서 및 이산화탄소 센서 연결
Monday rasppi.jpg
미세먼지 센서 PMS7003은 라즈베리 파이의 GPIO 핀 중 UART 1을 통해 연결하였다. 이산화탄소 센서 MHZ19는 라즈베리 파이의 GPIO 핀 중 UART 0을 통해 연결하였다. 시리얼 통신을 이용해 값을 받아와서 메인 제어 프로그램인 server_main.py에서 값을 저장하도록 한다.
  • 미세먼지 데이터 OpenApi 사용
공공데이터 포털의 한국환경공단_에어코리아_대기오염정보 중 측정소별 실시간 측정정보 조회 기능을 사용한다. 구할 수 있는 OpenApi 서비스 중 가장 정밀한 위치별 데이터를 제공하고, 매 시간마다 업데이트되는 정보를 받아 최대 1시간 이내의 시간 정확도를 가진다.
  • 소켓 서버
어플리케이션에서 접속을 할 수 있도록 소켓 서버를 운영한다. 클라이언트가 접속한 경우 받아온 센서값을 csv 형식으로 보내준다.어플리케이션 클라이언트가 라즈베리 파이 서버에 전달하는 메시지는 공공데이터포털 기상정보 Api에 사용하기 위한 관측소 위치 정보와 사용자가 창문에 내리는 명령어이다.
  • 블루투스 서버
아두이노를 제어하기 위한 통신 서버이다. 메인 알고리즘 또는 사용자 명령에 따라 클라이언트에게 모터와 PDLC 필름을 제어하는 명령어를 전달한다.
  • 센서 값 처리
받아온 센서의 데이터에 노이즈가 있는 경우를 대비하여 이동평균필터를 센서값에 적용하였다. 최근 10초간의 데이터의 평균값을 저장하는 리스트를 운영하게 된다. 이 리스트는 최대 300개의 원소를 가지고 있어 최근 5분간의 데이터를 확인할 수 있다.
  • 메인 알고리즘
메인 제어 알고리즘 플로우차트
우리가 사용한 알고리즘은 다음과 같다. 내부 미세먼지 농도가 외부 미세먼지 농도보다 높은 경우, 또는 3분간의 내부 미세먼지 농도 증가 속도를 이용한 외삽법으로 예상되는 내부 미세먼지 농도가 외부 미세먼지 농도보다 높은 경우 창문을 연다. 이때 외부 미세먼지 농도가 너무 낮아서 의도치 않게 창문이 열리는 경우를 방지하기 위해 문턱값인 30µg/m^3 이상일 때만 창문이 열리도록 한다. 내부 미세먼지 농도는 PM2.5와 PM10으로 나뉘는데, 두 수치 모두 비교한다. 또한 내부 이산화탄소 농도가 800ppm 이상일 때 창문이 열리도록 한다. 창문이 열린 후 5분간 실내 대기 질의 변화가 10 이하일 때 실내와 실내 대기 교환이 정상상태에 이르렀다고 판단하고 닫게 된다. PM2.5, PM10, 이산화탄소 중 하나라도 위의 조건을 만족하면 창문이 열리고, 세가지 조건에 대해 창문을 닫는 판단을 하면 그때 닫게 된다.
  • 수동 제어 모드
어플리케이션으로부터 수동으로 창문을 열고 닫거나, PDLC 필름을 켜고 끄는 명령을 받으면 구동부인 아두이노에 명령을 전달한다.
  • 창문 길이 측정
어플리케이션으로부터 창문을 끝까지 여닫기 위해 필요한 모터 회전수를 측정할 수 있다. 측정 시작시 창문이 열리고 창문이 끝까지 열리면 종료를 눌러 동작을 멈추도록 한다. 이 사이 모터가 움직인만큼을 기억하여 앞으로 창문을 여닫을 때 적용할 수 있도록 한다.

어플리케이션 설계 및 구현

어플리케이션은 사용자에게 인터페이스를 제공하여 실내, 실외 미세먼지와 실외 온도를 나타내며, 창문과 pdlc 필름을 제어할 수 있는 기능을 보기 쉽게 제공한다. 소켓통신을 통해 실내 미세먼지 데이터를 받고, 창문과 pdlc 필름을 제어하는 신호를 라즈베리파이에 전달한다. 실외 미세먼지와 기온정보는 API를 통해 정보를 제공한다.

가.화면 설계
  • 연결 화면
연결화면
연결 화면은 연결하기 버튼을 누르면 라즈베리파이 서버와 연결을 시도하여 라즈베리파이와 소켓통신이 성공하면 메인화면으로 화면이 넘어간다. 실패할 경우 어플은 재시작 된다.
  • 메인 화면
메인화면


메인 화면은 각종 api를 통한 외부 미세먼지 수치, 온도와 라즈베리파이에서 제공하는 실내 미세먼지, 이산화탄소 수치를 확인할 수 있다. 실외 정보는 api를 통해 정보를 받아와 출력하고 실내 정보는 연결 화면에서 소켓통신을 성공하면 서버에서 주는 데이터를 사용해 출력한다. pdlc 제어와 창문 자동 모드는 버튼을 클릭하여 제어 신호를 서버로 전성한다. 창문 수동 모드 버튼을 클릭할 경우 창문 제어 화면으로 이동한다. 화면 제일 하단에는 공공데이터 api의 저작권을 표시해 두었다.
pdlc 제어
pdlc 제어
창문 자동 모드
창문 자동 모드
나.API
API 개략도
api는 다음과 같이 수행된다. 단말기에서 GPS 신호인 경위도를 카카오 위치 API에 넣어 TM좌표를 반환받는다. 이 좌표를 다시 동네예보 API와 미세먼지 측정소명API에 사용한다. 동네예보 API에서는 해당 지역 실시간 날씨 정보가 반환되고, 측정소명 API에서는 해당 좌표에서 가장 가까운 측정소명이 반환된다. 측정소명은 다시 미세먼지 API에 입력되고 미세먼지 데이터를 반환 받는다

프로젝트 결과

최종 결과물

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

테스트

미구현 내용

  • 창문을 끝까지 열거나 끝까지 닫지 않고 50%나 25%, 혹은 사용자가 원하는 만큼만큼 여는 기능
    • 메인 제어 알고리즘에서 내부 CO2 농도에 따라 창문을 열 때, 외부 미세먼지 농도에 따라 창문을 여는 정도가 바뀌는 부분

프로젝트 평가

평가항목

1. 센서 반응속도

  • 평가 방법 : 20회 반복 실험
  • 평가 기준 : < 3s ( 3초 이하 )

2. 창문 조작속도

  • 평가 방법 : 20회 반복 측정(평균)
  • 평가 기준 : < 10s ( 10초 이하 )

3. 조작 신뢰도

  • 평가 방법 : 각각 20의 반복 실험
  • 평가 기준 : 100% 정상 작동

4. 창문 조작 정확도

  • 평가 방법 : 20회 반복 실험
  • 평가 기준 : < 10% ( 창문 위치 조작 시 오차 10%)

5. 디바이스의 안정적 부착여부

  • 평가 방법 : 20회 반복 실험
  • 평가 기준 : 100% ( 시나리오 진행 중 탈착 이상 유무)

6. 통신의 끊김 여부

  • 평가 방법 : 20회 반복 실험
  • 평가 기준 : 95% ( 시나리오 진행 연결 이상 유무)

평가결과

느낀점

노*하 : 프로젝트가 끝나감에 따라 올해 1학기가 파노라마처럼 생각이 났습니다. 처음에 내장형 프로젝트 조원을 구하고, 처음 조원을 만나 주제를 정하였습니다. 저희 조는 주제를 정하는 과정에서 정말 많은 고민을 하였고 여러가지 얘기도 오갔습니다. 그리고 교수님 피드백을 받게 되었고 그리하여 Smart Window Device라는 주제를 선정하게 되었습니다. 어플리케이션, 다양한 센서제어, 공공데이터 API, 기어 설계 등등 정말 다양한 작업을 하기로 하여서 진행과정에서 서로 토론을 많이 하였습니다. 작업에서 해야 하는 내용이 다르기 때문에 프로젝트를 진행함에 있어서 분업을 중요하게 생각하였습니다. 그래서 서로 원하는 분업을 하게 되었고 문제가 발생하였을 떄 서로 모여서 고민하고 조사하여 해결하기도 하였습니다. 짧지만 여러가지를 많이 배운거 같습니다. 실제로 회사에 들어가게 되어서 프로젝트를 하게 된다고 한다면 무슨 문제가 발생할 지 모르기 때문에 마감일보다 더 여유롭게 계획해야한다고 느꼈습니다. 또한 이런 중요한 프로젝트의 팀장으로써 조원들의 사기를 올려주려고 노력하였으며 팀장이라는 무거운 자리에서 역할에 대해 알게 된거 같아서 좋은 경험이었습니다. 제가 많이 부족했지만 저를 믿고 따라주고 너무 잘해준 조원들에게 너무 고맙고 진행해가는 과정에서 교수님과 조교님들이 좋은 피드백을 주시고 방향을 잡는데 도움을 많이 주셔서 너무 감사했습니다. 만약에 다시 프로젝트의 팀장을 할 수 있는 기회가 있다면 이번보다는 더 안정적이고 완성도 있는 프로젝트를 진행할 수 있을거 같습니다.
장*선 :
김*호 :이번 프로젝트를 하면서 하드웨어를 제작하는 것이 생각보다 어렵다는 것을 느꼈습니다. 기계정보공학과임에도 불구하고 기구에 관련된 설계를 처음 해보았기 떄문에, 주제 선정 단계부터 하드웨어 제작을 생각하며 정말 걱정이 많았습니다. 실제로 설계를 진행하면서 회로도 구성부터 기구부 제작까지 우여곡절이 많았습니다. 특히 물품 선정과 구매 부분에서 여러 어려움이 있었습니다. 개념 설계과정에서 적합하다 생각한 제작 재료도 제작을 하면서 변경의 필요를 느끼고, 그때문에 새로운 물품을 선정하고, 물품을 구매할 방법또한 찾아내는 과정이 저에겐 처음이었기에 매우 생소했던것 같습니다. 또한 팀으로 무언가를 할 때 커뮤니케이션이 얼마나 중요한지 새심 깨닫게 되었습니다. 프로젝트가 진행되면서 몇가지 의견 충돌이 있었는데 제 생각에는 설계의 지향점이 각자가 달랐기 때문이라고 생각되었습니다. 처음부터 이 부분에 대한 의견을 조율하여 일관된 설계 방향을 뚜렷하게 잡았어야 했는데 초반에 팀원간의 의사소통이 조금 부족했던 것 같습니다. 때문에 조금 늦게 불이 붙기는 했지만, 후반전만큼은 팀원들 모두가 말도 안되게 뛰어난 실력을 보여주면서 말이 안나올정도로 열심히 해주었기에 이렇게 프로젝트를 잘 마무리할 수 있었습니다
이*재 : 다방면으로 배우는 점이 많았다. 처음 계획한 진행 순서에 너무 매달려서 후반부 진행을 늦게 시작한게 아쉬웠다. 결과적으론 비슷할 수 있지만 쉽게 가능한 일을 먼저 처리하는게 심리적인 여유가 있었을 것 같다. 처음으로 해보는 중규모 팀 프로젝트였는데, 분업과 협업을 이렇게 경험해볼 수 있어서 좋았다.

부록