(SKU:RB-03T004)红外发射模块
来自ALSROBOT WiKi
目录 |
产品概述
- 由于在远距离传输过程中使用连接线可能会导致传输数据错误。IR&LED Module 是一款Arduino兼容的红外线发射传感器,可通过对Arduino进行编程发射出38KHz 调制信号,可适应市面上各种红外接收头,以便IR Receiver Module 38KHz 红外线接收传感器能接收到,从而实现红外无线通讯。 红外发射模块上的核心器件是红外发射管,其广泛使用在红外遥控设备上。该模块有3PIN接口,可以方便的通过Arduino等控制板实现红外遥控、通讯的功能。红外发射管是一个能发射出特定波长红外光的二极管。红外遥控器就是使用的红外发射头发出一连串的二进制脉冲码信号。为了使其在无线传输过程中免受其他红外信号的干扰,通常都是先将其调制在特定的载波频率上,然后再经红外发射二极管发射头发射出去。
规格参数
- 供电电压:5V
- 工作环境:-25~+85℃
- 储存温度:-30~+100 ℃
- 波长:940nm
- 模块尺寸:13.7mm×27.8mm
- 模块重量:1g
- 信号类型:数字信号
- 红外中心波长:约850nm-940nm
- 红外发射角:约20度
- 红外发射距离:约1.3米 (5V 38Khz)
接口定义
- 传感器引脚的定义是
- S:输出信号
- +:电源(VCC)
- -:地(GND)
使用方法
连接示意图
看见红外线
试验目的:1秒间隔发射红外线
使用硬件
- Carduino UNO 控制器 * 1个
- V5.0传感器扩展板 * 1个
- 红外发射传感器 * 1个
- 具备摄像头的手机*1部
连线方法
将红外发射模块接在Carduino UNO控制器的数字3引脚
例子程序
void setup() { // initialize digital pin 13 as an output. pinMode(3, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(3, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(3, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
试验效果
程序上传到Carduino UNO控制器后,将本模块放置到暗环境下(可放入纸盒或用手遮挡),用手机摄像头对准红外发射头前端,并在照相/摄像功能中仔细观察,可以看到有蓝紫色光在缓慢闪烁。注意在摄像范围内要整体处于暗光状态,若有较亮的光则无法观察到。
红外遥控/通讯
红外遥控或通讯在技术上可以采用载波方式和非载波方式,所谓载波方式就是将要发送的信号调制到较高的载波频率上,以达到抗干扰、抗衰减等目的。由于红外线本身存在于自然光中,因此家电的红外遥控普遍使用38kHz的载波来达到抗干扰的目的。
使用硬件
- Carduino UNO 控制器 * 2个
- V5.0传感器扩展板 * 2个
- 红外接收模块 * 1个
- 红外发射传感器 * 1个
硬件接线
- 红外发射模块接在Carduino UNO的数字3脚
- 红外接收模块接在Carduino UNO的数字11脚
测试程序
IRremote 库文件下载链接
链接:https://pan.baidu.com/s/1wWgp1k-oXOKg-cFL502GGQ
提取码:6sox
发射端程序
#include <IRremote.h> IRsend irsend; void setup() { } void loop() { irsend.sendRC5(0x0, 8); //send 0x0 code (8 bits) delay(200); irsend.sendRC5(0x1, 8); delay(200); }
接收端程序
#include <IRremote.h> const int RECV_PIN = 11; const int LED_PIN = 13; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver pinMode(LED_PIN,OUTPUT); } void loop() { if (irrecv.decode(&results)) { if ( results.bits > 0 ) { int state; if ( 0x1 == results.value ) { state = HIGH; } else { state = LOW; } digitalWrite( LED_PIN, state ); } irrecv.resume(); // prepare to receive the next value } }
视频演示