월요일이 좋아 - Smart Window Device

MIE capstone
EmSys2024C (토론 | 기여)님의 2021년 6월 20일 (일) 11:07 판 (구동부 설계 및 구현)
이동: 둘러보기, 검색

프로젝트 소개

프로젝트 명

Smart Window Device

프로젝트 기간

2021.3~2021.6

팀 소개

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

프로젝트 개요

프로젝트 요약

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

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

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

프로젝트 개발 목표

편의성, 조작성 등등 목표로 잡았던 것에 대한 기준

동작 시나리오

구현 내용

시스템 구성

(사진) 시스템은 위와 같은 구성으로 이루어진다. 메인 서버가 되는 라즈베리 파이에 미세먼지 센서 PMS7003과 이산화탄소 센서 Mh-z19가 장착되고, 공공데이터포털에서 대기 질 데이터를 api로 받아온다. 어플리케이션은 라즈베리 파이와 소켓 통신을 하며 읽어 온 센서값을 사용자에게 보여줄 수 있도록 한다. 제어부의 아두이노가 모터와 pdlc 필름을 제어하고, 라즈베리 파이에서 메인 알고리즘대로 블루투스 통신을 통해 아두이노에 명령을 전달한다.

구동부 설계 및 구현

가.랙앤 피니언

랙 앤 피니언은 회전운동을 직선운동으로 바꾸는데 사용하는 기어입니다.
이를 이용하여 창문의 여닫음 구동을 설계하였다.
기어설계는 표준규격에 맞추어서 3D캐드로 설계하였다.
그림1은 정면도, 윗면도, 측면도와 배치도를 나타냅니다.
<그림1>
나.아두이노

구동부 회로는 다음 그림과 같이 구현되었다.

구동부.png
  • 모터부
모터 드라이버와 모터 RB-35GM+Encoder 21TYPE 로 구성되어 있으며, 12V 배터리로부터 전원을 인가받아 아두이노로부터 명령받은 대로 동작한다.
  • PDLC부
스마트필름 (PDLC), 12V 인버터, MOSFET 모듈로 구성되어 있으며, 12V 배터리-인버터 로부터 전원을 인가받는다. 아두이노에서 신호를 받아 MOSFET을 통해 on/off 를 제어한다.
  • winduino.INO
아두이노에 내장된 코드는 다음과 같다.

제어부 설계 및 구현

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

  • 미세먼지 센서 연결
라즈베리 파이의 GPIO 핀 중 UART 1을 통해 연결하였다. 시리얼 통신을 이용해 값을 받아와서 메인 제어 프로그램인 server_main.py에서 값을 저장해두도록 한다.
  • 이산화탄소 센서 연결
라즈베리 파이의 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, 이산화탄소 중 하나라도 위의 조건을 만족하면 창문이 열리고, 세가지 조건에 대해 창문을 닫는 판단을 하면 그때 닫게 된다.

어플리케이션 설계 및 구현

나. 어플리케이션

프로젝트 결과

최종 결과물

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

테스트

미구현 내용

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

부록