上一篇简单介绍了“基于安卓的视频遥控小车”,这次详细说说此设计的安卓端的红外遥控部分。
手机和小车之间的通信我用的不是蓝牙是红外遥控,虽然红外的遥控的控制距离只有10m左右,无法绕过障碍物进行遥控。但发射红外遥控信号的手机就架在小车上,可以将手机的红外发射器和红外接收器放在一块固定住。虽然并不是所有的安卓手机都有红外发射器,但都有3.5mm的耳机接口,红外信号的38kHz频率在音频范围内,可以用耳机接口外接的红外发光二极管发射红外遥控信号。如果使用蓝牙来完成对小车的控制,小车上需要配备蓝牙模块与手机进行配对通信。而且并不是所有的手机都支持蓝牙,早期的一些安卓智能手机就不支持蓝牙。而且蓝牙需要配对连接,红外遥控无需配对连接,省去等待时间。相比蓝牙模块,红外模块成本更低。所以采用红外遥控模式。

上边说的都是后话了,当初之所以用红外,是因为我一开始用的不是OPPO A51 ,用的是酷派8076D。那会儿A51还用着呢,这个酷派手机有WiFi但没有蓝牙,所以手机和单片机之间的通信就成了问题。

当时的小车还是这个样子

我从网上搜了好多解决方案,智能手机是开发完成的产品,留出的接口不多,也只有USB口和耳机口:

一,用手机的USB口,但我发现酷派8076D不支持OTG,然后又从网上搜说是厂家只是删除了配置文件,我试了试,还是不行,它硬件上应该也没有升压电路(手机电池一般3.7V,USB是5V供电)。这部分参考使用android IOIO和安卓手机制作视频遥控小车(控制灯的开关、实时视频传输、方向控制)

二,用耳机口,这个网上也有例子一文读懂Android/iOS手机如何通过音频接口与外设通信,他这种方案是双工通信,但这个吧,涉及到信号处理,和数学打交道,鄙人数学渣渣。再者得买个这种外设,no money啊。然后我之前研究过遥控精灵(ZaZaRemote),不支持红外遥控的手机,在耳机孔插个红外发射头(smart zaza)就行了。这种方案是单工通信,小车配套上红外一体化接收头就可以遥控小车移动。不过不同手机的耳机口驱动力不一样,有的驱动不了红外发光二极管(压降1.4V左右),我的酷派就驱动不了,我直接把二极管接在手机喇叭上。

最后,选择了音频口发射红外信号这种方案。其实造车之前,就开始在研究红外了,那会儿考四六级和期末英语考试都是用的红外耳机,就想着期末英语怎么作弊(^_−)☆,因为听力就是课本上的。教室有个红外发射器,后来查了些资料发现就是音频范围,把喇叭拆了接上红外发光二极管,就能用红外耳机听到声音。不过没用在作弊上,因为功率太小了(酷派手机喇叭改的),盖不过教室的。

音频转红外这块,我还没做好,我只是录了红外遥控信号的音频文件,然后播放。但我发现准确率大概只有八成,感觉这东西涉及到傅里叶变换,音频是正弦波,红外信号是方波,直接用音频驱动是有误差的吧,我也不是很懂,数学不好。网上我搜到这篇是用安卓实现的安卓手把手教你学习并实现 安卓耳机口音频转红外发射,但我是用底层C语言实现的,用的C4droid写的在手机上运行,参考的这篇 OpenSL ES范例,无java代码,纯C

再后来,OPPO A51不用了,就把它用在小车上。OPPO A51支持红外遥控,所以不用那么麻烦。参考这篇Android编程红外编程——红外码详析
单片机红外解码程序参考Android遥控器开发,这个后边有单片机红外解码程序。

因为Android4.4及以上才有ConsumerIrManager类用来操控红外设备,所以以下程序是基于Android 5.1系统的OPPO A51手机开发和测试的。

首先从系统服务中获取到ConsumerIrManager服务。

IR=(ConsumerIrManager)getSystemService(CONSUMER_IR_SERVICE);

然后将要发送的红外码存入数组中

//0x73int[] pattern2 = { 9000, 4500, 560, 560,     560, 560,     560, 560,     560, 560,     560,560,     560, 560,     560, 560,     560, 560, 560, 1690,     560, 1690,     560, 1690,    560, 1690,     560, 1690,     560, 1690,     560, 1690,     560, 1690,
/*0001 1000*/560, 560,    560, 560,     560, 560,     560, 1690,     560, 1690,     560, 560,     560, 560,     560, 560, 560, 1690,     560, 1690,     560, 1690,     560, 560,     560, 560,     560, 1690,     560, 1690,     560, 1690, 560, 42020, 9000, 2250, 560, 98190 };

一种交替的载波序列模式,通过毫秒测量
 引导码,地址码,地址码,数据码,数据反码

第三行数据码反置,比如0x12=0001 0010反置为 0100 1000
可能和接收有关系,只有反置了之后才能接收正常

最后通过如下方法最终发送红外信号。

mCIR.transmit(hz, pattern2);//后 

transmit(int carrierFrequency, int[] pattern)  :此方法控制手机产生 carrierFrequency为频率的,以pattern为红外开关的时间数组,发送红外信号。(例如:transmit(38000,{100,200,300,400})    将会产生一个频率为38KHz的红外信号,信号的电平高低为 100us高电平,200us低电平,300us高电平,400us低电平。注意pattern的数据个数要为偶数个,不然报错。)。

