本文将以开源路由系统中最普及的 OpenWrt系统为例,以一个自动打铃器项目为例,详细探讨其作为嵌入式平台二次开发的潜力。
基本原理以DB120-WG路由器作为嵌入式系统硬件平台,在其上安装基于Linux的开源OpenWrt路由器系统,配置搭建WEB管理平台,利用路由器的USB接口挂载声卡和移动存储设备,当编写软件实现定期校验时,准时驱动声卡发出铃声。其原理图如下图所示。
硬件平台
自动打铃器的硬件主要由三大部件组成:
①大亚科技公司的DB120-WG无线路由器,用作控制平台。
②USB声卡,用于音频输出。
③U盘,用于存储铃声音乐。厚度仅为4mm,因DB120-WG的两个USB接口垂直间距很小,使用普通U盘会导致无法同时插入U盘和声卡,故特意使用此超薄型U盘。
本项目基于Linux的开源路由软件OpenWrt(back-fire10.0.3),在其上安装lighttpd+php+mysql、NTP客户端和lighttpd+phd+mysql、NTP客户端和MP3播放器madplay。
软件平台结构
基本功能如下:
①使用NTP客户端定期与网络上的NTP服务器同步,保持精确时钟。
②使用php编写动态页面,完成上传MP3文件并存于U盘,管理播放列表等。这也是本项目软件开发的主要内容。
③后台程序按预定时间调用播放器播放MP3文件,输出铃声音频信号。
在Vmware虚拟机中部署x86版OpenWrt
PC开发环境的准备 实验环境本项目使用php语言可跨平台运行,OpenWrt本身跨平台具有x86版本,因此可在PC虚拟机中直接开发程序,然后移植到路由器中运行,极大地提高了开发效率。使用镜像文件在虚拟机中安装OpenWrt,需从OpenWrt
官网下载OpenWrt-x86-generic-combined-ext2.img.gz文件,再从gz文件中解压出img文件,然后ltraiso将其转换为iso文件,以便在Vmware虚拟光驱中加载使用。接下来的安装与其他Linux发行版本类似。
建立本地opkg源OpenWrt未使用yum、rpm等流行的软件包管理系统,而是采用轻量级的包管理系统opkg。安装软件时需连接互联网软件源下载安装。建立本地源,可加快软件安装速度,减少重复下载。
建立运行环境安装lighttpdWEB服务器。使用opkg安装lighttpd软件包,然后配置相关参数。由于OpenWrt默认安装ht-tptd服务器运行管理界面,为避免与其占用的80端口相冲突,配置lighttpdWEB端口为其他端口,如81。
安装php解析器。
安装Samba3,将WEB主目录作为共享目录发布,在Windows中将该目录映射为网络驱动器。这样可直接在WEB主目录中新建项目,和本地PC虚拟机上开发完全一样,相比通常以交叉编译为主的嵌入式开发方式,极为便利。Samba3软件包安装完成后为解决中文乱码问题,需将字符集由默认的ISO-8859-1设定为utf8。
自动打铃器软件开发 数据库结构设计新建名为songdb的数据库可供自动打铃器软件使用,用于存放曲目数据和播放时间等数据。songdb数据库总体结构中有两个表和一个视图。
表tbpl用于存放响铃(播放项目)数据,主要字段有响铃名称、响铃开始时间、响铃持续时间、播放曲目ID等。表tbsong用来存放曲目数据,主要字段有曲目名称、文件大小等。视图vpl是用IDsong键把表tbpl左连接到表tbsong构成的,以方便查询 *** 作。
phpWEB界面设计WEB界面分4大功能模块,即公用模块、曲目管理、播放列表管理和系统配置。软件功能模块框图如下所示。
软件功能模块框图
向DB120-WG部署程序软件开发完毕后,需向DB120-WG路由器部署程序。
OpenWrt刷机通过WEB界面刷机较便利,适合初学者,但固件大小不能超过8MB。比较大的特殊固件可使用TTL串口刷机。
WinSCP的安装OpenWrt默认安装有SSH和SFTP服务。为便于向路由器输入指令和上传文件,安装WinSCP软件。Win-SCP是一个Windows环境下使用SSH的开源图形化
SFTP客户端,同时支持SCP协议。基于putty、filezila、openssl等开源软件,它的主要功能就是在本地与远程计算机间安全的复制文件。
代码上传和修正使用WinSCP新建WEB主目录,上传自动打铃器
WEB界面的php代码文件,并针对虚拟机环境和真实路由器目录结构的差异作适当修改。
数据库的移植先导出虚拟机中的数据库,在命令行下利用mysql-dump工具,可把数据库导出。代码如下:
mysqlump-uroot-psongdb>songdb.sql
然后在路由器中导入数据库,在远程登录路由器后,在命令行下启动mysql,在sql命令行下输入导入数据库的命令:
>creatdatabasesongdb;
>usesongdb;
>sourcesongdb.sql
至此,RouterRing项目已能在路由器上正确运行。在实际使用中,无论用户是通过有线还是无线方式接入网络,也不管是在内网或是外网,只要能与路由器所在的网络通信,就能通过WEB界面方便地进行控制。用户可以在校园网内任意办公室控制放置于播音室的路由器。上
传MP3曲目,设置好特定的响铃时间,路由器就能准时响铃。即使发生断电等意外情况,因为MP3和配置文件都存放于U盘,数据不会丢失。待恢复供电后,系统重新读出配置文件,NTP客户端也会重新与服务器同步,获取当前准确时间,因此意外断电不会影响系统正常工作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)