“(SKU:RB-03T005)红外接收模块”的版本间的差异

来自ALSROBOT WiKi
跳转至: 导航搜索
例子程序
 
(未显示3个用户的12个中间版本)
第1行: 第1行:
<br/>
+
[[文件:12345005.jpg|500px|有框|右]]
[[文件:3edfe-1.jpg|500px|有框|右]]
+
==产品概述==
==概述==
+
 
:IR Receiver Module是一款Arduino兼容的38KHz红外线接收模块,可接收标准38KHz调制的遥控器信号,通过对Arduino进行编程,即可实现对遥控器信号的解码操作。可使用Arduino制作一款带学习功能的万能遥控器。
 
:IR Receiver Module是一款Arduino兼容的38KHz红外线接收模块,可接收标准38KHz调制的遥控器信号,通过对Arduino进行编程,即可实现对遥控器信号的解码操作。可使用Arduino制作一款带学习功能的万能遥控器。
==性能参数==
+
==规格参数==
# 供电电压: 5V  
+
* 供电电压: 5V  
# 工作环境: -25~+85℃  
+
* 工作环境: -25~+85℃  
# 储存温度: -30~+100 ℃  
+
* 储存温度: -30~+100 ℃  
# 接收频率: 38KHz
+
* 接收频率: 38KHz
# 模块尺寸: 13.7mm×27.8mm  
+
* 模块尺寸: 13.7mm×27.8mm  
# 模块重量: 2g  
+
* 模块重量: 2g
 +
 
 
==引脚定义==
 
==引脚定义==
传感器引脚的定义是
+
红外接收传感器引脚的定义是<br/>
 
* S:输出信号
 
* S:输出信号
 
* +:电源(VCC)
 
* +:电源(VCC)
 
* -:地(GND)
 
* -:地(GND)
[[文件:324325-2.jpg|500px|有框|居中]]
+
[[文件:hongwaijieshou01.jpg|500px|有框|居中]]
==4.连接示意图 ==
+
===连接示意图===
[[文件:324325-3.jpg|500px|有框|居中]]
+
[[文件:hongwaijieshoujiexian01.jpg|700px|有框|居中]]
==模块测试 ==
+
==使用方法==
我们使用Arduino控制器来做个测试,要用到硬件设备如下:
+
===使用硬件===
# Arduino控制器×2
+
* [http://www.alsrobot.cn/goods-546.html Carduino UNO R3 控制器] * 2
# Arduino 传感器扩展板×2
+
* [http://www.alsrobot.cn/goods-147.html Arduino 传感器扩展板V5.0] * 2
# 红外发射模块×1和红外接收模块×1
+
* [http://www.alsrobot.cn/goods-155.html 红外发射模块] * 1个
# 电位计模块×1和 LED 发光模块×1
+
* [http://www.alsrobot.cn/goods-157.html 红外接收模块] * 1个
# 电位计模块×1和 LED 发光模块×1
+
* [http://www.alsrobot.cn/goods-167.html 电位计模块] * 1个
# USB 数据通信线×2
+
* [http://www.alsrobot.cn/goods-133.html LED 发光模块] * 1个
 +
* [http://www.alsrobot.cn/goods-90.html USB 数据通信线] * 2个
 
[[文件:324325-4.jpg|500px|有框|居中]]
 
[[文件:324325-4.jpg|500px|有框|居中]]
:如图所示,使用传感器连接线将电位计模块连接到作为发射部分的Arduino传感器扩展板的模拟口0 上,红外发射头连接到 Arduino传感器扩展板的数字口2 上。然后使用传感器连接线将红外发射头连接到作为接收部分的Arduino传感器扩展板的数字口2上,将LED 发光模块连接到Arduino传感器扩展板的数字口9 上。
+
===接线方法===
:将发送部分代码编译后下载到作为发送部分的Arduino里,将接收部分代码编译后下载到作为接收部分的Arduino里,就可以在串口助手窗口上显示接收到的当前值(注:串口助手波特率调到115200 )。Arduino实验代码如下。  
+
{|border="1" cellspacing="0" align="center" cellpadding="5" width="400px"
:发送部分程序:
+
|-
<pre style='color:blue'>#define ADD 0x00  
+
|align="center"|产品
 +
|align="center"|UNO引脚
 +
|-
 +
|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实验代码如下。
 +
===例子程序===
 +
程序安装前,需要先进行库文件的安装,IRremote 库文件
 +
 
 +
链接: https://pan.baidu.com/s/1CWBaxYwmneVpBWZKH3KSDQ?pwd=f9as 提取码: f9as 
 +
====发送部分程序====
 +
<pre style='color:blue'>
 +
#define ADD 0x00  
 
int IR_S = 2;    // 定义数字口2 为发射模块接口  
 
int IR_S = 2;    // 定义数字口2 为发射模块接口  
 
int a;  
 
int a;  
第94行: 第118行:
 
} </pre>
 
} </pre>
 
:此代码的功能是从模拟口0 读取电位计的值,并通过红外发射头将读取的数值发送出去。  
 
:此代码的功能是从模拟口0 读取电位计的值,并通过红外发射头将读取的数值发送出去。  
接收部分程序:
+
====接收部分程序====
<pre style='color:blue'>#define IR_LED  2  //IR 接收数字口2  
+
<pre style='color:blue'>
 +
#define IR_LED  2  //IR 接收数字口2  
 
#define MAX  128  
 
#define MAX  128  
 
#define MICRO_STEP  10  
 
#define MICRO_STEP  10  
第149行: 第174行:
 
               {IRCOM[i] = IRCOM[i] | 0x80;}             
 
               {IRCOM[i] = IRCOM[i] | 0x80;}             
 
         }  
 
         }  
       z= pulses[i*8+j+1];  
+
       z= pulses[i*8+j+1];  //将接收到的脉冲数据转换成十进制                                                                    
  /***************************************************/
+
    //将接收到的脉冲数据转换成十进制                                                                  
+
/***************************************************/ 
+
 
       if(z<800)  
 
       if(z<800)  
 
           w=10000000;  //如果Z 小于800  w=10000000  
 
           w=10000000;  //如果Z 小于800  w=10000000  
第159行: 第181行:
 
       f=f>>1;        // 将f 右移1 位  
 
       f=f>>1;        // 将f 右移1 位  
 
       f=f+w;       
 
       f=f+w;       
/***************************************************/
 
 
     }  
 
     }  
 
     }  
 
     }  
