arduino之红外
来源:互联网 发布:淘宝有好货怎么参加 编辑:程序博客网 时间:2024/05/01 11:17
去年开始接触了arduino一段时间,想做一个红外遥控,基本功能有两条
1. 声控开关电器
2. 手机通过蓝牙控制开关电器
做到一半就听说HTC的new one里面默认加了这个功能,又被抢了先,再加上整个2013年前10个月变态的加班方式,直到今日,总算能做个了结了,下面就来简单记录下实现的过程
需要的器件
- arduino uno R3. 购买链接:http://item.taobao.com/item.htm?spm=0.0.0.0.jDit7U&id=18608371052
- arduino xbee传感器扩展版V5 购买链接:http://item.taobao.com/item.htm?spm=0.0.0.0.zCq2hO&id=6804680647
- bluetooth V3蓝牙串口模块 购买链接:http://item.taobao.com/item.htm?spm=0.0.0.0.jinpeQ&id=6032611733
- 语音识别模块 购买链接: http://item.taobao.com/item.htm?spm=0.0.0.0.qYL3uP&id=15338528680
- 面包版,三极管,红外二极管,导线若干就不列出了
红外
以sharp协议为例,简单来说,先使能38K PWM波形,延迟一段时间t1,然后关掉PWM波形,延迟一段时间t2,
t1是固定的,可以理解为开始位,通过t2的不同可以确定发送的是0还是1
参考code:
http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html
https://code.google.com/p/ledstripes/source/checkout
arduino pin3可以生成PWM波形,不过由于arduino uno的IO驱动电流最大只有40mA,导致遥控距离太短,这也是早期遇到的难点,后来经过一番搜索,发现可以通过三极管来解决
使用了三极管之后,arduino pin3只做为三极管的开关,导通之后,红外二极管由外接的5V 电源供电
具体电流可以按如下计算:
首先假设38K的脉冲是5V的。当脉冲为高电平时(5V),B点电位为5V,三极管的基极没有电流Ib流过。三极管CE端关闭,阻抗很大,发光二极管中几乎没有电流,发光二极管不亮。当脉冲为低电平时(0V),B点电位由R1和R2分压,得到电流2.5V。这个时候Ib=(5V-0.7V(发光二极管的导通电压)-0.7V(BE结导通电压)-2.5V)/3.6Ω=0.305A (这个值很大啊!其实这个电流值是瞬间的,因为BE结导通后B点电位回立刻发生改变!) 先看这个0.3A的Ib,它是瞬间的,它的作用就是为了打开CE这个通道,当这个通道打通后,5V到地有了一个回路。从SS8559规格书中看到CE静态电压为0.28V左右,BE静态电压0.98V,可以进行相应的电流计算了。主回路IC=(5V-0.7V-0.28V)/3.6=1.11A,从规格书中估算放大倍数为40,Ib=1.11/40=27.75mA,则B点电位Vb=5-3.6*0.02775-0.7-0.98=3.22V。以上为计算过程,R1和R2的作用就是给三极管一个偏执电压,当三极管工作会后就没有作用了。R3决定IC的电流,SS8550最大电流1.5A,根据二极管,三极管压降可以计算出这个阻值,图中应该把SS8550的CE静态电压设定为0,所以才是3.6Ω,否则2.68Ω就可以了。从这里可以看到在38K出给5V脉冲后,电路的作用就是发光二极管间断性闪烁,如果是3.3V脉冲,那么就是亮的程度有变化了!
由于这个电路采用了PNP型三极管,所以为低有效,这里注意需要修改code。
声控
声控部分采用LD3320,具体资料:
http://wiki.dfrobot.com.cn/index.php/(SKU:DFR0177)%E4%B8%AD%E6%96%87%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB%E6%A8%A1%E5%9D%97Voice_Recognition
蓝牙
具体资料:
http://wiki.dfrobot.com.cn/index.php/(SKU:TEL0026)DF-BluetoothV3%E8%93%9D%E7%89%99%E4%B8%B2%E5%8F%A3%E6%A8%A1%E5%9D%97
代码
Arduino
https://code.google.com/p/arduino-successcw/source/checkout?repo=ir-remote
同步下来代码之后,拷贝到arduino IDE的根目录,
打开下面目录的对应工程即可编译
IRSend_BT : 手机通过蓝牙操作红外
IRSend_Voice: 声控操作红外
IRrecv: 可以接收红外并输出结果到串口,这个可以用来实现遥控器的“学习”功能。以sharp为例,当按下power键,输出22c1,这个值直接放入IRSend里面对应的位置即可实现开关机功能
- successcw
- IRSend_BT
- IRSend_Voice
- IRrecv
- IRSend_BT
- successcw
Android
https://code.google.com/p/arduino-successcw/source/checkout?repo=bt-client
同步下来之后用ADT编译安装到手机即可运行
连接好的效果图
IRSend_Voice
IRSend_BT
IRrecv
手机端运行效果
- arduino之红外
- Arduino简单实例之七_红外遥控接收
- Arduino 红外解码算法
- arduino 红外控制彩灯
- arduino 红外遥控数码管
- arduino 红外遥控小车
- Arduino - 红外接收
- Arduino接收红外信号
- 我的红外arduino链接,!!!!
- Arduino 红外遥控 第一次试验
- C#+Arduino使用红外遥控器
- Arduino简单实例之五_红外避障传感器模块
- Arduino学习笔记--人体红外感应器
- arduino 红外和超声波库文件下载
- Arduino硬件开发--红外遥控舵机
- Arduino 卡片14红外遥控灯
- Arduino 卡片15红外遥控数码管
- Arduino读取红外遥控与digitalWrite邂逅
- 怎样才能成为一个优秀的产品经理?
- 并查集用法一例
- 连接数据库时报错:无效的列索引
- SQL Server大负载的生产环境下的性能优化:初识元数据优化
- 超极本™ 触摸屏 - 一种全新的动手方式
- arduino之红外
- java.util.concurrent介绍
- JQuery获取当前屏幕的高度宽度的实现代码
- 二叉树中节点的最大距离
- [Urgent]Technical Support Engineer II - 2013/10/18
- 输入星期值,输出英文【多分支】
- getOutputStream() has already been called for this response
- Android杂谈——分隔线
- EDM许可式邮件营销图片使用分析