本文将以开源路由系统中最普及的 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客户端也会重新与服务器同步,获取当前准确时间,因此意外断电不会影响系统正常工作。
一加5手机评测:强劲性能 拍照/续航更出色
PWM是脉宽调制与死区
Master创历史,人工智能专利究竟已经到如何境界?
电动汽车与传统汽车非得争个你死我活吗?
华为mate10明天发布:线下开始宣传,顶配版价格曝光比肩iPhoneX
基于OpenWrt的网络校时自动打铃器
王传福回忆比亚迪创业艰辛史
iPhone15系列国行售价公布 苹果史上最贵iPhone来了
餐饮业安装油烟监测设备可控制油烟污染
iPhone8什么时候上市?iPhone8最新消息:华为Mate10、三星Note8前后夹击iPhone8,iPhone8能否脱颖而出?
长电科技“蛇吞象”的思考
单片机的程序编写以及单片机的开发技巧
环路面积对电路EMC特性的影响分析
科技新闻:苹果A13处理器曝光:代号闪电
74ls273引脚图及管脚图(带真值表和引脚功能)
CCEF2011:汉王电纸书d21
为啥苹果还不推出可折叠iPhone? 外媒给出这三大理由
层叠线圈与并排线圈有何区别
智能锁的保修期为什么那么短
海拔高度对数据中心电子设备的影响