第168行: 第189行:
 
} </pre>
 
} </pre>
  
:此部分代码功能是通过红外接收头接收发送部分发送出的电位计的值来控制LED的亮度变化并通过串口助手显示当前接收到的值。如下图所示左侧串口助手(串口号为:117 )显示的是红外发送部分当前发送出的电位计的值,右侧串口助手(串
+
===程序效果===
 +
此代码的功能是通过红外接收头接收发送部分发送出的电位计的值,将读到的值来控制LED的亮度,并通过串口助手显示当前接收到的值。如下图所示左侧串口助手(串口号为:117 )显示的是红外发送部分当前发送出的电位计的值,右侧串口助手(串口号为:88)显示的是红外接收部分接收到的数值。这样就实现了通过旋转角度电位计模块无线控制接收端的LED亮度。
 
[[文件:324325-5.jpg|500px|有框|居中]]
 
[[文件:324325-5.jpg|500px|有框|居中]]
→购买地址  红外发射模块 http://www.alsrobot.cn/goods.php?id=155]
+
 
 +
==视频演示==
 +
[[File:hong wai wu xian01.png|400px|左|link=http://v.youku.com/v_show/id_XODc4NDg2NDYw.html?from=y1.7-2]]
 +
[[File:hong wai yan se 01.png|400px|居中|link=http://v.youku.com/v_show/id_XODc4NDc4MTQw.html?from=y1.7-2]]
 +
<br/>
 +
==产品相关推荐==
 +
[[文件:erweima.png|230px|无框|右]]
 +
===产品购买地址===
 +
[http://www.alsrobot.cn/goods.php?id=155 红外发射模块]<br/>
 +
===周边产品推荐===
 +
[http://www.alsrobot.cn/goods-151.html 红外接收遥控套装]<br/>
 +
[http://www.alsrobot.cn/goods-153.html 红外接收发射套装]<br/>
 +
[http://www.alsrobot.cn/goods-155.html 红外发射模块]<br/>
 +
===相关问题解答===
 +
[http://www.makerspace.cn/forum.php?mod=viewthread&tid=2617&fromuid=10780 红外接收发射套装的编码解码技术问题]<br/>
 +
===相关学习资料===
 +
[http://v.youku.com/v_show/id_XODc4NDc4MTQw.html?from=y1.7-2 视频: 红外无线发射接收之颜色识别系统]<br/>
 +
[http://v.youku.com/v_show/id_XODc4NDg2NDYw.html?from=y1.7-2 视频: 红外无线传输之旋转电位计控制LED灯]<br/>
 +
[http://www.makerspace.cn/portal.php 奥松机器人技术论坛]<br/>

2022年4月19日 (二) 15:42的最后版本

12345005.jpg

目录

产品概述

IR Receiver Module是一款Arduino兼容的38KHz红外线接收模块,可接收标准38KHz调制的遥控器信号,通过对Arduino进行编程,即可实现对遥控器信号的解码操作。可使用Arduino制作一款带学习功能的万能遥控器。

规格参数

  • 供电电压: 5V
  • 工作环境: -25~+85℃
  • 储存温度: -30~+100 ℃
  • 接收频率: 38KHz
  • 模块尺寸: 13.7mm×27.8mm
  • 模块重量: 2g

引脚定义

红外接收传感器引脚的定义是

  • S:输出信号
  • +:电源(VCC)
  • -:地(GND)
Hongwaijieshou01.jpg

连接示意图

Hongwaijieshoujiexian01.jpg

使用方法

使用硬件

324325-4.jpg

接线方法

产品 UNO引脚
红外发射模块 数字接口2
红外接收模块 数字接口2
旋转角度电位计 模拟接口0
LED模块 数字接口9


将发送部分代码编译后下载到作为发送部分的Arduino里,将接收部分代码编译后下载到作为接收部分的Arduino里,就可以在串口助手窗口上显示接收到的当前值(注:串口助手波特率调到115200 )。Arduino实验代码如下。

例子程序

程序安装前,需要先进行库文件的安装,IRremote 库文件

链接: https://pan.baidu.com/s/1CWBaxYwmneVpBWZKH3KSDQ?pwd=f9as 提取码: f9as

发送部分程序

#define ADD 0x00 
int IR_S = 2;    // 定义数字口2 为发射模块接口 
int a; 
void setup() 
{ 
 	 pinMode(IR_S, OUTPUT);  //定义IR_S为输出模式 
 	 Serial.begin(115200); //定义频率为115200 
}
void loop() 
{ 
    uint8_t dat,temp;   
{    
      a=analogRead(0); // 读取模拟口0 的值 
      temp =a/4; 
      Serial.println(temp,DEC ); // 将读取的数值打印到串口上 
      IR_Send38KHZ(280,1);//发送9ms 的起始码 
      IR_Send38KHZ(140,0);//发送4.5ms 的结果码 
     
      IR_Sendcode(ADD);//用户识别码 
      dat=~ADD; 
      IR_Sendcode(dat);//用户识别码反吗 
      IR_Sendcode(temp);// 操作码 
      dat=~temp; 
      IR_Sendcode(dat);//操作码反码 
      IR_Send38KHZ(21,1);// 发送结束码 
    } 
    delay(200); 
}  
void IR_Send38KHZ(int x,int y)  //产生38KHZ红外脉冲 
{  
 for(int i=0;i<x;i++)//15=386US 
   {  
       if(y==1) 
        { 
      		digitalWrite(IR_S,1); 
           delayMicroseconds(9); 
           digitalWrite(IR_S,0); 
           delayMicroseconds(9); 
        } 
       else  
        { 
           digitalWrite(IR_S,0); 
           delayMicroseconds(20); 
        } 
   }                                                            
} 
void IR_Sendcode(uint8_t x)   
{ 
    for(int i=0;i<8;i++) 
    { 
       if((x&0x01)==0x01) 
        { 
            IR_Send38KHZ(23,1); 
            IR_Send38KHZ(64,0);              
        } 
        else  
        { 
            IR_Send38KHZ(23,1); 
            IR_Send38KHZ(21,0);   
        } 
        x=x>>1; 
     }   
} 
此代码的功能是从模拟口0 读取电位计的值,并通过红外发射头将读取的数值发送出去。

接收部分程序

#define IR_LED  2   //IR 接收数字口2 
#define MAX  128 
#define MICRO_STEP  10 
#define IDLE_PULSE  4000 
unsigned long pulses[MAX]; 
unsigned char IRCOM[7]; 
unsigned long z; 
int w; 
byte f=B00000000; // 定义f 为位 
int n; 
int ledpin=9; // 定义数字口9 为LED 模块接口 
void setup() 
{ 
  pinMode(IR_LED, INPUT); 
  Serial.begin(115200); 
  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 亮度 
  } 
} 

程序效果

此代码的功能是通过红外接收头接收发送部分发送出的电位计的值,将读到的值来控制LED的亮度,并通过串口助手显示当前接收到的值。如下图所示左侧串口助手(串口号为:117 )显示的是红外发送部分当前发送出的电位计的值,右侧串口助手(串口号为:88)显示的是红外接收部分接收到的数值。这样就实现了通过旋转角度电位计模块无线控制接收端的LED亮度。

324325-5.jpg

视频演示

Hong wai wu xian01.png
Hong wai yan se 01.png


产品相关推荐

Erweima.png

产品购买地址

红外发射模块

周边产品推荐

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

相关问题解答

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

相关学习资料

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