红外接收头外观

红外接收头介绍

1、什么是红外接收头?

红外遥控器发出的信号是一连串的二进制脉冲码。

为了使其在无线传输过程中免受其他红外信号的干扰,通常都是先将其调制在特定的载波频率上, 然后再经红外发射二极管发射出去,而红外线接收装置则要滤除其他杂波,只接收该特定频率的信号并将其还原成二进制脉冲码,也就是解调.

2、工作原理

内置接收管将红外发射管发射出来的光信号转换为微弱的电信号,此信号经由IC内部放大器进行放大,然后通过自动增益控制、带通滤波、解调变、 波形整形后还原为遥控器发射出的原始编码,经由接收头的信号输出脚输入到电器上的编码识别电路。

3、红外接收头的引脚与连线

红外接收头有三个引脚如下图:

D为数据输出

GND为电源地

VCC为电源正

红外遥控实验

1、实验器件 红外遥控器 1个 IR Receiver Module 1个 数字传感器连接线 1根

2、实验原理 要想对某一遥控器进行解码必须要了解该遥控器的编码方式,这就叫知己知彼,百战不殆 。本产品使用的遥控器的编码方式为:NEC协议。下面就介绍一下NEC协议:

NEC协议介绍

特点:

(1)8位地址位,8位命令位

(2)为了可靠性地址位和命令位被传输两次

(3)脉冲位置调制

(4)载波频率38khz

(5)每一位的时间为1.125ms或2.25ms

逻辑0和1的定义如下图:

协议如下:

按键按下立刻松开的发射脉冲:

上面的图片显示了NEC的协议典型的脉冲序列。注意:这是首先发送LSB(最低位)的协议。在上面的脉冲传输的地址为0x59命令为0x16。一个消息是由一个9ms的高电平开始,随后有一个4.5ms的低电平, (这两段电平组成引导码)然后由地址码和命令码。地址和命令传输两次。第二次所有位都取反,可用于对所收到的消息中的确认使用。总传输时间是恒定的,因为每一点与它取反长度重复。如果你不感兴趣, 你可以忽略这个可靠性取反,也可以扩大地址和命令,以每16位!

按键按下一段时间才松开的发射脉冲:

一个命令发送一次,即使在遥控器上的按键仍然按下。当按键一直按下时,第一个110ms的脉冲与上图一样,之后每110ms重复代码传输一次。这个重复代码是由一个9ms的高电平脉冲和一个2.25ms低电平和560μs的高电平组成。

重复脉冲

注意:脉冲波形进入一体化接收头以后,因为一体化接收头里要进行解码、信号放大和整形,故要注意在没有红外信号时,其输出端为高电平,有信号时为低电平,故其输出信号电平正好和发射端相反。接收端脉冲大家可以通过示波器看到,结合看到的波形理解程序。

本实验编程思想

根据NEC编码的特点和接收端的波形,本实验将接收端的波形分成四部分:引导码(9ms和4.5ms的脉冲)、地址码16位(包括8位的地址位和8位的地址的取反)、命令码16位(包括8位命令位和8位命令位的取反)、重复码(9ms、2.25ms、560us脉冲组成)。 利用定时器对接收到的波形的高电平段和低电平段进行测量,根据测量到的时间来区分:逻辑“0”、逻辑“1”、引导脉冲、重复脉冲。引导码和地址码只要判断是正确的脉冲即可,不用存储,但是命令码必须存储,因为每个按键的命令码都不同, 根据命令码来执行相应的动作。设置遥控器上的几个按键VOL+:控制LED灯亮的;VOL-:作为控制蜂鸣器响;

实例代码

程序功能:对遥控器发射出来的编码脉冲进行解码,根据解码结果执行相应的动作。按下"VOL+"红灯亮,松开红灯灭;按下"VOL-"蜂鸣器响,松开蜂鸣器停止响;这样大家就可以用遥控器遥控你的器件了,让它听你的指挥。其它按键的译码方式与这几个键一样,只要大家用示波器测出它们各自的波形,了解各自的命令码,在执行译码结果的函数中写上对应的命令码和要执行的动作即可。

#define BUZZER 10//蜂鸣器

#define LED_RED 11//红灯

#define IR_IN 8 //红外接收

int Pulse_Width=0;//存储脉宽

int ir_code=0x00;//命令值

