“(SKU:RB-03T004)红外发射模块”的版本间的差异

来自ALSROBOT WiKi
跳转至: 导航搜索
第1行: 第1行:
<br/>
 
 
[[文件:3232.jpg|500px|有框|右]]
 
[[文件:3232.jpg|500px|有框|右]]
==概述==
+
==产品概述==
:由于在远距离传输过程中使用连接线可能会导致传输数据错误。2010年最新推出的IR&LED Module 是一款Arduino兼容的红外线发射传感器,可通过对Arduino进行编程发射出38KHz 调制信号,可适应市面上各种红外接收头,以便IR Receiver Module 38KHz 红外线接收传感器能接收到,从而实现红外无线通讯。
+
:由于在远距离传输过程中使用连接线可能会导致传输数据错误。IR&LED Module 是一款Arduino兼容的红外线发射传感器,可通过对Arduino进行编程发射出38KHz 调制信号,可适应市面上各种红外接收头,以便IR Receiver Module 38KHz 红外线接收传感器能接收到,从而实现红外无线通讯。 红外发射模块上的核心器件是红外发射管,其广泛使用在红外遥控设备上。该模块有3PIN接口,可以方便的通过Arduino等控制板实现红外遥控、通讯的功能。红外发射管是一个能发射出特定波长红外光的二极管。红外遥控器就是使用的红外发射头发出一连串的二进制脉冲码信号。为了使其在无线传输过程中免受其他红外信号的干扰,通常都是先将其调制在特定的载波频率上,然后再经红外发射二极管发射头发射出去。
==性能参数==
+
==规格参数==
# 供电电压:  5V
+
* 供电电压:5V
# 工作环境:-25~+85℃  
+
* 工作环境:-25~+85℃  
# 储存温度:-30~+100 ℃  
+
* 储存温度:-30~+100 ℃  
# 波长: 940nm
+
* 波长:940nm
# 模块尺寸: 13.7mm×27.8mm  
+
* 模块尺寸:13.7mm×27.8mm  
# 模块重量: 1g
+
* 模块重量:1g
 +
* 信号类型:数字信号
 +
* 红外中心波长:约850nm-940nm
 +
* 红外发射角:约20度
 +
* 红外发射距离:约1.3米 (5V 38Khz)
 
==引脚定义==
 
==引脚定义==
 
:传感器引脚的定义是
 
:传感器引脚的定义是
第18行: 第21行:
 
==连接示意图 ==
 
==连接示意图 ==
 
[[文件:hongwaifashejiexian01.jpg|700px|有框|居中]]
 
[[文件:hongwaifashejiexian01.jpg|700px|有框|居中]]
 
 
==模块测试 ==
 
==模块测试 ==
我们使用Arduino控制器来做个测试,要用到硬件设备如下:
+
=== 看见红外线 ===
# Arduino控制器×2
+
试验目的:1秒间隔发射红外线<br/>
# Arduino 传感器扩展板×2
+
====使用硬件====
# 红外发射模块×1和红外接收模块×1
+
* Carduino UNO 控制器*1个
# 电位计模块×1和 LED 发光模块×1
+
* V5.0传感器扩展板*1个
# 通用3P传感器连接线×4
+
* 红外发射传感器*1个
# USB 数据通信线×2
+
* 具备摄像头的手机*1部
[[文件:3232-4.jpg|500px|有框|居中]]
+
====连线方法====
接线方法:
+
将红外发射模块接在Carduino UNO控制器的数字3引脚
{|border="1" cellspacing="0" align="center" cellpadding="5" width="400px"
+
====例子程序====
|-
+
<pre style="color:blue">
|align="center"|产品
+
void setup() {
|align="center"|UNO引脚
+
  // initialize digital pin 13 as an output.
|-
+
  pinMode(3, OUTPUT);
|align="center"|红外发射模块
+
|align="center"|数字接口2
+
|-
+
|align="center"|红外接收模块
+
|align="center"|数字接口2
+
|-
+
|align="center"|旋转角度电位计
+
|align="center"|模拟接口0
+
|-
+
|align="center"|LED模块
+
|align="center"|数字接口9
+
|}
+
<br>
+
:将发送部分代码编译后下载到作为发送部分的Arduino里,将接收部分代码编译后下载到作为接收部分的Arduino里,就可以在串口助手窗口上显示接收到的当前值(注:串口助手波特率调到115200 )。Arduino实验代码如下。
+
:发送部分程序:
+
<pre style='color:blue'>#define ADD 0x00
+
int IR_S = 2;    // 定义数字口2 为发射模块接口
+
int a;
+
void setup()  
+
{  
+
pinMode(IR_S, OUTPUT); //定义IR_S为输出模式
+
Serial.begin(115200); //定义频率为115200
+
 
}
 
}
void loop()  
+
// the loop function runs over and over again forever
{  
+
void loop() {
    uint8_t dat,temp;    
+
   digitalWrite(3, HIGH);   // turn the LED on (HIGH is the voltage level)
{   
+
  delay(1000);             // wait for a second
      a=analogRead(0); // 读取模拟口0 的值
+
  digitalWrite(3, LOW);   // turn the LED off by making the voltage LOW
      temp =a/4;
+
  delay(1000);             // wait for a second
      Serial.println(temp,DEC ); // 将读取的数值打印到串口上
+
}
      IR_Send38KHZ(280,1);//发送9ms 的起始码
+
</pre>
      IR_Send38KHZ(140,0);//发送4.5ms 的结果码
+
====试验效果====
   
+
程序上传到Carduino UNO控制器后,将本模块放置到暗环境下(可放入纸盒或用手遮挡),用手机摄像头对准红外发射头前端,并在照相/摄像功能中仔细观察,可以看到有蓝紫色光在缓慢闪烁。注意在摄像范围内要整体处于暗光状态,若有较亮的光则无法观察到。
      IR_Sendcode(ADD);//用户识别码
+
===红外遥控/通讯===
      dat=~ADD;
+
红外遥控或通讯在技术上可以采用载波方式和非载波方式,所谓载波方式就是将要发送的信号调制到较高的载波频率上,以达到抗干扰、抗衰减等目的。由于红外线本身存在于自然光中,因此家电的红外遥控普遍使用38kHz的载波来达到抗干扰的目的。
      IR_Sendcode(dat);//用户识别码反吗
+
====使用硬件====
      IR_Sendcode(temp);// 操作码
+
* Carduino UNO控制器*2个
      dat=~temp;
+
* V5.0传感器扩展板*2个
      IR_Sendcode(dat);//操作码反码
+
* 红外接收模块*1个
   
+
* 红外发射模块*1个
      IR_Send38KHZ(21,1);// 发送结束码
+
====硬件接线====
    }
+
* 红外发射模块接在Carduino UNO的数字3脚
    delay(200);
+
* 红外接收模块接在Carduino UNO的数字11脚
}   
+
====测试程序====
 +
