IR (적외선) 통신은 간단하고 저렴하며 널리 사용되는 무선 통신 기술입니다. 적외선은 파장이 약간 더 길다는 점을 제외하면 가시광 선과 다소 유사합니다. IR의 이러한 속성은 사람의 눈으로 감지 할 수 없으며 무선 통신에 적합합니다.
IR 리모컨으로 일부 장치를 작동하기 위해 IR 신호를 디코딩해야하는 응용 프로그램이 많이 있습니다. 따라서이 튜토리얼에서는 TSOP1838 IR 수신기를 사용하여 Arduino를 사용 하는 IR 원격 디코더 를 구축 할 것 입니다. 모든 버튼의 16 진수 코드는 Microsoft Excel Sheet에 기록됩니다. 이 간단한 IR 원격 제어 디코더는 IR 원격 제어 로봇, 홈 자동화 및 기타 IR 제어 프로젝트와 같은 프로젝트에 사용할 수 있습니다.
이전에는 IR 원격 및 TSOP 수신기 를 사용하여 다음과 같은 많은 유용한 애플리케이션을 구축했습니다.
- IR 원격 제어 TRIAC 디머 회로
- Arduino를 사용한 IR 원격 제어 홈 자동화
- PIC 마이크로 컨트롤러를 사용한 IR 원격 제어 홈 자동화
- Arduino 및 Bluetooth를 사용하는 휴대폰 제어 AC
필요한 구성 요소
- Arduino Uno / Arduino Nano
- IR 수신기 (TSOP1838)
- 점퍼 와이어
- 브레드 보드
IR 통신은 어떻게 작동합니까?
다른 통신 시스템과 마찬가지로 적외선 통신에도 송신기와 수신기가 있습니다. 송신기는 LED처럼 보이지만 가시 스펙트럼 대신 IR 스펙트럼에서 빛을 생성합니다. IR 수신기는 IR 조명을 전기 신호로 변경하는 전치 증폭기가 내장 된 포토 다이오드입니다. IR 통신의 경우 송신기와 수신기가 서로를 가리켜 야합니다. IR 송신기 및 수신기 회로에 대해 자세히 알아 보려면 링크를 따르십시오.
원격 버튼을 누르면 IR LED (송신기)가 적외선을 방출합니다. 이 빛은 일반적으로 포토 다이오드 또는 포토 트랜지스터 인 수신기에 의해 수신됩니다. 그러나 IR 빛은 태양, 전구 및 열을 생성하는 모든 것에서도 방출됩니다. 이는 송신기 신호를 방해 할 수 있으므로이를 방지하기 위해 송신기 신호는 36kHz ~ 46kHz 사이의 반송파 주파수를 사용하여 변조됩니다. 신호를 수신하면 IR 수신기는 신호를 복조하고이를 마이크로 컨트롤러로 보내기 전에 바이너리로 변환합니다.
여기에서는 IR 신호를 보내기 위해 TV 리모컨을 사용하고 이를 수신하기 위해 Arduino와 함께 TSOP1838을 사용 합니다.
또한 여기에서 TV Remote Control Jammer Circuit 및 IR 테스터 회로를 포함한 다양한 IR 기반 애플리케이션을 확인하십시오.
회로도
Arduino를 사용 하는 IR 원격 디코더의 회로도 는 다음과 같습니다.
IR 수신기 센서에는 세 개의 핀 (Vs, GND 및 데이터) 만 있으므로 연결이 매우 간단합니다. IR 수신기의 Vs 및 GND 핀을 Arduino의 3.3V GND 핀에 연결하고 데이터 핀을 Arduino의 디지털 핀 2에 연결합니다.
Arduino IR 원격 디코더 프로그래밍
Arduino IR 디코더 의 전체 코드 는 페이지 끝에 제공됩니다.
IR Remote를 디코딩하려면 먼저 Arduino IDE에 IR 라이브러리를 다운로드하여 추가해야합니다. 여기에서 IR 원격 라이브러리를 다운로드 할 수 있습니다. 파일을 다운로드 한 후 Arduino IDE를 열고 Sketch> Include library> Add.Zip library로 이동하십시오 . 라이브러리 파일을 선택하고 '열기'를 클릭합니다.
IR 원격 라이브러리 파일을 포함하여 코드를 시작합니다.
#포함
그런 다음 IR 수신기의 데이터 핀을 연결 한 Arduino 핀을 정의합니다. 제 경우에는 Arduino의 D2 핀에 연결되어 있습니다.
int IRPIN = 2;
그런 다음 IR 수신기 핀에 대한 인스턴스를 만듭니다.
IRrecv irrecv (IRPIN);
다음 줄에서 decode_results 클래스에 대한 개체를 정의합니다.이 개체 는 IR 수신기에서 디코딩 된 정보를 보내는 데 사용됩니다.
decode_results 결과;
setup () 함수 내에서 직렬 통신을 시작하고 IRrecv 함수 enableIRIn () 을 호출하여 IR 수신기를 시작합니다 .
void setup () {Serial.begin (9600); Serial.println ("IRin 활성화"); irrecv.enableIRIn (); Serial.println ("사용 가능한 IRin"); Initialize_streamer (); }
에서 루프 () 함수 irrecv.decode 끊임없이 새로운 신호에 대한 새로운 신호가 수신되면, 수신 된 신호의 코드가 저장 될 수표 result.value 기능.
void loop () {if (irrecv.decode (& result)) {Serial.print ("값:"); Serial.println (결과. 값, HEX); Write_streamer (); irrecv.resume (); } 지연 (500); }
Arduino에서 Excel 시트로 데이터를 보내기 위해 PLX-DAQ를 사용하고 있습니다. Write_streamer () 함수를 사용하여 직렬 모니터에 값을 표시하는 것과 같이 특정 패턴으로 데이터를 직렬로 전송합니다. 주요 행은 아래에 설명되어 있습니다.
void Write_streamer () {Serial.print ("DATA"); // 항상 "DATA"를 써서 다음을 Data Serial.print (","); // ","를 사용하여 다음 열로 이동 Serial.print (result.value, HEX); // Excel에 날짜 저장 Serial.print (","); // ","를 사용하여 다음 열로 이동 Serial.println (); // 행 끝을 다음 행으로 이동}
하드웨어와 프로그램이 준비되면 프로그램을 Arduino Nano Board에 업로드 할 차례입니다. 코드를 업로드 한 후 리모컨으로 IR 수신기를 가리키고 리모컨 버튼을 누릅니다. 모든 버튼의 16 진수 코드는 직렬 모니터에 인쇄됩니다.
IR 원격 디코더 데이터를 Excel 시트에 저장
이제 데이터를 Excel 시트로 보내기 위해 PLX-DAQ를 사용하겠습니다. Arduino의 값을 노트북 또는 PC의 Excel 시트에 직접 쓸 수 있도록 도와주는 Excel 플러그인 소프트웨어입니다. 링크를 사용하여 파일을 다운로드하십시오. 다운로드 후 파일 압축을 풀고.exe 파일을 클릭하여 설치합니다. 데스크탑에 PLX-DAQ 라는 폴더가 생성됩니다.
이제 데스크탑 폴더에서 ' PLX-DAQ 스프레드 시트' 파일을 엽니 다. Excel에서 매크로가 비활성화 된 경우 아래 이미지와 같이 보안 블록이 표시됩니다.
을 클릭 -> 옵션 - 내용을 활성화 -> 완료 -> 확인 매크로를 사용하려면. 그 후 다음 화면이 표시됩니다.
이제 전송 속도를 "9600"으로 선택하고 Arduino가 연결된 포트를 선택한 다음 연결을 클릭하여 데이터 스트리밍을 시작합니다. 아래 그림과 같이 값이 기록되기 시작해야합니다.
이것이 Arduino IR 원격 디코더 를 쉽게 구축하여 IR 원격 신호를 동등한 HEX 코드로 변환하는 방법입니다.
데모 비디오가있는 완전한 Arduino 코드는 다음과 같습니다.