이전에는 DTMF 기반 가정 자동화, Arduino를 사용한 PC 제어 가정 자동화, Bluetooth 제어 가정 자동화와 같은 다양한 기술을 사용하는 다양한 유형의 가정 자동화 를 다루었습니다. 이 프로젝트에서는 가전 제품 제어를 위해 IR 기반 무선 통신을 사용하고 있습니다. 이 프로젝트에서 Arduino는 전체 프로세스를 제어하는 데 사용됩니다. AC 가전 제품을 제어하기 위해 IR TV / DVD / MP3 리모컨을 사용하여 제어 시스템에 몇 가지 명령을 보냅니다. IR 리모컨에서 신호를 수신 한 Arduino는 릴레이 드라이버를 통해 가전 제품의 ON / OFF를 담당하는 릴레이로 관련 신호를 보냅니다.
작동 설명:
이 프로젝트의 작업은 쉽게 이해할 수 있습니다. IR Remote 의 아무 버튼이나 누르면 리모컨은 38Khz 변조 주파수를 사용하여 인코딩 된 펄스의 형식으로 코드를 전송합니다. 이 펄스는 TSOP1738 센서에 의해 수신되고 Arduino가 읽은 다음 Arduino는 수신 된 펄스 열을 16 진수 값으로 디코딩하고 해당 디코딩 된 값을 눌린 버튼의 사전 정의 된 16 진수 값과 비교합니다. 일치가 발생하면 Arduino는 상대 연산을 수행하고 적절한 명령을 사용하여 해당 결과도 16x2 LCD에 표시됩니다. 이 프로젝트에서는 팬, 조명 및 TV를 나타내는 데모를 위해 서로 다른 색상의 3 개의 전구를 사용했습니다.
다양한 장치에 사용할 수있는 여러 유형의 IR 리모컨이 있지만 대부분은 약 38KHz 주파수 신호에서 작동합니다. 이 프로젝트에서는 IR TV 리모컨을 사용하여 가전 제품을 제어합니다. IR 원격 신호를 감지하기 위해 TSOP1738 IR 수신기를 사용합니다. 이 TSOP1738 센서는 38Khz 주파수 신호를 감지 할 수 있습니다. IR 리모컨과 TSOP1738의 작동은이 기사에서 자세히 다룰 수 있습니다. IR 송신기 및 수신기
구성품:
- Arduino UNO
- TSOP1738
- IR TV / DVD 리모컨
- ULN2003
- 릴레이 5 볼트
- 홀더가있는 전구
- 전선 연결
- 브레드 보드
- 16x2 LCD
- 전원 공급
- PVT
- IC 7805
이 프로젝트에서는 IR 리모컨의 7, 8, 9 숫자 버튼을 사용하여 팬, 조명 및 TV를 각각 제어하고 ON / OFF 버튼 (전원 버튼)을 사용하여 모든 기기를 동시에 켜고 끕니다.
여기서는 단일 가전 제품을 켜고 끄는 토글 방식을 사용했습니다. 토글 방법 버튼을 몇 번 눌렀는지 또는 홀수 번 눌렀는지 확인하는 것입니다. 2 (i % 2)로 나눈 후 미리 알림을 받으면 알 수 있으며, 미리 알림이 있으면 장치가 켜지고 알림이 0이면 꺼집니다. 리모컨에서 키 7을 눌렀을 때 리모컨이 TSOP IR 수신기를 통해 Arduino에 신호를 전송한다고 가정합니다. 그런 다음 Arduino는이를 디코딩하고 디코딩 된 값을 결과 변수에 저장합니다. 이제 결과 변수에 16 진수 값 0x1FE00FF가 있으며, 미리 정의 된 키 7 (위 이미지 참조)의 16 진수 값과 일치시킨 후 Arduino는 팬을 켭니다. 이제 동일한 키 (키 7)를 다시 누르면 IR이 동일한 코드를 보냅니다. Arduino는 이전과 동일한 코드를 가져오고 동일한 코드와 일치하지만 이번에는 비트 (i % 2)를 토글하여 팬이 꺼졌습니다.
Arduino를 사용하여 IR 원격 제어 신호 디코딩:
다음은 DVD NEC 유형 원격 디코딩 된 출력 코드 목록입니다.
IR 리모컨의 디코딩 된 출력을 모르는 경우 쉽게 찾을 수 있습니다. 다음 단계를 따르십시오.
- 여기 https://github.com/z3t0/Arduino-IRremote에서 IR 원격 라이브러리를 다운로드하십시오.
- 압축을 풀고 Arduino 'Libraries'폴더에 넣으십시오. 그런 다음 추출 된 폴더의 이름을 IRremote로 바꿉니다.
- Arduino에서 아래 프로그램을 실행하고 Arduino IDE에서 직렬 모니터 창을 엽니 다. 이제 IR 원격 버튼을 누르고 직렬 모니터 창에서 해당 디코딩 된 16 진수 출력을 확인합니다.
* IRremote: IRrecvDemo-IRrecv로 IR 코드 수신 시연 * IR 감지기 / 복조기가 입력 RECV_PIN에 연결되어야합니다. * 버전 0.1 2009 년 7 월 * Copyright 2009 Ken Shirriff * http://arcfn.com * / #include
위의 프로그램은 IRremote 라이브러리의 'examples'폴더에서 가져온 것입니다. 더 많은 예제를 확인하여 IR 리모컨 사용에 대해 자세히 알아볼 수 있습니다. 이것이 우리가 IR 원격 출력을 디코딩 한 방법입니다.
회로 설명:
이 회로의 연결은 매우 간단합니다. 여기서 액정 디스플레이는 4 비트 모드에서 arduino에 직접 연결된 가전 제품의 상태를 표시하는 데 사용됩니다. LCD의 데이터 핀 즉 RS, EN, D4, D5, D6, D7은 arduino 디지털 핀 번호 6, 7, 8, 9, 10, 11에 연결되며 TSOP1738의 출력 핀은 디지털 핀 번호 14 (A). 그리고 Vcc 핀은 회로의 Ground 단자에 연결된 + 5V와 GND 핀에 연결됩니다. 릴레이 구동기 인 ULN2003도 릴레이 구동에 사용됩니다. 5V SPDT 3 릴레이는 LIGHT, FAN 및 TV를 제어하는 데 사용됩니다. 릴레이는 각각 LIGHT, FAN 및 TV를 제어하기 위해 릴레이 드라이버 ULN2003을 통해 arduino 핀 번호 3, 4 및 5에 연결됩니다.
코드 설명:
이 프로젝트의 프로그래밍 부분에서 우선 프로그래밍에서 우리는 Google에서 쉽게 구할 수있는 IR 리모컨 용 라이브러리를 포함합니다. 그리고 핀을 정의하고 변수를 선언합니다.
#포함
그런 다음 액정 디스플레이 용 헤더를 포함하고 LCD 및 가전 제품에 대한 데이터 및 제어 핀을 정의합니다.
#포함
그 후 LCD를 초기화하고 팬, 조명, TV에 사용되는 핀의 방향을 알려줘야합니다.
void setup () {Serial.begin (9600); lcd.begin (16,2); pinMode (팬, 출력); pinMode (Light, OUTPUT); pinMode (TV, OUTPUT);
이미 설명했듯이 코드의 아래 부분은 수신 된 16 진수 값을 해당 버튼의 이미 정의 된 16 진수 코드와 비교하는 데 사용됩니다. 일치하면 코드에 제공된 적절한 함수를 사용하여 상대 연산이 수행됩니다.
void loop () {if (irrecv.decode (& results)) {Serial.println (results.value, HEX); 지연 (100); lcd.setCursor (0,0); lcd.print ("팬 라이트 TV"); if (results.value == 0x1FE00FF) {i ++; int x = i % 2; digitalWrite (팬, x);