安卓手机遥控器控制系统设计Word下载.docx
- 文档编号:16995717
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:29
- 大小:1.88MB
安卓手机遥控器控制系统设计Word下载.docx
《安卓手机遥控器控制系统设计Word下载.docx》由会员分享,可在线阅读,更多相关《安卓手机遥控器控制系统设计Word下载.docx(29页珍藏版)》请在冰豆网上搜索。
设计要求
本设计主要研究家用电器的红外遥控器编码格式和编码压缩算法,以便满足市场上各式各样品牌的遥控器。
具体要求如下:
1.实现安卓手机应用控制音频口产生相应的脉冲信号。
2.制作音频红外发射器,将相应的脉冲信号转成红外光发射出去。
方案选择
方案一
方案一,采用信号功率无放大方式。
即安卓手机产生的脉冲信号直接输出到音频口,无需功率放大器。
方案二
方案二,采用信号功率放大方式。
即安卓手机产生的脉冲信号经过功率放大后输出到音频口,无需功率放大器。
方案比较与选择
方案一,采用直接输出方式,硬件设计极为简单,制作成本低,但是兼容性较差,因为目前大部分智能手机系统的音频口输出功率有限,不足以满足本设计红外发射管所需的功率。
发射管的发射功率小,可能导致遥控距离近,遥控失灵等不良现象,直接影响到实际的使用效果,所以本设计选择方案二。
2.软件设计
红外传输协议
研究了众多的家电红外遥控装置,发现它们大多遵循相似的通信协议。
如图2-1所示数据格式包括了引导码、用户码、数据码和数据码反码,编码总占32位。
数据反码是数据码反相后的编码,编码时可用于对数据的纠错。
第二段的用户码也可以在遥控应用电路中被设置成第一段用户码的反码。
图2-1红外传输数据格式
编码位定义
用户码或数据码中的每一个位可以是位’1’,也可以是位’0’。
如图2-2所示区分’0’和’1’是利用脉冲的时间间隔来区分,这种编码方式称为脉冲位置调制方式,英文简写PPM。
脉宽调制的串行码,用脉宽为0.56ms、间隔0.565ms、周期为1.125ms的组合表示二进制的“0”;
用脉宽为0.56ms、间隔1.69ms、周期为2.25ms的组合表示二进制的“1”。
图2-2编码位定义
载波参数
载波频率Fcar=38KHz,占空比=T1/Tc=1/3,波形如图2-3
图2-3载波波形
实际波形
载波波形
图2-4实际载波波形图
调制后的波形
图2-5调试后的波形图1
图2-6调试后的波形图2
系统用户操作界面总体设计
图2-7系统用户操作界面结构图
图2-7为本设计的界面结构图,由于红外线通信与无线、蓝牙或者wifi通信有所不同,它是短距离、点对点直线数据传输,并且不具备穿墙性能,不会出现邻居操作时干扰到自家用电设备的情况[4],因此无需设置用户,即装即用,即只需安装此软件便可立即使用,无需注册用户、用户登录等步骤[8]。
由于每种电器的遥控器有所不同,如空调遥控器主要由开关、温度加减、定时等功能,电视遥控器具有调音量、上下调电视台、选择电视台等功能,因此对应也需要有不同的遥控器,所以本设计的应用软件首界面为电器类型选择,用户可以通过此界面快速选择自己要操控的电器类型;
选择了电器类型后便是对应电器的遥控器。
基本上的android手机没有内置红外发送与接收模块,本设计是采用智能手机外接红外发射头[9]。
也正是如此,google官网没有可调用的API,网络上的资源甚少,也稍有书籍介绍相关知识,这无疑加大了开发难度。
源代码的难度在于红外的发送与接收,其余就是按钮的响应。
具体代码见附录。
选择电器类型界面
图2-8选择电器界面
图2-8为电器选择界面,采用网格视图GridView来布局,网格视图是按行、列显示组件,GridView与ListView类似,都是采用适配器Adapter来提供显示数据,并且都可以显示不固定条目的数据,这也意味着想要添加一个条目的数据相当容易,也就是说现在可能只开发电视、空调、风扇和DVD遥控器,如果后面想加更多的电器无需重新布局,只要在源代码增加需要的数据就可以了。
既然GridView和ListView类似,那为什么本设计采用GridView而不采用ListView呢?
ListView以垂直列表的形式列出需要显示的数据,通常行高度比较小,GridView是以表格的形式列出需要显示的数据,通常用于显示图片,而本设计中选择电器需要每种电器有较大的点击空间,以方便用户操作,并且使用图片作引导,给用户良好的视觉效果,具有更人性化的用户界面,因此选用了GridView。
各个类型遥控介绍
空调遥控界面
图2-9空调遥控界面
图2-9为空调遥控界面,父布局采用垂直线性布局LinearLayout,此布局内又分四部分,如上图右,第一部分又采用了相对布局RelativeLayout,占父布局的1/10,用一个TextView来显示“空调遥控器”,并使之水平居中;
第二部分采用了水平线性布局,占父布局的3/10,用一灰色图片作为背景,此布局内有两个部分,一个部分为指示图标,另一部分为温度指示部分;
第三部分采用水平线性布局,占父布局的2/5,此布局内有三部分,一部分是显示开关按钮和风量按钮,一部分是调节温度按钮,还有一部分为模式、风向按钮;
第四部分采用水平线性布局,占父布局的1/5,此布局内有4个按钮,各占此布局的1/4。
以下是空调遥控界面各控件说明:
①TextView,显示遥控器类型;
②ImageView,用于显示制冷或者加热;
③ImageView,用于显示是否加湿;
④ImageView,用于显示温度;
⑤Button,用于打开或关闭空调;
⑥Button,用于风量;
Button,用于将温度调高;
⑧Button,用于将温度调低;
⑨Button,用于调节加湿与否;
Button,按下为左右摆风;
11.Button,按下为上下摆风;
12.Button,加热;
13.Button,制冷;
14.Button,设置定时时间;
15.Button,其余按钮。
电视遥控界面
图2-10电视遥控界面
图2-10电视遥控界面为电视遥控界面,父布局采用垂直线性布局,此布局内又分四部分,如上图右,第一部分又采用了相对布局RelativeLayout,占父布局的1/10,用一个TextView来显示“电视遥控器”,并使之水平居中;
第二部分采用了相对布局,占父布局的1/5,此布局中有两个按钮,一个靠父布局左对齐,并与父布局的左边相聚10dip,一个靠父布局右对齐,并与父布局的右边相聚10dip;
第三部分采用水平线性布局,占父布局的1/2,此布局内有三部分,一部分是显示调节目按钮,一部分是方向按钮,还有一部分为调节声音按钮;
②Button,用于打开或关闭电视机;
③Button,用于切换TV与AV;
④、⑤、⑧、⑨Button,用于调电视台;
⑥、
、
、11.Button,用于调音量;
12.Button,数字按钮;
点开即可出现数字按钮与一个输入框,可在输入框输入电视台名称,即可选择输入相匹配的电视台。
用户往往记不住某个电视台具体是什么数字,但有此输入框后无需一台一台上调或下调找某个电视台,有此输入框后相当方便、快捷;
13.Button,详细菜单;
14.Button,静音按钮;
16.15.Button,其余按钮。
DVD遥控界面
图2-11DVD遥控界面
图2-11为DVD遥控界面,父布局采用垂直线性布局,此布局内又分五个部分,如上图右,第一部分又采用了相对布局RelativeLayout,占父布局的1/10,用一个TextView来显示“DVD遥控器”,并使之水平居中;
第二部分采用了相对布局,占父布局的3/20,此布局中有两个按钮,一个靠父布局左对齐,并与父布局的左边相聚10dip,一个靠父布局右对齐,并与父布局的右边相聚10dip;
第三部分采用水平线性布局,占父布局的1/2,此布局内有三部分,一部分是菜单按钮和静音按钮,一部分是方向按钮,还有一部分为调节声音按钮;
第四部分采用水平线性布局,占父布局的3/20,此布局内有2组按钮,各占此布局的1/2,一组为暂停、开始按钮,一组为快退、快进按钮;
第五部分采用线性布局,占父布局的1/10,此布局内有3组按钮,第一组为数字按钮,占此布局的1/4,第二组为上一曲、下一曲按钮,占此布局的1/2,第三组是扩展按钮,占此布局的1/4。
风扇遥控界面
图2-12为风扇遥控界面,相对比较简单,在此不做说明。
图2-13风扇遥控界面
3.硬件设计
硬件系统的总体设计
硬件设计框图
图3-1硬件设计框图
电路原理图
图3-2电路原理图
本硬件系统主要分为3大部分,详见图3-2分别是由红外发光二极管组成红外线发射部分、低功耗功率放大模块、锂电池充电智能管理模块组成的电源供电模块。
系统各个模块介绍
红外线发光二极管
图3-3红外发光二极管结构图
红外线发光二极管的外形跟普通发光二极管LED极其相似,红外线发光二极管和发光二极管不同的是红外线发光二极管发出来的光线肉眼是看不到的[1]。
PN结是红外线发光二极管的重要组成部分。
PN结是采用不同的掺杂工艺,在同一块硅或者锗的半导体基片上使其一边形成N型半导体,另一边形成P型半导体,在P型半导体和N型半导体结合后,在N型半导体电荷区内电子占大多数而空穴较少,而P型半导体电荷区内空穴占大多数而电子较少,在P型半导体和N型半导体的交界处呈现出了空穴和电子的浓度差异[2]。
在P型半导体和N型半导体的交界处附近形成离子薄层,由这个离子薄层形成的空间电荷区就称为PN结,也称耗尽层[7]。
PN结具有单向导电性,是红外发光二极管的主要部分和物质材料基础[7]。
功率放大电路
图3-4功率放大电路
图3-4为低功耗双级功率放大电路。
该功率放大电路采用低功耗设计方案,在音频口无输入时Q1三极管处于截止状态,三极管Q2基极电压等于电源电压并且等于三极管Q3集电极电压,此时Q3三极管发射结处于截止状态,因此该电路在音频口无输入时静态电流极低可视为零,静态功耗极低。
该低功耗设计方案不但可以减少消耗电池电能,还可以延长红外发光二极管的寿命。
电源模块
图3-5电源模块
图3-5为本设计中的红外发射硬件模块的供电系统的电路原理图。
TP4057锂电池管理芯片是该电源模块的主要组成部分,TP4057一款完整的单节锂离子电池充电器,带电池正负极反接保护,采用恒定电流/恒定电压线性控制[6]。
其SOT封装与较少的外部元件数目使得TP4057便携式应用的理想选择。
TP4057可以适合USB电源和适配器电源工作。
由于采用了内部PMOSFET架构,加上防倒充电路,所以不需要外部检测电阻器和隔离二极管。
热反馈可对充电电流进行自动调节,以便在大功率操作或高环境温度条件下对芯片温度加以限制。
充满电压固定于4.2V,而充电电流可通过一个电阻器进行外部设置。
当电池达到4.2V之后,充电电流降至设定值1/10,TP4057将自动终止充电。
当输入电压(交流适配器或USB电源)被拿掉时,TP4057自动进入一个低电流状态,电池漏电流在2uA以下。
TP4057的其他特点包括充电电流监控器、欠压闭锁、自动再充电和两个用于指示充电结束和输入电压接入的状态引脚。
以下是400mA电流对600mAh的锂电池充电过程的曲线图。
图3-6TP4057
TP4057封装引脚图3-6,以下是对每个引脚的详细功能。
CHRG:
漏极开路输出的充电状态指示端。
当充电器向电池充电时,CHRG管脚被内部开关拉到低电平,表示充电正在进行;
否则CHRG管脚处于高阻态。
GND:
地。
BAT:
充电电流输出。
该引脚向电池提供充电电流并将最终浮充电压调节至4.2V。
该引脚的一个精准内部电阻分压器设定浮充电压,在停机模式中,该内部电阻分压器断开。
VCC:
正输入电源电压。
该引脚向充电器供电。
VCC的变化范围在4V至9V之间,并应通过至少一个1μF电容器进行旁路。
当VCC降至BAT引脚电压的30mV以内,TP4057进入停机模式,从而使IBAT降至2μA以下。
STDBY:
电池充电完成指示端。
当电池充电完成时STDBY被内部开关拉到低电平,表示充电完成。
除此之外,STDBY管脚将处于高阻态。
PROG:
充电电流设定、充电电流监控和停机引脚。
在该引脚与地之间连接一个精度为1%的电阻器RPROG可以设定充电电流。
当在恒定电流模式下进行充电时,引脚的电压被维持在1V。
PROG引脚还可用来关断充电器。
将设定电阻器与地断接,内部一个2.5μA电流将PROG引脚拉至高电平。
当该引脚的电压达到2.7V的停机门限电压时,充电器进入停机模式,充电停止且输入电源电流降至40μA。
重新将RPROG与地相连将使充电器恢复正常操作状态。
图3-7是TP4057的内部结构图。
图3-7内部结构图
4.系统制作与调试
制作所需的元器件
红外线发光二极管、音频插头、锂电池、锂电池管理芯片TP4057、红色和绿色发光二极管、USB输入插座、阻容器件等。
PCB设计
图4-1系统PCB
这是我第一次发到厂家做的PCB板,第一眼看到它的时候有点激动。
在设计的过程中由于没有考虑到功率放大器静态功耗的原因,发射模块在没有使用的过程中电池的电量也会随着时间慢慢得减少,在老师和同学的帮助下,经过长时间的排查发现了该处设计错误。
PCB在排列的时候尽量以“横平竖直”的排列方式,增强抗干扰能力。
另外还遇到一个比较苦恼的问题是不同封装工艺型号的红外发光二极管的辐射角度有所不同,前期设计的时候采用的红外发光二极管的辐射角度较小,在使用的过程中红外发射管需要比较精确的对准接收头才能使用。
在设计的过程中学到了不少的PCB设计技巧,本次PCB设计让我再次感悟到了电以及电路的奥妙。
实物制作
图4-2实物图1
图4-3实物图2
图4-4实物图3
制作与调试中遇到的问题及解决方法
在焊接音频插头时,由于没有考虑到区分音频的地和左右声道,误焊接了,经过调试后发现并修改了此错误。
在焊好电路板后,调试的过程中发现不能正常的工作,后来经过用万用表等仪器仔细排查后发现在功率放大电路的后级三极管的集电极引脚虚焊。
5.总结
本设计从实际生活的角度出发,解决了目前生活上的现实问题[10]。
在开始做本设计之前有一个设想,要是能用WIFI的方式来制作遥控器会更理想,因为现在目前大部分家庭都有WIFI。
小米相信大家应该都不陌生,小米路由硬件配置的强悍型,足以用来开发家庭服务器,再结合传感器,就可以整合成现代化的数字家居。
在实际的组装和调试过程中,会有许多的问题出现。
一些小细节的疏忽,就会让你的整个模块都会宣告失败。
所以,我花费了很大的时间和心力在调试的过程中,解决一个问题我就离成功就更进一步了。
经过我的不懈努力,终于完成了!
6.附录
附录1系统原理图
图8-1系统原理图
附录2主要代码
packagecom.example.sumxingir;
importjava.io.FileInputStream;
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.Map;
importorg.apache.http.util.EncodingUtils;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.content.res.Resources;
importandroid.graphics.Color;
importandroid.os.Bundle;
importandroid.os.Environment;
importandroid.view.LayoutInflater;
importandroid.view.View;
importandroid.view.ViewGroup;
importandroid.widget.AdapterView;
importandroid.widget.ArrayAdapter;
importandroid.widget.GridView;
importandroid.widget.ImageView;
importandroid.widget.RelativeLayout;
importandroid.widget.TextView;
publicclassroomextendsActivity
{
StringTemp;
String[]STR=newString[2];
String[]rv=newString[2];
privateMyAdapteradapter=null;
privateArrayList<
Map<
String,Object>
>
array;
GridViewlayout;
String[]Kt=newString[20];
//Kt1整体代码
intKtonof=0;
///Kt1开关;
String[]base=newString[]{“”,”"
”"
};
///0电平宽度1电平宽度;
高电平宽度;
intcheck=0;
String[]Ktmode=newString[10];
//空调模式
String[]Ktwendu=newString[30];
//温度变化量
String[]Ktwind=newString[10];
//风变化量
String[]Ktp3=newString[]{“”,”"
//空调其它按键
String[]Ktp4=newString[]{“”,”"
String[]Ktt2=newString[]{“”,”"
intCount;
String[]name=newString[40];
int[]image=newint[40];
String[]code=newString[40];
String[]mode=newString[5];
//android.view.ViewGroup.LayoutParamslp;
//声明控件参数获取对象LayoutParamslp;
@Override
protectedvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.room);
GridViewlayout=(GridView)findViewById(R.id.gridview);
RelativeLayoutview=(RelativeLayout)findViewById(R.id.view);
android.view.ViewGroup.LayoutParamslp;
lp=view.getLayoutParams();
//获取控件参数:
lp=控件id.getLayoutParams();
lp.height=0;
view.setLayoutParams(lp);
//setContentView(layout);
Intentintent=getIntent();
Temp=intent.getStringExtra(“strcode”);
setTitle(Temp);
setTitleColor(Color.GREEN);
Temp=readFileSdcard(Temp.trim());
STR=Temp.split(“\r\n”);
//文件处理
Count=0;
for(inti=0;
i<
STR.length;
i++)
{
if(STR[i].trim().length()<
10){continue;
}
if(STR[i].substring(0,2).equals(“**”)){continue;
if(STR[i].substring(0,2).equals(“++”))
{
if(ST
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 手机 遥控器 控制系统 设计