가전 제품을 조종하는 감자

박주현·2025년 12월 1일

Record

목록 보기
12/13

팀 결성

멸종된 IoT 희망자

공통 프로젝트를 겪으며 희귀했던 IoT 프로젝트 희망자가 멸종되다시피 해버렸다.
이유로는 프로젝트 비용과 공통 때 들려오던 고통의 소리로 인한 두려움이 컸다.
이전 팀에서의 Embedded 담당자 1명만 있는 상황에서 4명을 구해야하는 상황에 처해버리고 말았다.

팀원 구하기

개발 실력과 상관없이 열심히 하면 괜찮다는 생각으로 열심히 하는 모습이 보기 좋았던 친구 하나를 팀원으로 받아들였다. 이후로는 해당 팀원 덕에 하루 만에 팀원이 다 구해졌다.
팀원 구하는 보법이 달랐다.

프로젝트 주제 선정

수상의 굴레

팀원들 중 몇 명은 수상이 프로젝트의 목적이 되어가고 있었다. 이로 인해 팀 회의 내내 갈등을 빚게 되었다.
프로젝트에 대한 결과가 좋으면 수상은 따라온다라는 가치관을 가지고 있었던 나와는 회의 내내 충돌이 있을 수 밖에 없었다.
특히, 발표를 먼저 생각하고 프로젝트 주제를 정하려고 하다보니 회의가 길어지고 도돌이표가 되는 경우가 많았다.

프로젝트 주제 결정

계속된 충돌 끝에 합의점을 찾는 데 성공하였다.
이 과정에서 분위기가 좋지는 않았지만 발표의 임팩트를 위해 음성 인식을 추가하여 진행하기로 하였다.
프로젝트 주제는 초기에 선정하였던 가전 제품 자동 제어로 결정되었다.

프로젝트 명세서 작성

프로젝트 개요

프로젝트가 결정됨에 따라 필요한 요소들을 생각하게 되었다.
비 IoT 가전에 IoT 기능을 추가하기 위해 가전에 신호를 주는 기기(이이하 리모트 기기)와 해당 기기에 명령을 전달하는 허브 기기(이하 허브)를 주로 하여 모바일로 제어를 하기로 하였다.

요구사항 명세

기능ID기능명세부작업 예시선행작업우선순위
EM-HUB-001IR Signal 수신 → Data화리모컨 IR 신호 수신 → 저장 가능한 Data로 변환1
EM-HUB-002중앙 제어 시스템전체 IoT 시스템 통합 관리EM-HUB-001, EM-HUB-003, EM-HUB-004, EM-HUB-0051
EM-HUB-003Device 등록 관리Device 인증 및 등록, 발견1
EM-HUB-004명령 라우팅명령 수신/분배, 명령 실행 상태 확인EM-HUB-0032
EM-HUB-005데이터 관리센서 데이터 수집·집계, 데이터 분석/처리EM-HUB-0012
EM-HUB-006이벤트 처리시스템 이벤트 감지, 자동화 Trigger, 알림 관리EM-HUB-004, EM-HUB-0053
EM-HUB-007IR 데이터베이스IR 신호 패턴 저장, 디바이스별 IR 코드 관리EM-HUB-0013

허브 관련 명세

기능ID기능명세부작업 예시선행작업우선순위
EM-GW-001MQTT 브로커 연결 관리연결 설정, 재연결, 연결 상태 모니터링1
EM-GW-002센서 데이터 중계센서 데이터 수신·검증·전처리 → HUB 전달EM-GW-0011
EM-GW-003시스템 상태 모니터링상태 수집, 로그 기록, HUB 보고EM-GW-0013
EM-GW-004메시지 라우팅Topic 기반 메시지 분류, 우선순위 관리, 메시지 큐 관리EM-GW-0012

통신 관련 명세

기능ID기능명세부작업 예시선행작업우선순위
EM-MAT-001IR 신호 분석수집 IR 신호 분석(파형, 프로토콜)EM-HUB-0011
EM-MAT-002제어별 IR 신호 정규화IR 신호 패턴화EM-MAT-0012
EM-MAT-003IR 신호 복원·시각화IR Data 복원 후 시각화EM-MAT-0012
EM-MAT-004분석 결과 배포분석 결과 Packaging → MFC 배포EM-MAT-0021
기능ID기능명세부작업 예시선행작업우선순위
EM-MFC-001Matter Hub Log MonitoringHub Data Log 모니터링EM-HUB-0023
EM-MFC-002IR 신호 제어IR 제어로 학습 상태 확인EM-MFC-003, EM-IR-0022
EM-MFC-003IR 신호 학습 Session 제어학습 시작/종료 제어2
EM-MFC-004IR 신호 시각화생성 신호 Template GUI 표시EM-MFC-0032
EM-MFC-005IR 신호 저장 명령Template를 Server로 전송EM-MFC-0032

IR 신호 라우팅 관련 명세

기능ID기능명세부작업 예시선행작업우선순위
EM-SENSOR-001센서 데이터 수집센서 읽기, 검증, 변화 감지1
EM-SENSOR-002MQTT 데이터 발행JSON 변환, Topic별 발행EM-SENSOR-0012

