“红外接收”的版本间的差异
(以“ 红外接收 === 产品简介 === <br> 红外接收模块,采用HS0038一体化红外遥控接收元件,中心频率...”为内容创建页面) |
|||
(未显示2个用户的31个中间版本) | |||
第1行: | 第1行: | ||
− | [[Image:红外接收.jpg| | + | [[Image:红外接收.jpg|300px|thumb|红外接收]] |
第6行: | 第6行: | ||
=== 产品简介 === | === 产品简介 === | ||
<br> | <br> | ||
− | 红外接收模块,采用HS0038一体化红外遥控接收元件, | + | 红外遥控分发射和接收两部分,发射部分为Mini遥控器,接收部分为 红外接收模块, 红外接收模块 采用HS0038一体化红外遥控接收元件, 载波 频率为38.0kHz ,周期26us ,可 抗 自然光的反射干扰。 |
+ | 红外系统原理框图如下,Mini遥控器编码调制发出红外线,接收模块将接收到的红外线遥控信号,经过放大、解调和整形后输出功能指令信号,送至微处理器进行识别和处理,从而实现遥控过程。 | ||
+ | |||
+ | [[File:红外系统框图.png|600px]] | ||
+ | |||
+ | <img src="http://yfrobot.gitee.io/YFRobot/wiki/img/红外遥控系统.gif" alt="红外"> | ||
+ | |||
+ | |||
+ | 其他详见参考资料。 | ||
=== 规格参数 === | === 规格参数 === | ||
<br> | <br> | ||
− | *供电电压 | + | *供电电压 :DC3v3-5V |
− | * | + | * 红外协议:NEC |
− | * | + | * 载波频率:38 kHz |
− | * | + | * 周期:26μs |
− | *接 | + | *接 收距离:10m |
− | + | ||
− | + | ||
*安装孔径:3MM | *安装孔径:3MM | ||
− | *模块尺寸:28*21* | + | *模块尺寸:28*21*11MM(长*宽*高)/ Mini遥控器:88*40*7MM (长*宽*高) |
*孔间距:15MM | *孔间距:15MM | ||
− | *模块重量 | + | *模块重量 :2.2g / Mini遥控器:12.6g |
+ | === 主要应用 === | ||
+ | 广泛应用于:空调、风扇、暖风机、加湿器、电视、DVD、机顶盒、车载移动DVD、硬盘播放器、多媒体组合音响、数码相框、手机等家电产品,电脑及周边设备,感应洁具,仪表,工业自动化,遥控玩具,通讯器材,照相器材,事务机器,金融电子,汽车电子,灯饰照明等领域。 | ||
第36行: | 第44行: | ||
=== 应用示例 === | === 应用示例 === | ||
<br> | <br> | ||
− | :'''电路连接 | + | <font color="darkorenge">''' 提示'''</font>:以下程序需使用到 IRremote库文件,文件下载地址见页末 - 参考资料。下载后将其解压至arduinoIDE安装目录/libraries文件夹中,例如: "D:\Program Files\Arduino\arduino-1.6.4-windows\arduino-1.6.4\libraries"。 |
+ | <br><br> | ||
+ | '''电路连接''' | ||
+ | |||
<br> | <br> | ||
− | : | + | :''' 红外 接 收 模块'''的 G、V、S分别连接 '''Arduino UNO'''的GND、VCC(+5V) 、D11 引脚。 |
− | + | ||
− | + | '''电路连 接 示意 图''' | |
− | + | ||
+ | <!-- <img src="http://yfrobot.gitee.io/wiki/img/红外遥控.png" alt="红外遥控" /> --> | ||
+ | <img src="http://file.yfrobot.com.cn/wiki/image/sensor_circuit/IRReceiver.png-yf" alt="红外遥控" /> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | '''示例代码''' | |
− | + | <br><br> | |
− | + | <font color="darkcyan">'''示例一'''</font>:获取键值 | |
+ | <source lang="c"> | ||
+ | /* | ||
+ | * 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 | ||
+ | */ | ||
− | void setup () | + | #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() | + | void loop() { |
+ | if (irrecv.decode(&results)) { | ||
+ | Serial.print("irCode: "); | ||
+ | Serial.println(results.value, HEX); | ||
+ | delay(200); | ||
+ | irrecv.resume(); // Receive the next value | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | 程序下载地址:[https://eyun.baidu.com/s/3hsQn8zi IRrecvDemo] | ||
+ | |||
+ | 程序运行结果:接收按键值,并串口打印。出现 "FFFFFFFF" 码值,属于正常现象,它是当收到重复码(长按)时NEC的解码值。 | ||
+ | |||
+ | '''NEC重复码''' | ||
+ | |||
+ | 对于重复发射(按钮按住),解码代码将一次次的返回相同的解码值。唯一的例外是NEC,会重复发射一个特殊的代码,而不是重复的发射该按键编码值。因此, 解码程序返回一个特殊REPEAT值(NEC默认返回值为0xFFFFFFFF,用户也可以在库中进行修改)。 | ||
+ | |||
+ | [[File:NEC重复码定义.png|600px]] | ||
+ | |||
+ | |||
+ | |||
+ | 最终整理按键值表格: | ||
+ | |||
+ | {|border="1" cellspacing="0" align="center" cellpadding="5" width="800px" | ||
+ | |- | ||
+ | |align="center"|遥控器字符 | ||
+ | |align="center"|键值 | ||
+ | |align="center"|遥控器字符 | ||
+ | |align="center"|键值 | ||
+ | |- | ||
+ | |align="center"|红色/关闭键 | ||
+ | |align="center"|0xFFA25D | ||
+ | |align="center"|MENU | ||
+ | |align="center"|0xFFE21D | ||
+ | |- | ||
+ | |align="center"|TEST | ||
+ | |align="center"|0xFF22DD | ||
+ | |align="center"|+ | ||
+ | |align="center"|0xFF02FD | ||
+ | |- | ||
+ | |align="center"|返回键 | ||
+ | |align="center"|0xFFC23D | ||
+ | |align="center"|快退/左2三角 | ||
+ | |align="center"|0xFFE01F | ||
+ | |- | ||
+ | |align="center"|播放/一个三角 | ||
+ | |align="center"|0xFFA857 | ||
+ | |align="center"|快进/右2三角 | ||
+ | |align="center"|0xFF906F | ||
+ | |- | ||
+ | |align="center"|0 | ||
+ | |align="center"|0xFF6897 | ||
+ | |align="center"|- | ||
+ | |align="center"|0xFF9867 | ||
+ | |- | ||
+ | |align="center"|C | ||
+ | |align="center"|0xFFB04F | ||
+ | |align="center"|1 | ||
+ | |align="center"|0xFF30CF | ||
+ | |- | ||
+ | |align="center"|2 | ||
+ | |align="center"|0xFF18E7 | ||
+ | |align="center"|3 | ||
+ | |align="center"|0xFF7A85 | ||
+ | |- | ||
+ | |align="center"|4 | ||
+ | |align="center"|0xFF10EF | ||
+ | |align="center"|5 | ||
+ | |align="center"|0xFF38C7 | ||
+ | |- | ||
+ | |align="center"|6 | ||
+ | |align="center"|0xFF5AA5 | ||
+ | |align="center"|7 | ||
+ | |align="center"|0xFF42BD | ||
+ | |- | ||
+ | |align="center"|8 | ||
+ | |align="center"|0xFF4AB5 | ||
+ | |align="center"|9 | ||
+ | |align="center"|0xFF52AD | ||
+ | |} | ||
+ | <br> | ||
+ | |||
+ | <font color="darkcyan">'''示例二'''</font>:红外遥控 | ||
+ | <source lang="c"> | ||
+ | // 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() { | |
− | void | + | 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; | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | 程序下载地址:[https://eyun.baidu.com/s/3pLQFnQz IRrecvControl] | ||
+ | |||
+ | 程序运行结果:按 “MENU”按钮 , 点亮LED ,按下 “关闭”按钮 , 关闭LED 。 | ||
+ | |||
− | |||
===参考资料=== | ===参考资料=== | ||
<br> | <br> | ||
− | * [http:// | + | * [https://yfrobot.gitee.io/wiki/lib/Arduino-IRremote-master.zip Arduino-IRremote-master库文件],[https://yfrobot.lanzoui.com/irjjssaf2uf Arduino-IRremote-master库文件] |
+ | *<strike> [https://eyun.baidu.com/s/3dF2Ddex IRremote库文件]</strike> | ||
+ | * [http://yfrobot.gitee.io/wiki/doc/HS0038B.pdf HS0038B] | ||
+ | * [https://eyun.baidu.com/s/3hstJ61Q 红外原理简介] | ||
+ | * [https://eyun.baidu.com/s/3c4lGmfY HS0038红外接受电路设计与应用] | ||
+ | * [https://eyun.baidu.com/s/3nwKZxjj 红外遥控系统原理图解] | ||
2023年2月17日 (五) 17:28的最后版本
产品简介
红外遥控分发射和接收两部分,发射部分为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。
参考资料
- Arduino-IRremote-master库文件,Arduino-IRremote-master库文件
IRremote库文件- HS0038B
- 红外原理简介
- HS0038红外接受电路设计与应用
- 红外遥控系统原理图解
更多建议和问题欢迎反馈至 YFRobot论坛
购买方式:YFRobot 电子工作室