관련 포스팅
2. IR 송신 모듈 제작
2.1 IR 송신 회로
IR sender circuit diagram
IR sender circuit schematic
IR sender circuit
아두이노 DC 핀의 출력 전류는 최대 40mA 정도로 알려져 있습니다. 그러나 이 전류는 IR led에서 전등까지 적외선 신호를 보내기에 부족합니다. 따라서 전류를 증폭하는 회로를 NPN 트랜지스터를 사용하여 제작해 주었습니다. 제가 사용한 NPN 트랜지스터는 BC547로, 회로도 그림 기준 왼쪽부터 collector, base, emittor입니다. 다른 NPN 트랜지스터를 사용할 시 이에 맞추어 적용하면 될 것 같습니다.
회로도 연결 결과 가변저항에 약 2.5V의 전압 강하가 발생하는걸 확인하였습니다. IR led가 작동하는 선에서 최대 전류가 흐르도록 가변저항을 조절한 결과, 가변저항을 30옴으로 맞추었습니다. 즉, 이 회로에서는 IR led에 2.5V/30Ω = 83.3mA의 전류가 인가됩니다.
How to check IR led
IR led는 켜졌는지 육안으로 확인할 수 없습니다. 그러나 카메라를 통하여 관찰하면 IR led 불빛을 관찰할 수 있습니다.
2.2 아두이노 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <IRremote.h>
IRsend irsend;
void setup() {
irsend.begin(3);
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
char buf = Serial.read();
switch(buf) {
case '1':
irsend.sendNEC2(0xDEA8, 0xFF, 3); //on
break;
case '0':
irsend.sendNEC2(0xDEA8, 0x1, 3); //off
break;
case 'd':
irsend.sendNEC2(0xDEA8, 0x6, 1); //sleep
break;
case 'b':
irsend.sendNEC2(0xDEA8, 0xA, 1); //20/50/100
break;
case 'v':
irsend.sendNEC2(0xDEA8, 0x1A, 1); //1min
break;
case 's':
irsend.sendNEC2(0xDEA8, 0x16, 1); //10min
break;
case 'm':
irsend.sendNEC2(0xDEA8, 0x14, 1); //20min
break;
case 'l':
irsend.sendNEC2(0xDEA8, 0x8, 1); //30min
break;
}
}
}
시리얼 통신을 통해 문자를 입력하면 그에 대응되는 command가 IR 신호로 송신되는 코드입니다.
IR 수신 코드와 마찬가지로 IRremote.h
라이브러리를 사용하여 IR 송신 코드를 작성하였습니다. 앞서 포스팅에서 sendNEC()
함수를 사용하여 송신할 수 있음을 파악하였습니다. 대부분의 기능에서 잘 작동하지만, 전등 전원을 켜거나 끌 때 가끔씩 입력이 씹히는 경우가 있었습니다. SendNEC()
함수의 NumberOfRepeats
parameter를 조절하여 여러 번 송신하면 될거라 생각했지만, repeat protocol에 해당하는 신호가 송신되기 때문에 해결되지 못하였습니다.
해결 방법은 sendNEC2()
함수를 사용하는 것입니다. 이 함수는 NumberOfRepeats
가 2 이상이어도 repeat protocol 신호를 보내는 것이 아니라, 원래 신호를 반복하여 송신합니다. 그렇기 때문에 첫 신호가 무시되었다 하더라도 다음 신호를 인식하여 전등이 작동되게 됩니다. sendNEC2()
함수가 포함되어있는 ir_NEC.hpp
의 주석에 다음과 같이 적혀 있습니다.
NEC2 Send frame and repeat the frame for each requested repeat
2.3 만능기판 회로도 설계 및 납땜
IR sender back side board
IR sender front side board
IR sender back side board
다음과 같이 만능기판 회로도를 설계하고 납땜하였습니다. 아두이노 나노는 핀헤더를 납땜한 다음 그 위에 장착하였습니다. IR led는 몰렉스 커넥터를 사용하여 탈착이 가능하도록 연결하였습니다.
2.4 하드웨어 제작
IR sender reflector
- IR 송신 세기를 향상시키기 위해 반사판을 달아주었습니다. 사진과 같이 탁구공을 반 자른 다음 알루미늄 호일로 감싸 IR 신호가 잘 반사되게 만들었습니다.
IR sender module
- IR led의 각도를 조절할 수 있도록 볼 조인트 장치를 추가하였습니다.
- 기존에 있는 USB 통신 케이블의 길이를 줄이고 만능기판에 부착하였습니다.
이렇게 최종적으로 완성된 IR 송신 모듈은 상단에 위치한 컴퓨터 USB 포트에 꽂아 사용할 수 있습니다. IR led 각도를 전등을 향하도록 볼 조인트를 조절하여 전등이 IR 신호를 잘 수신할 수 있도록 할 수 있습니다.