DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1258|回复: 0
打印 上一主题 下一主题

[待整理] DIY的乐趣:打造你自己的WiFi“云”播放器,提供软硬件设计方案

[复制链接]
跳转到指定楼层
楼主
发表于 2015-4-27 08:16:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1.项目背景
        随着互联网的发展,网络应用已经渗透到人们生活的各个方面。人们正在通过各种设备享受着网络带来的便利。“云”平台,“云计算”等技术的应用,使得我们可以通过更简单的设备享受到更加丰富多彩的网络服务。我们的Cloud Player正式基于“云”服务这样的概念,实现一个Server和Client结构的音乐播放器。播放器本身不存储音乐文件,用户可以通过从服务器下载播放列表来获得所需类型的音乐,然后通过无线的方式播放服务器端的音乐文件。
         
        2.项目方案
        2.1硬件设计方案
        2.1.1主要硬件模块
           
  •                                         MCU: PIC32 (80 MHz 32位MIPS处理器)
           
  •                                         WiFi模块
           
  •                                         液晶屏
           
  •                                         音频放大
           
  •                                         扬声器
           
  •                                         键盘/按键
         
        2.1.2硬件设计框图
       

         
        2.2软件设计方案
        2.2.1关于WiFi无线通信
        软件按照部署划分可以分为PC上的服务程序和Cerebot 32MX4上的Cloud Player程序,按照功能模块细分这两部分涉及到的主要有PC端:Qt/gtk界面设计、linux网络编程、linux WiFi通讯驱动、数据库操作、文件传输以及PC端对外提供服务的原语的设计;CloudPlayer 端:WiFi模块的驱动、网络协议栈的移植、音频解码、液晶屏驱动、按键驱动以及获取服务原语的设计。
         
        系统网络结构示意图如下所示:
       

        PIC开发板(客户端)WiFi通信

         
        WiFi通信作为基本的网络功能,是云播放器多媒体文件传输实现的基础。在实现上主要有4个层次:
         
           
  •                                         射频收发
           
  •                                         调制解调层
           
  •                                         介质访问层/MAC
           
  •                                         协议栈控制层
         
        其中射频收发、MAC层和调制解调将在开发商的WiFi模块产品中完成,通信程
        序开发的重点集中在协议层和应用的实现。通过硬件模块的SPI接口控制,WiFi设备将完成设备初始化、信息查询、设备探测和连接建立等过程;通信过程则需要进行数据的收发和通信状态管理。其中数据收发将采用查询式发送和中断式接收的方法;通信状态管理则需要管理连接断开、数据校验纠错等过程。WiFi通信基本软件流程如图所示:
         
       

         

        在WiFi通信的软件系统中,驱动程序是基础也是重点,这一部分将详细参照模块生产厂商的相关资料进行开发。
       

        图、WiFi协议栈基本层次结构

         

        PC(服务器端)WiFi通信
        服务器端将使用带WiFi的笔记本进行开发。PC端开发将建立在Linux操作系统之上,利用Linux网络API对WiFi模块数据收发、连接管理等进行控制。同时,服务器需要建立多进程/线程的C/S结构服务程序,以满足多用户WiFi接入的需要求。
         
        2.2.2服务模型
        系统服务模型的基本单位包括服务器端(PC)、客户端(PIC32开发板)以及wifi通信媒介。通信媒介既可由基站(Base Station,BS)、访问点(Access Point,AP)进行协调,也可采用自由直连(ad hoc)方式。
         
        云播放系统中,客户播放器(PIC32开发板)的主要数据,包括用户信息,收藏列表,播放、搜索和其他操作记录以及用于播放的音频文件,都放置在云端存储中。客户端启动时,首先搜索范围内可用wifi网络,选择合适的AP完成网络加入(必要时提供密钥)。通过wifi网络建立与云端服务器的连接,完成身份验证,继而进行收藏列表下载、选择曲目播放和音乐搜索等功能。
         
        云播放系统服务模型中,需要综合考虑客户端与wifi网络AP、客户端与云端服务器的交互。典型的需求约束包括如下所述:
         
        客户端通过扫描识别可用wifi网络。在预知各网络状态的情况下,自动进行连接。或由用户自主选择加入的网络,必要时需提供网络密钥。
         
        首次联机时,服务器将客户端固化的唯一序列号进行注册,在云端存储上分配用户信息、初始收藏列表及操作列表等相应的空间。
         
        非首次联机时,服务器端根据客户端发送的序列号进行用户收藏列表的推送。
         
        用户选择收藏列表中确定位置曲目开始播放,由服务器端将曲目信息(名称、艺术家、时长、音质、同步歌词等)和音频流通过wifi网络传输至客户端。客户端只进行当前播放范围数据的缓存,并实时解码播放音频流。
         
        收藏列表管理,包括相应曲目的添加、修改和删除操作。客户端操作与服务器端存储进行同步更新。
        服务器端提供音乐搜索功能,客户可根据搜索结果完成新曲目的添加。
         
        服务器端维护连接状态管理。通过周期性查询客户端响应获取当前连接状态,客户端失去连接时,关闭相关的数据传输流和内存中分配空间。
         
        预期可选的高级服务如下所述:
        QoS。客户端音频流媒体的良好播放体验需QoS(Quality of Service,服务质量)的支持,提供实时低延迟、低丢包率抖动的音频传输。可采取的措施包括引入资源预留协议(RSVP)、采用动态组播等方式,wifi协议本身也对QoS提供了一定的原声支持。
         
        负载均衡。对于范围规模较大情况下的云播放系统,采用分布式的CDN(Content Delivery Network,内容分发网络)是减小服务器压力、提高客户端下载速度的有效手段。此时通过DNS技术,将客户请求连接到最近的缓存服务器得到满足,动态的调节网络负载均衡,达到最快的响应和传输速度。
         
        可适应性编码。采用具有可适应性编码的前提是可进行服务器端与客户端实时传输速率的测量。当出现网络拥塞或带宽限制时,将流媒体编码率适当降低。反之,当网络带宽足量或剩余时,调整音频流至高码率,提供更高品质的音乐体验。
         
        根据上述服务模型的分析,确定了已下的通信原语:
                                                                        名称
                       
                                                                        起始方
                       
                                                                        说明
                       
                                                                        WIFI_scan
                       
                                                                        客户端
                       
                                                                        客户端扫描附近范围的可用wifi网络
                       
                                                                        WIFI_netInfo
                       
                                                                        Wifi AP
                       
                                                                        Wifi网络AP返回网络信息,SSID、信道频率等
                       
                                                                        WIFI_connect
                       
                                                                        客户端
                       
                                                                        客户端连接到一确定的wifi网络,需提供SSID,密钥可选。预期应答为WIFI_ack
                       
                                                                        WIFI_close
                       
                                                                        客户端
                       
                                                                        离开已加入的wifi网络,关闭所有连接。预期应答为WIFI_ack
                       
                                                                        WIFI_ack
                       
                                                                        Wifi AP
                       
                                                                        响应客户端请求的应答
                       
                                                                        Cloud_1stAdd
                       
                                                                        客户端
                       
                                                                        首次联机时,客户端通过序列号完成注册
                       
                                                                        Cloud_requestList
                       
                                                                        客户端
                       
                                                                        客户端向服务器端请求收藏列表。预期应答为Cloud_list
                       
                                                                        Cloud_list
                       
                                                                        服务器端
                       
                                                                        服务器传输的收藏列表
                       
                                                                        Cloud_play
                       
                                                                        客户端
                       
                                                                        客户端选择曲目或列表位置请求音频播放
                       
                                                                        Cloud_pause
                       
                                                                        客户端
                       
                                                                        暂停音频播放
                       
                                                                        Cloud_addMusic
                       
                                                                        客户端
                       
                                                                        向列表中添加新曲目
                       
                                                                        Cloud_delMusic
                       
                                                                        客户端
                       
                                                                        删除列表中特定曲目
                       
                                                                        Cloud_search
                       
                                                                        客户端
                       
                                                                        客户端提交搜索关键字,进行音乐查询。预期结果Cloud_searchRes
                       
                                                                        Cloud_searchRes
                       
                                                                        服务器端
                       
                                                                        搜索动作返回的结果集
                       
                                                                        Cloud_state
                       
                                                                        服务器端
                       
                                                                        对客户端连接状态的查询
                       
                                                                        Cloud_ack
                       
                                                                        客户/服务器端
                       
                                                                        积极的响应应答,表示动作得以执行
                       
                                                                         
                       
                                                                         
                       
                                                                         
                       
                                                                         
                       
                                                                         
                       
                                                                         
                       
                                                                         
                       
                                                                         
                       
                                                                         
                       
         
        典型的系统服务交互过程如下所示:
        客户端           AP                服务器端
        WIFI_scan
                        WIFI_netInfo
        WIFI_connect
                       WIFI_ack
        Cloud_1stAdd
                                           Cloud_ack
        Cloud_requestList
                                           Cloud_requestList
        Cloud_play
        Cloud_pause
        Cloud_addMusic                       
                                          Cloud_ack
        vCloud_delMusic                         Cloud_ack
        Cloud_search                        Cloud_searchRes
                                           Cloud_state
        Cloud_ack
         
        2.2.3音频解码
        首先调研一下PIC提供的audio library,看能否满足项目的需要。
         
        2.2.4音频播放
        音频播放采用PmodAMP1——扬声器/耳机放大器,调用PIC的audio libray对接受到的音频文件进行解码,然后经PWM DAC输出到PmodAMP1。
         
        2.2.5液晶屏显示
        液晶屏采用PmodCLS——字符LCD串行接口,通过SPI控制。
         
         
        2.2.6按键驱动
        拟定采用矩阵式按键,采用软件消抖,接受用户输入。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-27 14:50 , 耗时 0.090109 秒, 22 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表