=====发射端程序=====
 +
<pre style="color:blue">
 +
#include <IRremote.h>
 +
IRsend irsend;
 +
void setup()
 +
{
 +
}
 +
  void loop() {
 
   
 
   
void IR_Send38KHZ(int x,int y) //产生38KHZ红外脉冲
+
    irsend.sendRC5(0x0, 8); //send 0x0 code (8 bits)
+
    delay(200);
for(int i=0;i<x;i++)//15=386US
+
    irsend.sendRC5(0x1, 8);  
  { 
+
    delay(200);
      if(y==1)  
+
  }
        {
+
  </pre>
      digitalWrite(IR_S,1);  
+
=====接收端程序=====
          delayMicroseconds(9);
+
<pre style="color:blue">
          digitalWrite(IR_S,0);  
+
#include <IRremote.h>
          delayMicroseconds(9);  
+
  const int RECV_PIN = 11;
        }
+
  const int LED_PIN = 13;
      else  
+
IRrecv irrecv(RECV_PIN);
        {
+
decode_results results;
          digitalWrite(IR_S,0);
+
void setup()
          delayMicroseconds(20);
+
{
        }  
+
  Serial.begin(9600);
  }                                                           
+
  irrecv.enableIRIn(); // Start the receiver
}
+
}
 
