(SKU:RB-03T001)红外无线遥控套件

来自ALSROBOT WiKi
2014年10月11日 (六) 16:48Admin讨论 | 贡献的版本

跳转至: 导航搜索


Sdfa1.jpg

目录

概况

红外线遥控接收传感器模块,它采用了 HS 0038 一体化红外接收头作为信号接收元件,确保了产品具有极高的可靠性与卓越的长期稳定性。HS 0038 是一个集成度很高的

元器件。红外接收电路一体化的红外接收装置将遥控信号的接收、放大、检波、整形 集于一身,并且输出可以让单片机识别的 TTL 信号,这样大大简化了接收电路的复杂 程度和电路的设计工作,方便使用。在产品中我们采用红外一体化接收头 HS0038,外 观如封面图片所示。HS0038 黑色环氧树脂封装,不受日光、荧光灯等光源干扰。HS 0038 为直立侧面收光型。它接收红外信号频率为 38 kHz,周期约 26 μs,能同时对信号进行 放大、检波、整形,得到 TTL 电平的编码信号。因此该款产品具有品质卓越、超快响 应、抗干扰能力强、性价比高等优点。

应用领域:家电产品、人机互动平台、教学仪器仪表、PC遥控器等。

规格参数

  1. 供电电压:4.5~5.5V
  2. 输出信号:TTL;
  3. 接收信号距离半径:不大于7m(根据遥控器发射功率而定,此参数为本套遥控器测试结果);
  4. 模块尺寸:13.5mm×38.3mm
  5. 模块重量:2g

使用方 法

步骤一:接线 S端口连接到控制器的 I/O 口。+、- 分别接到电源的+5V 和 GND。

步骤二:安装固定 根据需要通过直径 φ3 的连接件(铜柱、螺钉、螺栓等)进行固定。

红外遥 控接收 传感 器的测试

我们使用 Arduino 控制器来做个测试,要用到硬件设备如下:

  1. Arduino 控制器×1
  2. Arduino LCD1602 字符液晶扩展板×1
  3. 红外遥控接收传感器模块×1
  4. 蜂鸣器发声模块×1
  5. 超薄红外遥控器×1
  6. 通用 3P 传感器连接线×2
  7. USB 数据通信线×1
Sdfa2.jpg
如图所示,使用传感器连接线将红外遥控接收传感器连接到 LCD1602 字符液晶扩

展板的模拟口 1 上,如需声音提示可把本公司的蜂鸣器发声模块连接到模拟口 2 上, 这里要说明下,我们是把模拟接口当做数字接口用,这样比较方便,参见例子程序中 接口定义。连接好硬件后,再把测试源程序库文件解压缩到你的 Arduino 安装目录下的 hardware\ libraries 里面(如需红外遥控接收传感器库文件请联系我们的技术客服)。然 后将代码编译后下载到 Arduino 里,就可以进行键值读取试验了,同时在软件里的串口 监视窗口上可以看见同步的键值显示(注:软件串口波特率设置为 9600)。

  1. Arduino 实验代码如下:
#include <LCD4Bit_mod.h>
LCD4Bit_mod lcd = LCD4Bit_mod(2);
#define TIMER_RESET   TCNT1 = 0 
#define SAMP LE_S IZE    68 
int BUZZER = 16;//  设置模拟口 2 为蜂鸣器信号输出引脚 
int IRpin = 15;    //设置模拟口 1 为信号接收引脚 
unsigned int TimerValue[SAMPLE_SIZE];  
char direction[SAMPLE_SIZE];  
byte change_count; 
long t ime1, t ime2; 
unsigned long data;  
char a,b,c,d,e; 
unsigned long  irc;  
char tab[12]={"0123456789"};  
void setup() { 
pinMode(IRpin, INPUT);
pinMode(13, OUTPUT);
pinMode(BUZZER,OUTPUT);// 设置与蜂鸣器连接的引脚为输出模式 
lcd.init();  
lcd.clear( );  
lcd.printIn("www.robotbase.cn"); 
lcd.cursorTo(2, 0);
lcd.printIn("IR_CODE:");  
TCCR1B = 0x03;
TCCR1A = 0x00;
a=0;b=0;c=0;d=0;e=0; 
Serial.begin(9600);

bee(); 


void loop() { 
lcd.cursorTo(2, 9);
lcd.print(tab[a]);  
lcd.cursorTo(2, 10);
lcd.print(tab[b]);  
lcd.cursorTo(2, 11);
lcd.print(tab[c]);  
lcd.cursorTo(2, 12);
lcd.print(tab[d]);  
lcd.cursorTo(2, 13);
lcd.print(tab[e]);  
ir_code(); 
Serial.println(irc); 
} 
void bee() 
{ 
digitalWrite(BUZZER,LOW);//蜂鸣器响 
delay(300);  
digitalWrite(BUZZER,HIGH);//蜂鸣器响 
delay(300);  
} 

void ir_code() 
{ 
change_count = 0; 
while(digitalRead(IRpin) == HIGH) {}                //  等待起始位 
TIMER_RES ET; 
TimerValue[change_count] = TCNT1; 
direct ion[change_count++] = '0'; 
while (change_count < S AMP LE_SIZE) {
if (direction[change_count-1] == '0') {
while(digitalRead(IRpin) == LOW) {}   //  等待电平上升沿出现 
TimerValue[change_count] = TCNT1;
direct ion[change_count++] = '1';     //  保持信号状态 
}
else {
while(d igit alRead(IRpin) == HIGH) {}    //  等待电平信号的下降沿 
TimerValue[change_count] = TCNT1;
direct ion[change_count++] = '0';     //  保持信号状态 
} 
} 
change_count = 0; 
data = 0; 
time1 = (long) TimerValue[change_count] * 4;
change_count += 2; 
while (change_count < SAMPLE_SIZE) { 
time2 = (long) TimerValue[change_count] * 4;  
if ((t ime2 - time1) > 8000)
{ 
else if ((time2 - t ime1) > 1680) {
data = data << 1;                 //  左移一位 
data |= 1;
else {
data = data << 1;
change_count += 2; 
time1 = time2; 
irc=data%100000;  
a=irc/10000;  
b=irc%10000/1000;  
c=irc%1000/100; 
d=irc%100/10;  
e=irc%10; 
bee(); 

}
  1. 配套遥控器键值表:

Arduino 平 台下全码键值

Sdfa3.jpg

51 单片机平台下全码键值

Sdfa4.jpg