void timer1_init(void)//定时器初始化函数

{

TCCR1A = 0X00;

TCCR1B = 0X05;//给定时器时钟源

TCCR1C = 0X00;

TCNT1 = 0X00;

TIMSK1 = 0X00; //禁止定时器溢出中断

}

void remote_deal(void)//执行译码结果函数

{

switch(ir_code)

{

case 0xff00://停止

digitalWrite(LED_RED,LOW);//红灯不亮

digitalWrite(BUZZER,LOW);//蜂鸣器不响

break;

case 0xfe01://VOL+

digitalWrite(LED_RED,HIGH);//红灯亮

break;

case 0xf609://VOL-

digitalWrite(BUZZER,HIGH);//蜂鸣器响

break;

}

}

char logic_value()//判断逻辑值“0”和“1”子函数

{

while(!(digitalRead(8))); //低等待

Pulse_Width=TCNT1;

TCNT1=0;

if(Pulse_Width>=7&&Pulse_Width<=10)//低电平560us

{

while(digitalRead(8));//是高就等待

Pulse_Width=TCNT1;

TCNT1=0;

if(Pulse_Width>=7&&Pulse_Width<=10)//接着高电平560us

return 0;

else if(Pulse_Width>=25&&Pulse_Width<=27) //接着高电平1.7ms

return 1;

}

return -1;

}

void pulse_deal()//接收地址码和命令码脉冲函数