+
void loop()  
void IR_Sendcode(uint8_t x) 
+
{  
{
+
  if (irrecv.decode(&results))  
    for(int i=0;i<8;i++)
+
  {
    {
+
    if ( results.bits > 0 )
      if((x&0x01)==0x01)
+
    {
        {
+
      int state;
            IR_Send38KHZ(23,1);
+
      if ( 0x1 == results.value )
            IR_Send38KHZ(64,0);             
+
      {
        }
+
        state = HIGH;
        else  
+
      }
        {
+
      else
            IR_Send38KHZ(23,1);
+
      {
            IR_Send38KHZ(21,0); 
+
      state = LOW;
        }
+
      }
        x=x>>1;
+
      digitalWrite( LED_PIN, state );
    } 
+
    }
} </pre>
+
    irrecv.resume();       // prepare to receive the next value
:此代码的功能是从模拟口0 读取电位计的值,并通过红外发射头将读取的数值发送出去。
+
  }
接收部分程序:
+
}
<pre style='color:blue'>#define IR_LED  2  //IR 接收数字口2
+
</pre>
#define MAX  128
+
==产品相关推荐==
#define MICRO_STEP 10
+
[[文件:erweima.png|230px|无框|右]]
#define IDLE_PULSE 4000
+
===产品购买地址===
unsigned long pulses[MAX];
+
[http://www.alsrobot.cn/goods.php?id=155 红外发射模块]<br/>
unsigned char IRCOM[7];
+
===周边产品推荐===
unsigned long z;
+
[http://www.alsrobot.cn/goods-151.html 红外接收遥控套装]<br/>
int w;
+
[http://www.alsrobot.cn/goods-153.html 红外接收发射套装]<br/>
byte f=B00000000; // 定义f 为位
+
[http://www.alsrobot.cn/goods-155.html 红外发射模块]<br/>
int n;  
+
===相关问题解答===
int ledpin=9; // 定义数字口9 为LED 模块接口
+
[http://www.makerspace.cn/forum.php?mod=viewthread&tid=2617&fromuid=10780 红外接收发射套装的编码解码技术问题]<br/>
void setup()  
+
===相关学习资料===
{  
+
[http://v.youku.com/v_show/id_XODc4NDc4MTQw.html?from=y1.7-2 视频: 红外无线发射接收之颜色识别系统]<br/>
  pinMode(IR_LED, INPUT);
+
[http://v.youku.com/v_show/id_XODc4NDg2NDYw.html?from=y1.7-2 视频: 红外无线传输之旋转电位计控制LED灯]<br/>
  Serial.begin(115200);  
+
[http://www.makerspace.cn/portal.php 奥松机器人技术论坛]<br/>
  pinMode(ledpin,OUTPUT); //定义ledpin 为输出模式
+
}  
+
                                                           
+
void loop()  
+
{  
+
  if( digitalRead(IR_LED) == LOW)  
+
  {  
+
    // 开始接收数据
+
        int count = 0;
+
        int exit = 0;
+
    while(!exit)  
+
    {  
+
      while( digitalRead(IR_LED) == LOW )
+
        delayMic roseconds(MICRO_STEP);
+
      unsigned long start = micros();
+
      int max_high = 0;  
+
      while( digitalRead(IR_LED) == HIGH )  
+
      {  
+
        delayMic roseconds(MICRO_STEP);
+
        max_high += MICRO_STEP;  
+
        if( max_high > IDLE_PULSE )
+
        {  
+
          exit = 1;  
+
          break;
+
        }
+
      }
+
      unsigned long duration = micros() - start;
+
      pulses[count++] = duration;
+
    }
+
    for(int i=3; i<4; i++)
+
    {
+
      for(int j=0;j<8;j++)
+
      {
+
        if(pulses[ i*8+j+1] < IDLE_PULSE)
+
        {
+
            IRCOM[i]=IRCOM [i] >> 1;           
+
            if((pulses[i*8+j+1])>1000)
+
              {IRCOM[i] = IRCOM[i] | 0x80;}           
+
        }
+
      z= pulses[i*8+j+1];
+
/***************************************************/  
+
    //将接收到的脉冲数据转换成十进制                                                                   
+
/***************************************************/ 
+
      if(z<800)
+
          w=10000000;  //如果Z 小于800  w=10000000
+
      else
+
          w=00000000;  //如果Z 大于800  w=00000000
+
      f=f>>1;        // 将f 右移1 位
+
      f=f+w;     
+
/***************************************************/  
+
    }
+
    }
+
  n=int(f);
+
  Serial.print(n);// 将接收到的数据打印到串口上
+
  analogWrite(ledpin,n); //将接收到的数据写入ledpin 接口,控制LED 亮度
+
  }
+
} </pre>
+
:此代码的功能是通过红外接收头接收发送部分发送出的电位计的值,将读到的值来控制LED的亮度,并通过串口助手显示当前接收到的值。如下图所示左侧串口助手(串口号为:117 )显示的是红外发送部分当前发送出的电位计的值,右侧串口助手(串口号为:88)显示的是红外接收部分接收到的数值。这样就实现了通过旋转角度电位计模块无线控制接收端的LED亮度。
+
[[文件:3232-5.jpg|500px|有框|居中]]
+
 
+
==相关推荐==
+
购买地址:[http://www.alsrobot.cn/goods.php?id=155 红外发射模块]<br/>
+
论坛地址:[http://www.makerspace.cn/portal.php 奥松机器人技术论坛]
+

2015年9月28日 (一) 15:34的版本

3232.jpg

目录

产品概述

由于在远距离传输过程中使用连接线可能会导致传输数据错误。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)
Hongwaifashe01.jpg

连接示意图

Hongwaifashejiexian01.jpg

模块测试

看见红外线

试验目的: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脚

测试程序

发射端程序
#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
 }
 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
   }
 }

产品相关推荐

Erweima.png

产品购买地址

红外发射模块

周边产品推荐

红外接收遥控套装
红外接收发射套装
红外发射模块

相关问题解答

红外接收发射套装的编码解码技术问题

相关学习资料

视频: 红外无线发射接收之颜色识别系统
视频: 红外无线传输之旋转电位计控制LED灯
奥松机器人技术论坛