Arduino红外遥控系列教程2013——发射与接收

关于Arduino红外发射与接收的教程,论坛已经有很多了,但作为IRremote应用系列教程的铺垫。在此整理重新发布一下



更新 2013.03.12

本系列教程已经告一段落,陆陆续续发布了6篇教程,4部视频和1个wiki语法手册。以后的精力要回归BOXZ啦。

  1. Arduino红外遥控系列教程2013——发射与接收[链接]
  2. Arduino红外遥控系列教程2013——红外转码[链接]
  3. Arduino红外遥控系列教程2013——红外转码扩展应用1[链接]
  4. Arduino红外遥控系列教程2013——红外协议之NEC[译文][链接]
  5. Arduino红外遥控系列教程2013——IRremote多协议红外遥控扩展库[译文][链接]
  6. Arduino红外遥控系列教程2013——IRremote库进阶与调试[链接]



    Arduino IRremote Wiki 语法手册中文版[链接]





    教程一:红外接收教程

    本教程共四步操作,将教大家如何收集电视红外遥控器的编码

IMG_3390.JPG

2013-2-20 19:38 上传
(116.74 KB)







视频链接:http://v.youku.com/v_show/id_XNTE2NjQ5NTcy.html







第一步:电路连接,非常简单[本图摘自IRremote作者BLOG]

ir-schematic.png

2013-2-20 19:38 上传
(1.01 KB)


8ae7bacftw1e23k0iqr6dj.jpg

2013-2-23 19:20 上传
(45.14 KB)


IR_e.png

2013-2-21 15:07 上传
(55.93 KB)



这里额外说两点,其一红外发射二极管的型号无所谓,常见的是3MM和5MM。但接收管不是全部好用的

部分已知红外接收型号如下:

HS0038B(4.5V-5.5V)

PC838(2.5v-5.5v)

IRM_3638



其二,有的红外接收集成了三极管,所以并不需要为了增加功率额外再接一个三极管。详见Datesheet

Step1_r.png

2013-2-20 19:53 上传
(25.07 KB)





第二步:安装IRremote库

请直接参考 Arduino入门教程--第二十课--红外遥控器介绍[链接]



第三步:复制代码并下载程序

ARDUINO 代码复制打印下载

//本例来自于红外接收模块的IRremote自带范例/** IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv* An IR detector/demodulator must be connected to the input RECV_PIN.* Version 0.1 July, 2009* Copyright 2009 Ken Shirriff* [url]http://arcfn.com[/url]/#include <IRremote.h>int RECV_PIN = 11;//定义红外接收器的引脚为11IRrecv irrecv(RECV_PIN);decode_results results;void setup(){Serial.begin(9600);irrecv.enableIRIn(); // 初始化红外接收器}void loop() {if (irrecv.decode(&results)) {  Serial.println(results.value, HEX);//以16进制换行输出接收代码  Serial.println();//为了便于观看输出结果增加一个空行  irrecv.resume(); // 接收下一个值}}
//本例来自于红外接收模块的IRremote自带范例

/

  • IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
  • An IR detector/demodulator must be connected to the input RECV_PIN.
  • Version 0.1 July, 2009
  • Copyright 2009 Ken Shirriff
  • [url]http://arcfn.com[/url]

    */



    #include <IRremote.h>



    int RECV_PIN = 11;//定义红外接收器的引脚为11

    IRrecv irrecv(RECV_PIN);

    decode_results results;



    void setup()

    {

    Serial.begin(9600);

    irrecv.enableIRIn(); // 初始化红外接收器

    }



    void loop() {

    if (irrecv.decode(&results)) {

    Serial.println(results.value, HEX);//以16进制换行输出接收代码

    Serial.println();//为了便于观看输出结果增加一个空行

    irrecv.resume(); // 接收下一个值

    }

    }


第四步:记录红外编码
打开AccessPort串口助手软件并启用监控,手持电视遥控器,依序按键,记录红外编码

