[임베디드/프로젝트] 집 밖에서 가전제품을 제어해 보자 1탄
프로젝트 개요
TV, 에어컨, 공기청정기, 가습기, 로봇 청소기 등 의외로 가전제품에서 IR 센서가 들어간 물건이 꽤 많다. 1차적으로는 이미 IR센서가 탑재된 제품들을 제어하는 것이 목표이고 2차적으로는 조명, 커튼, 도어락 등 주거환경 전체를 제어하는 것, 최종적으로는 온 디바이스 AI, 주거환경이 사용자의 생활패턴에 맞게 운영되는 것이 목표이다. 오픈소스 안쓰고 온전히 내 힘으로 무언가 해보고 싶어서 급하게 생각해낸 프로젝트이다. 전역하기 전까지 완성하고 싶다.
Mile Stone
- 이론 공부
- IR 신호 수신 제어
- IR 신호 송신 제어
- TV 리모컨 IR 신호 송수신 소프트웨어 제작
- IoT 클라우드 플랫폼 연동
- UI 제작
자세한 일정은 시작하고 난 뒤 수정
이론
일단 IR 신호를 송수신하려면 그에 맞는 프로토콜을 알아야 할테고 데이터를 전달할 때 원본을 그대로 전달할리도 없으니 TV리모컨이 사용하는 변복조와 프로토콜에 대해 조사해 봤다.
변복조
항로통신정비병 특기학교에서 배운 변복조는 크게 아날로그 변조, 디지털 변조, 펄스 변조 이 세가지가 있었다.
이건 위키피디아에서 AM(amplitude modulation)을 검색하면 나오는 사진인데,
이런 식으로 최상단의 신호가 AM과 FM 옆에 나오는 신호처럼 변형되어서 나가는데 이걸 변조라고 하고 변조되어 나가는 신호를 반송파라고 한다.
IR 리모컨 변조라고 구글에 검색하니 TV 리모컨들은 PCM변조를 쓰는 것 같다. PCM 변조는 샘플링, 양자화, 인코딩 세 가지로 나뉘는데,
- 샘플링
샤논의 무슨 뭐시기 샘플링 이론이 있는데 아날로그 신호를 최대 주파수 두배 횟수로 쪼개서 값을 매기면 원래 신호를 모두 담을 수 있다. 가령 최대 4000Hz인 신호를 샘플링 한다 치면 표본화는 1초에 8000번 하면 되는거고 표본화 간격은 1/8000 초가 될 것이다.
- 양자화
실수를 정수로 만들면 된다. 반올림이라고 보면 되지 않을까? PCM word가 8비트라고 나오니까 256레벨로 나누면 된다.
- 인코딩
각 샘플을 8bit로 나타내면 된다.
NEC code
국내 가전제품 IR 리모컨에서 사용하는 프로토콜이다.
이렇게 생겼는데
- 리더 코드: normal과 repeat(한 번만 눌렀는지, 꾹 누르고 있는지)
- 어드레스 코드(혹은 커스텀 코드): 제품 구분(8비트 + 8비트)
- 데이터 코드(8비트 + 8비트)
이렇게 세 종류로 나뉘고 자연광에서의 IR과 구분하기 위해 38kHz 반송파에 실어서 데이터를 보낸다고 한다.
하강 엣지 인터럽트를 걸어놓고 외부 인터럽트가 걸릴 때 하강 엣지와 다음 하강 엣지 사이의 시간을 타이머로 측정해서 그 시간에 따라 normal leader code, repeat leader code 혹은 0과 1을 구분할 수 있다고 한다.
댓글남기기