基于OpenWrt的网络校时自动打铃器

嵌入式操作系统

57人已加入

描述

本文将以开源路由系统中最普及的 OpenWrt系统为例,以一个自动打铃器项目为例,详细探讨其作为嵌入式平台二次开发的潜力。

基本原理

以DB120-WG路由器作为嵌入式系统硬件平台,在其上安装基于Linux的开源OpenWrt路由器系统,配置搭建WEB管理平台,利用路由器的USB接口挂载声卡和移动存储设备,当编写软件实现定期校验时,准时驱动声卡发出铃声。其原理图如下图所示。

OpenWrt

硬件平台

自动打铃器的硬件主要由三大部件组成:

①大亚科技公司的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。

OpenWrt

软件平台结构

基本功能如下:

①使用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大功能模块,即公用模块、曲目管理、播放列表管理和系统配置。软件功能模块框图如下所示。

OpenWrt

软件功能模块框图

向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客户端也会重新与服务器同步,获取当前准确时间,因此意外断电不会影响系统正常工作。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分