功能介绍

常见的红外遥控接收传感器采用的是HX1838接收头,接收的红外载波信号是38KHz。HX1838接收头集成了接收放大,解码一体的器件,接收灵敏度高。常见的模块只有3根引脚,使用时的连线请参看接线说明。本模块通常配合红外遥控器使用,可以接收红外遥控器发射的数字信号,实现红外遥控器控制Arduino设备的功能。模块供电电压为3.3V-5VDC,常见的模块实物图如图3.13.1所示,常见的遥控器如图3.13.2所示。在实际使用时,可以采用家里常见的遥控器代替,如电视机遥控器、热水器遥控器、空调遥控器等。市面上常见的遥控器采用的编码方式是NEC方式。
3.13 红外遥控接收传感器 - 图13.13 红外遥控接收传感器 - 图23.13 红外遥控接收传感器 - 图3
图3.13.1 红外遥控器接收头传感器实物图
3.13 红外遥控接收传感器 - 图4
图3.13.2 常见红外遥控器实物图

接线说明

Arduino 红外遥控接收传感器 说明
VCC/+/5V VCC/+/5V 供电引脚
GND/G/- GND/G/- 电源地线
D2 DO/S/D 接Arduino的任意数字引脚都可以,模块输出的信号通常是NEC制式的编码信息
遥控器输出的信息不再是简单的高低电平信息,是具有一定的编码格式的信息,需要红外遥控接收头模块完成解码,需要了解详细的编码方式,可以自行搜索相关信息

使用说明:

1.按照接线说明完成接线,注意供电引脚必须连接正确。
2(a).Arduino IDE编程
采用Arduino IDE编程时,需要用到红外遥控的库文件。在IDE中打开“库管理器”,搜索“IRremote”,在搜索得到的结果中安装“IRremote”库。安装完成库文件后在“文件”—>“示例”中找到第三方库部分,选择“IRremote”—>“IRrecvDemo”打开,打开后得到参考程序中的示例程序代码,修改连接传感器的引脚后上传程序,上传完成后打开串口监视器,此时,按下遥控器上的任意按键,将会收到此按键对应的编码值,在实际使用时,需要通过程序去识别收到的编码值来确定是哪个按键按下。具体的程序代码解释请参看参考程序部分的注释。
2(b).Mixly编程
在Mixly编程中,红外遥控的接收程序模块在“通信”模块下,里面有红外遥控的接收和发射程序,在此我们只用到接收程序,按照参考程序编写完上传程序后,打开串口监视器,此时按下遥控器的任意键,将会在串口监视器里看到参考程序右侧中显示的遥控器按键信息。
3.注意,当长按某个按键时,接收到的信息将会是“FFFFFFFF”,此数是十六进制表示。当出现乱码或者接收数据不完整时,可以尝试修改loop()函数中的delay()延时的时间。

参考程序:

Arduino IDE参考程序

  1. //对本例程的基本信息说明
  2. /*
  3. * IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
  4. * An IR detector/demodulator must be connected to the input RECV_PIN.
  5. * Version 0.1 July, 2009
  6. * Copyright 2009 Ken Shirriff
  7. * http://arcfn.com
  8. */
  9. #include <IRremote.h> //引用头文件
  10. int RECV_PIN = 2; //设置接收模块连接的引脚
  11. IRrecv irrecv(RECV_PIN);
  12. decode_results results; //创建解码结果
  13. void setup()
  14. {
  15. Serial.begin(9600);
  16. Serial.println("Enabling IRin");
  17. irrecv.enableIRIn(); // 启动接收程序
  18. Serial.println("Enabled IRin");
  19. }
  20. void loop() {
  21. if (irrecv.decode(&results)) { //如果有数据
  22. Serial.println(results.value, HEX);
  23. irrecv.resume(); // 准备接收下一个数据
  24. }
  25. delay(100);
  26. }

Mixly 参考程序

3.13 红外遥控接收传感器 - 图5