APP下载

嵌入式远程音乐播放器的设计

2015-05-30李鹏鹏徐伟业

中国新通信 2015年15期
关键词:远程控制

李鹏鹏 徐伟业

【摘要】 随着嵌入式系统的不断发展和网络的广泛普及,智能家居也逐步走入生活。论文从智能家居的理念出发,以现代网络为桥梁,以智能手机为控制平台,以家居音乐播放器为控制对象,对嵌入式音乐播放器的开发以及远程控制作了详细的分析与论述,并给出系统关键技术的设计思路和设计过程。

【关键词】 安卓系统 嵌入式ARM 远程控制

引言

智能家居控制系统以家居电器及家电设备为主要控制对象,利用综合布线技术、网络通信技术、安全防范技术、自动控制技术、音视频技术将家居生活有关的设施进行高效集成,构建高效的住宅设施与家庭日程事务的控制管理系统,提升家居智能、安全、便利、舒适,并实现环保控制系统平台。其中家居电器控制采用弱电控制强电方式,既安全又智能,可以用遥控、定时等多种智能控制方式实现对在家里饮水机、插座、空调、地暖、投影机、音像设备以及新风系统等进行智能控制,用以避免饮水机在夜晚反复加热影响水质,在外出时断开插排通电,避免电器发热引发安全隐患等等。本系统设计正是在这样的背景下产生,并以家居音频设备为控制对象。整个系统的设计是通过随身携带的智能手机利用无线网络和家庭无线路由对嵌入式ARM为核心的音乐播放器进行远程操控。下文是对整个系统的设计原理和设计过程的详细论述。

一、总体方案设计

整个系统由智能手机、路由器、开发板三个部分组成。智能手机通过连接无线信号实现与开发板的通信,这里由于所使用的mini2440开发板缺少无线网卡的支持,所以路由器充当了无线网卡的作用,负责发射无线信号:

1.1 硬件方案

硬件平台选用友善之臂提供的mini2440开发板,处理器采用基于ARM9内核的Samsung S3C2440。由于S3C2440内部配有64M SDRAM,256M NandFlash,所以完全可以胜任内部的音频解码任务。另外,为了保证系统运行时的稳定性,采用了专业的CPU内核电源芯片和复位芯片。相对来说,手机的选择比较自由,只要是安卓系统的智能手机都可以,在APP测试时,要求手机的安卓操作系统是Android2.3版本或以上。

1.2软件方案

要将硬件设备连接并且工作,关键是软件的开发,因此软件开发环境的选择很重要。整个系统的软件开发主要包括操作系统的裁剪和移植、音频播放程序的开发、Android应用的开发三个部分。音频解码采用软件解码。主要是利用CPU进行音频数据的解码,这需要在Linux操作系统下移植一个开源音频解码库--madplay。采用软件解码虽然增加了CPU的开销,但大大缩短了开发时间,而且不需要考虑解码芯片的选择和驱动问题。

智能手机选用了安卓的操作系统,主要考虑到安卓系统是一种基于Linux的自由及开放源代码的操作系统,且市场占有量较高,2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%,全世界采用这款系统的设备数量已经达到10亿台,2014年第一季度Android平台已占所有移动广告流量来源的42.8%,首度超越iOS(运营收入不及iOS)。

二、软件开发

2.1 操作系统裁剪

操作系统的裁剪是系统设计的重点,一个精简的操作系统不仅可以加快系统的开机时间,还能减小CPU的开销,使系统运行的更加流畅。操作系统由uboot、内核、文件系统组成,需要裁剪的部分包括内核(去掉不必要的配置)以及文件系统

2.2 音频解码数据库的移植

madplay是linux下的开源音乐播放器,利用开源解码库libmad实现音频的编解码,目前该播放器除了不支持网络歌曲的播放外,其余功能都支持,如快进、暂停、继续等。开发人员需要自己开发一个自己的可视化界面或者播放器的管理程序,这样使用起来才方便、快捷。系统设计时需要在开发板的ARM内核上运行madplay可执行文件,所以移植madplay也是本次设计的重要环节。

2.3 音乐播放器设计

播放器的核心代码就是音乐的播放程序,在整个行程序运行时的内部主控流程:

父进程负责接收按键信息或者socket信息。监听部分由select()函数完成,当按键或者socket文件描述符发生变化的时候,父进程首先判断按键或者socket信息,根据不同的信息向子进程或者孙进程发送不同的信号。如,父进程收到的按键信息是“暂停”,调用kill()函数向子进程和孙进程发送SIGSTOP信号就可以暂停音乐的播放。

2.4 Android应用程序设计

Android操作系统下设计控制软件可简可繁,这里的界面的设计由于缺少专业UI的支持,所以设计的比较简单。用到的控件主要有Button、TextView、ScrollView、ListView、TabHost,其中前面4个采用常规控制,调用简单,只需在activity_main.xml文件中调用并设置相应的属性(如长、宽、在页面中的位置等)即可。TabHost用起来有点麻烦,这里需要注意两点:

在开发自己的app过程中,主要难点在于新的线程接收服务器返回的信息,其主要的代码如下:

Android部分的设计逻辑明了,算法简单。作为客户端或者命令发送端,只需向服务器发送自己的指令即可。

三、性能测试

系统的运行需要開发板、路由器以及APP三者的配合,路由器和开发板之间通过网线连接。需要设置路由器和开发板在同一个网段。测试中,路由器IP为192.168.1.10,开发板IP为192.168.1.22。经测试,播放器可以通过按键或者APP实现歌曲切换、音量调节、歌曲信息显示、播放模式的切换。并且经过裁剪的操作系统启动速度快,从系统上电到程序运行仅需要20秒。

本系统设计关键在于操作系统的裁剪移植以及加入了手机APP的控制。省去了QT以及内核中不必要的模块,使播放器的开机速度更加快,同时也减小了CPU的资源消耗;加入手机APP的控制,符合目前智能家居的发展趋势,使得播放器使用起来更加的方便、人性化。

系统还存在一个问题未能很好解决。歌曲播放完毕并且切换到下一首后,手机APP测并不能实现播放曲目的更新。

目前,APP上显示的歌曲信息只有三种情况会更新:点击上一首或者下一首、暂停后继续、点击开始播放。试着修改代码,子进程在实现共享内存更新后将歌曲信息发送给APP,但是问题来了,APP和开发板的通信是基于UDP协议,即无连接,通俗的说,每次通信过程,只有当APP发送数据给开发板,开发板收到数据后同时记下了客户端(APP)地址信息,通过地址信息将数据返回给APP。所以如果系统上电后APP并未接入网络,开发板发送数据时将会报错。感兴趣的读者可以在APP发送数据给开发板后设定一个标志位,然后根据这个标志位判断播放下一首歌曲的时候是否要将歌曲信息发送给APP。

参 考 文 献

[1] Matt Welsh & Lar Kaufman,linux权威指南[M] 中国电力出版社 2000 年3月

[2]科波特,LINUX设备驱动程序[M]中国电力出版社

[3]Robert Love,linux内核设计与实现[M] 机械工业出版社 2011年8月

[4]游双,linux高性能服务器编程[M] 机械工业出版社 2013年6月

猜你喜欢

远程控制
基于SMS的汽车远程智能控制系统设计
智能可调节动作识别型节能风扇的设计
水冷发射机冷却系统故障分析及解决方案
盐城地区设计项目与课堂远程互动的方式方法研究
基于GSM的远程控制系统
短波发射台节目传输控制系统及技术改造
变电站远程监控系统的设计
发射机自动控制系统分析及自动化改造