센서 관련 명세

위와 같이 명세서가 만들어졌다. (글쓴이의 역할과 관련된 명세만 작성)
맡은 역할은 허브 디바이스 제작과 모니터링 툴이 되었다.

기술 선정

개발보드가 Raspberry Pi 4b 임에 따라 pigpio를 이용하여 센서 제어를 했다. 해당 라이브러리를 통해 us 단위 제어를 간편하게 할 수 있었다. 해당 과정에서 차후 기능 확장이 가능하게 Interface로 추상화하여 구현하게 된다.

모니터링 툴은 최근 학습하고 있었던 MFC 프레임워크를 사용하기로 했다.
기술 선정과 함께 다양한 Diagram을 그려가며 프로젝트에 대한 팀원 간의 싱크를 맞추어 갔다.

프로젝트 개발

IR 신호 분류 모델

허브 디바이스 개발에 있어서는 큰 어려움이 존재하지 않았다. 하지만, IR 신호 수신 거리에 따라서 IR 신호에 노이즈가 발생하여 정확한 프로토콜을 알기 어렵다는 점이 발생하였다.

이를 해결하기 위해 K-Means를 기반으로 하여 ML 모델을 만들어보기로 했다. 브랜드와 기기, 0을 나타내는 신호(Zero), 1을 나타내는 신호(One)가 IR 신호의 Header에 포함됨을 이용하여 브랜드와 기기를 구별해보려했다.
ML 모델의 동작 과정은 다음과 같다.

  1. Data 수집 (IR 신호 Protocol 하나 당 약50개 이상)
  2. Data Mapping (IR 신호와 Brand & Device를 Mapping)
  3. K-Means 활용 Data 분류 (Mapping된 Data를 Clustering)
  4. 표준화된 Data 선정
  5. 기존의 신호와의 유사도를 측정하여 DB에 반영

이렇게 DB에 반영된 Data를 통해 새로운 IR 신호가 hub 디바이스를 통해 등록되었을 때, 어느 Brand, 기기인지 추가적인 입력 없이 쉽게 알 수 있게 되었다.

모니터링 툴

예상대로 학습 단계에 있었던 MFC 기술에 대한 숙련도 부족이 발목을 잡았다. 특히 시간이 오래 걸렸던 문제는 MQTT Thread로 인한 UI Freeze 현상이었다.

MFC에서는 다른 Thread에서 UI에 직접 제어를 시도하게 되면 UI Thread와 교착상태가 발생하여 Freeze 현상이 발생함을 알게 되었다.

원인 분석을 위해 로그와 가설, 단일 모듈 테스팅을 시행하였다. 로그를 통해 MQTT Thread의 문제임을 파악하고 단일 모듈 테스팅을 통해 MFC와 MQTT Thread 사이에서의 문제임을 알 수 있었다. (MQTT와 MFC를 분리한 상태에서는 양쪽 모두 이상이 없었음)

이에 따라 직접 제어를 시도하는 방식에서 PostMessage를 이용한 비동기 방식으로 전환하였다.

해당 과정을 걸친 이후, Hub Device에 들어오는 신호와 온습도 가공 데이터, IR 신호 데이터를 실시간으로 확인할 수 있게 되었다.

자동 제어 AI

자동 제어를 위한 ML 모델을 개발해야할 필요성이 있었다.
특정 데이터를 토대로 명령을 확정해야하기 때문에 ML 모델의 기반은 Decision Tree로 하려했다.

입력 데이터는 열 스트레스 지수와 예상 불만족률, 제어 명령으로 결정했다. 해당 데이터들은 2초마다 측정되며 Timestamp를 기준으로 CSV 파일로 Hub Device에 저장되고 있다. (CSV Parser를 구현해 자동화했다.)

출력 데이터는 제어 명령 기록이 있는 기기와 IR 신호로 결정하였다.
ML 모델의 동작 과정은 다음과 같다.

  1. 온습도 가공 데이터 & 제어 로그 데이터 mapping
  2. 제어에 따른 20분 뒤의 예상 불만족률 추출
  3. 추출한 예상 불만족률 중 최적의 상태 추출
  4. 제어 명령 결정 이후 출력 데이터 반환

해당 과정을 통해 Hub Device 내에서 20분마다 사용자의 데이터를 이용하여 개인화된 자동 제어를 이루어낼 수 있었다.

회고

발표

발표 순간에 음성 인식이 동작하지 않아 모든 시연이 불가능해지는 문제가 발생했었다. 다행히 미리 녹화해놓은 영상으로 대체할 수 있던 상황이 있었다.
원인은 마이크에 대한 권한이 다른 기기로 이양되어 모바일에서 안 되었던 것으로 생각된다.

협업

'의욕'이란 요소가 팀워크에 얼마나 큰 영향을 끼치는 알게 되는 프로젝트였다.
비교적 의욕이 떨어지는 팀원 두 명이 있었다보니 전체적으로 사기가 저하되어 목표한만큼의 퀄리티가 나오지 않았다.
특히 일정이 지연되는 문제가 잦아 마감 직전에 작업을 쳐내야하는 소요가 있었다.

profile
코딩초보의 공부일기

0개의 댓글