紅外接收
產品簡介
紅外遙控分發射和接收兩部分,發射部分為Mini遙控器,接收部分為紅外接收模塊,紅外接收模塊採用HS0038一體化紅外遙控接收元件,中心頻率為38.0kHz,周期26us,可抗自然光的反射干擾。
紅外系統原理框圖如下,Mini遙控器編碼調製發出紅外線,接收模塊將接收到的紅外線遙控信號,經過放大、解調和整形後輸出功能指令信號,送至微處理器進行識別和處理,從而實現遙控過程。
其他詳見參考資料。
規格參數
- 供電電壓:DC3v3-5V
- 紅外協議:NEC
- 載波頻率:38 kHz
- 周期:26μs
- 接收距離:10m
- 安裝孔徑:3MM
- 模塊尺寸:28*21*11MM(長*寬*高)/ Mini遙控器:88*40*7MM(長*寬*高)
- 孔間距:15MM
- 模塊重量:2.2g / Mini遙控器:12.6g
主要應用
廣泛應用於:空調、風扇、暖風機、加濕器、電視、DVD、機頂盒、車載移動DVD、硬盤播放器、多媒體組合音響、數碼相框、手機等家電產品,電腦及周邊設備,感應潔具,儀錶,工業自動化,遙控玩具,通訊器材,照相器材,事務機器,金融電子,汽車電子,燈飾照明等領域。
引腳說明
- 1. G -- Gnd(地)
- 2. V -- Vcc(電源+5V)
- 3. S -- Sign(信號)
應用示例
提示:以下程序需使用到 IRremote庫文件,文件下載地址見頁末 - 參考資料。下載後將其解壓至arduinoIDE安裝目錄/libraries文件夾中,例如: "D:\Program Files\Arduino\arduino-1.6.4-windows\arduino-1.6.4\libraries"。
電路連接
- 紅外接收模塊的 G、V、S分別連接 Arduino UNO的GND、VCC(+5V)、D11引腳。
電路連接示意圖
示例代碼
示例一:獲取鍵值
/* * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv * An IR detector/demodulator must be connected to the input RECV_PIN. * Version 0.1 July, 2009 * Copyright 2009 Ken Shirriff * http://arcfn.com */ #include <IRremote.h> int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver } void loop() { if (irrecv.decode(&results)) { Serial.print("irCode: "); Serial.println(results.value, HEX); delay(200); irrecv.resume(); // Receive the next value } }
程序下載地址:IRrecvDemo
程序運行結果:接收按鍵值,並串口打印。出現 "FFFFFFFF" 碼值,屬於正常現象,它是當收到重複碼(長按)時NEC的解碼值。
NEC重複碼
對於重複發射(按鈕按住),解碼代碼將一次次的返回相同的解碼值。唯一的例外是NEC,會重複發射一個特殊的代碼,而不是重複的發射該按鍵編碼值。因此, 解碼程序返回一個特殊REPEAT值(NEC默認返回值為0xFFFFFFFF,用戶也可以在庫中進行修改)。
最終整理按鍵值表格:
遙控器字符 | 鍵值 | 遙控器字符 | 鍵值 |
紅色/關閉鍵 | 0xFFA25D | MENU | 0xFFE21D |
TEST | 0xFF22DD | + | 0xFF02FD |
返回鍵 | 0xFFC23D | 快退/左2三角 | 0xFFE01F |
播放/一個三角 | 0xFFA857 | 快進/右2三角 | 0xFF906F |
0 | 0xFF6897 | - | 0xFF9867 |
C | 0xFFB04F | 1 | 0xFF30CF |
2 | 0xFF18E7 | 3 | 0xFF7A85 |
4 | 0xFF10EF | 5 | 0xFF38C7 |
6 | 0xFF5AA5 | 7 | 0xFF42BD |
8 | 0xFF4AB5 | 9 | 0xFF52AD |
示例二:紅外遙控
// Infrared remote control test #include <IRremote.h> int RECV_PIN = 11; int LED_PIN = 13; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); pinMode(LED_PIN,OUTPUT); irrecv.enableIRIn(); // Start the receiver } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); controlLED(&results); irrecv.resume(); // Receive the next value } } //Control the LED void controlLED(decode_results *results) { switch(results->value){ case 0xFFA25D: digitalWrite(LED_PIN,LOW); break; case 0xFFE21D: digitalWrite(LED_PIN,HIGH); break; } }
程序下載地址:IRrecvControl
程序運行結果:按「MENU」按鈕,點亮LED,按下「關閉」按鈕,關閉LED。
參考資料
更多建議和問題歡迎反饋至 YFRobot論壇
購買方式:YFRobot 電子工作室