{

int i;

//执行8个0

for(i=0; i<8; i++)

{

if(logic_value() != 0) //不是0

return;

}

//执行6个1

for(i=0; i<6; i++)

{

if(logic_value()!= 1) //不是1

return;

}

//执行1个0

if(logic_value()!= 0) //不是0

return;

//执行1个1

if(logic_value()!= 1) //不是1

return;

//解析遥控器编码中的command指令

ir_code=0x00;//清零

for(i=0; i<16;i++ )

{

if(logic_value() == 1)

{

ir_code |=(1<

}

}

}

void remote_decode(void)//译码函数

{

TCNT1=0X00;

while(digitalRead(8))//是高就等待

{

if(TCNT1>=1563) //当高电平持续时间超过100ms,表明此时没有按键按下

{

ir_code = 0xff00;

return;

}

}

//如果高电平持续时间不超过100ms

TCNT1=0X00;

while(!(digitalRead(8))); //低等待

Pulse_Width=TCNT1;

TCNT1=0;

if(Pulse_Width>=140&&Pulse_Width<=141)//9ms

{

while(digitalRead(8));//是高就等待

Pulse_Width=TCNT1;

TCNT1=0;

if(Pulse_Width>=68&&Pulse_Width<=72)//4.5ms

{

pulse_deal();

return;

}

else if(Pulse_Width>=34&&Pulse_Width<=36)//2.25ms

{

while(!(digitalRead(8)));//低等待

Pulse_Width=TCNT1;

TCNT1=0;

if(Pulse_Width>=7&&Pulse_Width<=10)//560us

{

return;

}

}

}

}

void setup()

{

unsigned char i;

pinMode(LED_RED,OUTPUT);//设置与红灯连接的引脚为输出模式

pinMode(BUZZER,OUTPUT);//设置与蜂鸣器连接的引脚为输出模式

pinMode(IR_IN,INPUT);//设置红外接收引脚为输入

}

void loop()

{

timer1_init();//定时器初始化

while(1)

{

remote_decode(); //译码

remote_deal(); //执行译码结果

}

}

遥控器键值附表

Arduino库文件

本文整理于DFRobot wiki

android接收红外传感器发送的脉冲信号,Arduino红外传感器-IR Receiver Module红外接收模块...相关推荐

  1. android接收红外传感器发送的脉冲信号,esp8266_sdk_ir_rx_tx红外遥控示例

    前言: 红外遥控是利用红外线进行传输数据,红外线又称红外光波,在电磁波谱中,光波的波长范围为0.01um1000um.根据波长的不同可分为可见光和不可见光,波长为0.38um0.76um的光波可为可见 ...

  2. arduino声音传感器与二极管_红外二极管发射电路图大全

    红外二极管发射电路图(一) 传感器检测及声光报警电路 传感器模块由热释电传感器.烟雾传感器MQ211和红外传感器组成. 烟雾传感器的内部电阻是随着烟雾的浓度的变化而变化,因此要将其转化为变化的电压信号 ...

  3. 求android 中串口的发送接收数据代码

    RT,求高手帮忙! 就是 /dev/ttyS0 和/dev/ttyS1 两个设备的通信问题.. 同求~ 这个是不是需要串口驱动啊?最近正在搞这个串口通信的案子,头疼 同样也没有搞出来,老是报:不能扫描 ...

  4. Android接收短信和发送短信

    一.布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android ...

  5. 【学习笔记】在Arduino开发板上使用人体红外传感器HC-SR505

    PIR(Pyroelectric Infra Red)传感器可测量检测区域中的物体发出的红外光. HC-SR505就是这样的传感器.它非常易于使用,如果检测区域中有物体在移动,该传感器会产生HIGH高 ...

  6. ESP32 开发笔记(三)源码示例 13_IR_Send_RMT 使用RMT实现红外数据发送(NEC编码)

    开发板购买链接 https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.50111deb2Ij1As&ft=t&id=62636 ...

  7. Arduino基础项目十四:红外对管模块

    一.红外对管模块说明 红外对管模块是 Arduino 常使用的模块之一,其主要构成及部分原理如图. 红外对管即一对红外线发射与接收管,其中发射管发射出一定频率的红外线,若在检测方向遇到障碍物,红外线反 ...

  8. Arduino火焰传感器(红外线接收器)的使用

    前言 在智能家居环境监测项目需要使用的传感器元件中,火焰传感器是一个简单易用的传感器,它使用红外线接收管作为基本元件,电位器调整灵敏度,三个管脚或者四根管脚输出: 在使用火焰传感器之前,我们首先需要了 ...

  9. Android 串口开发,发送串口命令,读卡,反扫码,USB通讯,实现demo。——持续更新

    应用场景:APP发送串口命令到打印机,打印相应数据小票 // 串口 implementation 'com.github.licheedev.Android-SerialPort-API:serial ...

  10. 手机对红外探头发送数据和接受

    手机对红外探头发送数据和接受.注:此程序只能用于内置红外的安卓手机,通过耳机插口外接的红外程序则会显示"找不到红外设备" 布局文件: <?xml version=" ...

最新文章

  1. 【其他】GIT常用原生命令
  2. POJ3160强连通+spfa最长路(不错)
  3. mysql安装sphinx引擎
  4. php5.2 zengd,大对杀狗狗再犯低级错误 ZEN狂输200目笑翻棋友
  5. Swift 弱引用与无主引用
  6. Javascript内置对象之Date对象与HTML BOM
  7. 模型压缩_模型压缩:
  8. 视频教程-CCNA趣味实战无线实验视频课程—含PPPOE、ADSL、CABLE等-思科认证
  9. 会计计算机学什么软件有哪些,会计一般要学什么软件
  10. Nginx篇05-http长连接和keeplive
  11. MobaXterm快捷输入
  12. Pycharm学习记录(一)——爬虫与反爬
  13. 远程桌面由于以下原因之一无法连接到远程计算机解决方法(亲测)
  14. 《斯坦福极简经济学》读书笔记
  15. 华为p10关闭更新_华为P10怎么取消系统更新提醒
  16. Python 自己简单地造一个轮子.whl文件
  17. 正则表达式匹配任何空白字符或者非空白字符
  18. 深度linux15.4 密码,深度操作系统15.4 Beta——给你“好看”
  19. oracle分区注意点,ORACLE分区表梳理系列(二)- 分区表日常维护及注意事项
  20. Redmibook pro 15 锐龙版 2021评测2022款各家本子推荐

热门文章

  1. 计算机毕业设计Java物料生产管理系统(源码+系统+mysql数据库+Lw文档)
  2. Global Mapper 裁剪
  3. 质性数据分析软件NVivo的安装选项和参数
  4. 场地测量的方法和程序_施工测量方案
  5. wifi数据包解析_详细解析WiFi模块的基础知识
  6. x80hd装linux,台电X80HD:双系统切换的方法演示_台电 X80HD_平板电脑评测-中关村在线...
  7. pyecharts绘制条形图、饼图、散点图、词云图、地图等常用图形
  8. 徐小湛概率论与数理统计课件_考研数学 徐小湛教授线性代数90讲
  9. java--javassist学习
  10. python--弦图