美文网首页嵌牛IT观察
嵌入式Android小项目之万能手机遥控器详解

嵌入式Android小项目之万能手机遥控器详解

作者: 遇晓 | 来源:发表于2017-12-19 20:21 被阅读0次

    转自嵌入式ARM

    学号:16020311003  姓名:杨虎成

    【嵌牛导读】嵌入式系统能作用在电子产品的各个领悟。

    【嵌牛鼻子】红外有优点也有缺点

    【嵌牛提问】嵌入式系统如何作用在手机遥控系统中

    【嵌牛正文】

    在很久很久以前,手机是有红外功能的,后来随着蓝牙技术的成熟,红外逐渐被蓝牙取代,不再是标配了。

    红外本身还是有些优点,比如操作简便,成本低。要想在手机上添加红外功能,就要外接一个转换模块。

    现在市面上通过Headphone音频口外接MCU实现音频转红外的方案很多。

    我们的目标是做一个具有学习功能的Android手机遥控器,通过音频转红外,控制大多家电设备。

    1. 硬件设计

     

    · 右声道输出稳频正弦波,为单片机提供电源

    · 左声道作为tx数据线,phone到mcu

    · mic线作为rx数据线,mcu到phone

    · command线,接地

    右声道电源供电存在问题,Android手机千差万别,手机里的音频codec模块也不尽相同,

    D/A转换的放大倍数(增益)也不同,表现在有些人的手机上铃声大,有些铃声小。

    这个值是在Android系统底层驱动里设置,一般无法用上层软件改变。

    用galaxy nexus,nexus 4都由于放大倍数不够而导致供电不足,而三星Galaxy S3就能提供足够的电压,一些山寨机的音量也足够大。

    所以考虑更改硬件设计,加入钮扣电池,由硬件直接供电,这样比较稳妥。

    2. 数据编码

    自定义波形组织形式,这里提供两种频率,一种表示下一个bit不变,另一种表示下一个bit变化。

    自定义一帧数据的组包形式,一般有包头,包尾,校验位和数据。

     

    3. 核心代码

    两个线程用来收发数据包

    [java] view plain copy

    1. Runnable _outputGenerator = new Runnable() {       

    2.    public void run() { 

    3.        Thread.currentThread().setPriority(Thread.NORM_PRIORITY); 

    4.         

    5.        while (!_stop) { 

    6.            updateOutputBuffer(); 

    7.            _audioTrack.write(_stereoBuffer, 0, _stereoBuffer.length);   

    8.        } 

    9.    } 

    10. }; 

    11. 

    12. Runnable _inputProcessor = new Runnable() { 

    13.    public void run() { 

    14.        Thread.currentThread().setPriority(Thread.MIN_PRIORITY); 

    15.         

    16.        while (!_stop) { 

    17.            int shortsRead = _audioRecord.read(_recBuffer, 0, _recBuffer.length); 

    18.            processInputBuffer(shortsRead); 

    19.        } 

    20.    } 

    21. }; 

    提供正弦波输出

    [java] view plain copy

    1. double powerMutiplier = Math.PI * (double)_powerFrequency / (double)_sampleFrequency * 2; 

    [java] view plain copy

    1. _stereoBuffer[i*2+1] =  (short) boundToShort( 

    2.        Math.sin(powerMutiplier * _powerFrequencyPos++) * 32760);   

    相关文章

      网友评论

        本文标题:嵌入式Android小项目之万能手机遥控器详解

        本文链接:https://www.haomeiwen.com/subject/dtiiwxtx.html