手机端红外发射功能的程序流程图如下图所示。

最后再放两张图

还可以参考以下链接

我也DIY一个Android遥控器-全部开源

手机当万能遥控器-自制“遥控精灵”外设

摄像头开发部分详见基于安卓的视频遥控小车——车载安卓开发详解

基于安卓的视频遥控小车——红外遥控部分相关推荐

  1. 基于安卓的视频遥控小车——电脑端开发

    基于安卓的视频遥控小车的电脑端程序采用Java语言编写,Java可以做到一次编译到处运行,因为Java程序是在Java虚拟机中运行的,和平台无关,只要平台上有相应的Java虚拟机. 本设计中安卓手机是 ...

  2. ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车红外遥控实验

    在下载到开发板之前要选择好板和端口,具体参见: ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 -- Arduino相关设置 注意 红外遥控程序注意将IRremote 复制到ARDuino安装 ...

  3. 基于Arduino Uno开发板的红外遥控开发

    基于Arduino Uno开发板的红外遥控开发 1 准备 1.1 硬件与软件 1.2 走线 2 代码 2.1 ReceiveDump 2.2 SendRawDemo 1 准备 1.1 硬件与软件 单片 ...

  4. 基于短消息的远程家电红外遥控系统

    基于短消息的远程家电红外遥控系统 通过远程广域网控制家电设备是信息家电的主要发展方向之一.由于价格低廉.覆盖面广.使用方便等原因,短消息平台已经成为远程家电控制的重要方法. 本文研究和开发了一种基于短 ...

  5. 嵌入式Linux红外遥控,树莓派红外遥控 (lirc、gpio-ir)—— 一篇就够了!

    超简单!树莓派红外遥控配置 前言 第一步:驱动配置(/boot/config.txt) 第二步:安装lirc,并配置 第三步:测试 第四步:按键配置(/etc/lirc/lircd.conf) 第五步 ...

  6. 基于STM32F103的树莓派ROS小车——PS2遥控程序解析

    基于STM32F103ZET6的PS2遥控ROS小车程序解析 序言 1. PS手柄介绍 2. 使用说明 2.1 引脚说明 2.2 时序图分析 3. 手柄测试 4. 程序解析 5. 仿真 6. 源码链接 ...

  7. 基于单片机HX711电子秤自动计价系统设计-基于单片机GPRS远程测控系统设计-818基于单片机循迹避障无线遥控蓝牙智能小车-基于单片机24s倒计时篮球积分器系统-基于单片机智能洗衣机控制系统

    816基于单片机HX711电子秤自动计价系统设计 本设计使用高精度电阻应变式压力传感器,用A/D转换器HX711(HX711数据手册)对传感器信号进行调理转换.AT89s52(AT89s52数据手册) ...

  8. 基于stm32的红外遥控

    内容分三个部分: (1)红外遥控协议 (2)硬件连接 (3)代码 1.红外遥控协议 红外遥控是一种无线.非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备 ...

  9. 毕业论文 | 基于安卓手机蓝牙控制的智能小车设计(源代码)

    博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 预告:源代码.论文.电路图设计链接 ...

  10. android智能小车 论文,基于安卓手机蓝牙控制的智能小车设计毕业设计(论文).doc...

    编 号: 审定成绩: 毕业设计(论文) 设计(论文)题目: 学院:学 生 姓 名 :专 业 :班 级 :学 号 :指 导 教 师 :答辩组 负责人 : 填表时间:年月 摘 要 随着物联网的兴起,And ...

最新文章

  1. python断点调试不起作用flask_关于python的flask框架下的调试
  2. 怎么在idea中找实现类
  3. 如何写单片机的寄存器,这篇文章带你入门。
  4. 3dsmax子菜单无法选择_3DsMax—用平面图片制作3D模型
  5. 国基金评委:关键科学问题的凝练不到位,容易被评审专家“灭掉”
  6. 如何将一个目录下的所有文件,合并成一个文件
  7. [20171220]toad plsql显示整形的bug.txt
  8. python文件之间如何互相通信_不同的類和.py文件之間的python通信
  9. 我常用的crontab命令
  10. 一份神奇的礼物(1)
  11. 最小生成树(最小支撑树)算法
  12. mysql全称量词_数据库基础lt;三)标准语言SQL-一团网
  13. SQP21-19-10-1CC-18高压定量叶片泵
  14. requirement生成和使用
  15. Linux下使用Shell脚本实现反向ssh自动交互
  16. 2019展望|二手车电商:停不下来的混战,但是大家都要准备过冬了
  17. 永恒python奇美拉_利用USearch去除嵌合体(chimeras)
  18. C++数据结构:循环队列基本运算的实现
  19. 纯正贵族,英国女王到底多有钱?
  20. 10.7 IO 流 | 转换流 Flie

热门文章

  1. 南京市公安局电子警察系统数据库扩容和异地灾备公开招标采购公告
  2. 前端用ps创建画布的分辨率应该设置的值
  3. java jdk oracle官网历史版本下载链接
  4. 2021.1.19上海冬令营day2
  5. JavaScript throw 语句
  6. BPM实例分享——金额规则大写
  7. 可在线接收验证短信的网站
  8. html5页面命名,html命名规则
  9. hau 1874 畅通工程续
  10. 第四章—密钥管理与分配