Step1_Recording.jpg

2013-2-20 19:56 上传
(72.83 KB)







教程二:红外发射教程

教程二的操作请参考教程一中的视频,电路图也在教程一已示。本教程就不做过多描述,只说几点注意

  1. 安全起见,限流电阻是必须要用的!
  2. 红外光是不可见的,需要用手机摄像模式才能看到,详见视频。



    第一步:修改代码并下载

    根据教程一所记录的红外编码任选其一,例如本例选择频道增加按键

    大家根据自己的情况修改程序中红外编码的部分



    ARDUINO 代码复制打印下载
    /** 发射红外线信号* 注意! 红外线发射器(IR LED)必须接到 pin 3, 不能接其它脚位Hisense 机顶盒 SD-16127 tested///By Leo 2013.02.19//http://weibo.com/leolite//Update: Pin 3 IR LED test function#include <IRremote.h>      // 引用 IRRemote 函式库IRsend irsend;        // 定义 IRsend 物件来发射红外线讯号void setup(){pinMode(3, OUTPUT); digitalWrite(3, HIGH); // 点亮LED测试(需通过手机摄像模式观察)delay(3000);     // 等待3秒digitalWrite(3, LOW);  // 结束测试}void loop(){Serial.print("SendIR: ");irsend.sendNEC(0x807F18E7, 32); // 记得换成你遥控器的红外线编码delay(3000);     // 等待3秒}
    /
  • 发射红外线信号
  • 注意! 红外线发射器(IR LED)必须接到 pin 3, 不能接其它脚位



    Hisense 机顶盒 SD-16127 tested

    */



    //By Leo 2013.02.19

    //http://weibo.com/leolite

    //Update: Pin 3 IR LED test function





    #include <IRremote.h> // 引用 IRRemote 函式库





    IRsend irsend; // 定义 IRsend 物件来发射红外线讯号



    void setup()

    {

    pinMode(3, OUTPUT);

    digitalWrite(3, HIGH); // 点亮LED测试(需通过手机摄像模式观察)

    delay(3000); // 等待3秒

    digitalWrite(3, LOW); // 结束测试

    }



    void loop()

    {

    Serial.print("SendIR: ");

    irsend.sendNEC(0x807F18E7, 32); // 记得换成你遥控器的红外线编码

    delay(3000); // 等待3秒

    }



下一篇
Arduino红外遥控系列教程2013——红外转码[链接]


参考资料
TOM的系列教程
Arduino 红外遥控接收篇之一[链接]
红外发射实验之一红外发射模块自制[链接]
红外遥控接收之二发光二极管闪烁[链接]
红外遥控接收之三红外遥控接收LED与蜂鸣器[链接]

扩展阅读
【扫盲贴】浅谈38K红外发射接受编码[链接]
Randy版大写的,详细讲解了些红外有关知识,推荐下!

[IRremote库官方BLOG]A Multi-Protocol Infrared Remote Library for the Arduino[链接]
详细介绍了库的使用,原理及注意事项。非常推荐通读的文章。

[Github]Arduino-IRremote[链接]
库版本管理,最新版请到此下载

[IBM developerWorks]构建基于 Arduino 的激光游戏[链接]
非常好的系列教程,还包括实用的算法,推荐!

Cooper Maa的红外系列教程[链接]
非常好的红外系列教程,需要一些技术手段才能阅读。作者还有很多精彩的系列教程

Updated 2013.07.14
关于空调遥控,可能接收数据为乱码。需要修改库参数。详情参考
解决问题系列(3)——红外发射,控制美的空调开[作者 @瘦网虫]
http://www.geek-workshop.com/thread-5001-1-1.html
红外线 遥控 空调测试成功[作者 @blueleafxp]
http://www.geek-workshop.com/thread-5146-1-1.html


via - 极客工坊

标签: Arduino教程