微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于Linux/Qt的智能家居系统设计

基于Linux/Qt的智能家居系统设计

时间:07-07 来源:3721RD 点击:

当有数据库操作请求时便会实例化一个m_query来创建一个线程用于处理该请求。m_query对象中包含两个类:(1)QueryThread,用于为每个数据操作创建一个线程;(2)Worker,用于实现数据库的相关操作,如加载数据库驱动、进行数据查询/插入/删除等。

图2为数据库的查询操作流程。首先在实体类里创建两个connect连接,分别用于发送和接收查询结果,并生成SQL语句向QueryThread提交查询请求信号。QueryThread收到请求后为其创建一个线程,并交由Worker类进行具体数据库查询操作。Worker类得出查询结果后,先传递给QueryThread,再由其将查询结果返回到实体类。

关键代码如下:
connect( this,SIGNAL(seek(const QString& ) ),m_query,
SIGNAL(seek_execute(const QString& )) );
connect( m_query,SIGNAL(seek(const QList<QSqlRecord>
& ) ),this,SLOT( slotResult( const QList<QSqlRecord>& ) ) );

void text:: database() {
QString sql = "select * from Text order by date desc ";
emit seek_execute (sql);
}

2.4 音视频同步传输技术

i.MX51处理器包含了支持硬件视频编解码的VPU单元,并自带了完整的多媒体解决方案。因此,系统中采用其自带的多媒体软件包进行音视频流的采集和编解码[2]。

考虑到小区内可视通话时因并发数过大而可能导致的网络拥塞情况,系统还需要提供一定的QoS机制来保证在网络带宽较低时也能达到音视频的同步传输。本文采用基于时间戳的实时同步传输技术,通过设置可变大小的缓冲区机制,根据小区网络情况自动调节传输参数,以音频质量优先保证为原则,根据时间戳实时调节视频数据的播放。具体实现过程如下[3]:

(1)发送端采用两个独立的进程分别对音视频信息进行采样和打包,然后放到各自的缓冲队列中等待发送。

(2)音视频数据通过同一个通道发送到网络(采用信号量机制保证音视频数据对通道的互斥访问)。

(3)由于音视频两个数据包的长度差别很大,所以将接收端收到的数据根据包的大小进行区分。

(4)音视频各自拆包组帧。由于人的听觉对声音的不连续比视觉对图像的不连续更敏感,所以采用音频流作为主流,视频流作为从流。客户端接收到音频数据包后,不必与视频数据包协调就可立即播放,而视频帧到达时则根据时间戳进行对比,从而进行相应的同步处理。

(5)为保证音视频的实时同步,采用多线程分别对音频和视频进行播放。

3 i.MX51平台移植

3.1 搭建LTIB开发环境

LTIB(Linux Target Image Builder)是飞思卡尔公司开发的一个用于部署BSP的工具,含有U-Boot等引导加载程序,支持Bootloader和内核映像的构建。利用该工具,可以定制出符合GNU/Linux标准的跨平台的根文件系统。本设计选择使用飞思卡尔公司提供的L2.6.31_10.07.11_ER_source.tar.gz集成源码包,在一台安装了Ubuntu 10.04操作系统的PC机上配置安装LTIB[4]。其过程如下:

(1)解压缩源码包,执行./install进入安装LTIB的命令提示。
(2)执行./ltib进入LTIB的配置界面。
(3)在LTIB配置Platform时选择i.MX51平台。
(4)配置Kernel时选择CLAA WVGA Panel(LCD触摸屏驱动)和SoC Audio support for IMX - SGTL5000(声卡驱动),其他保持默认。
(5)将交叉编译工具arm-none-linux-gnueabi-gcc加入PATH环境变量,在ltib根目录执行下述命令,交叉编译Qt库:
./ltib -m prep -p qt-embedded.spec
./ltib -m scbuild -p qt-embedded.spec
(6)执行make install,在ltib下的rootfs目录就会生成相应的U-Boot、内核和文件系统,将将其复制到目标板的TF卡上。

3.2 架设NFS文件系统

为了简化调试过程和缩短开发周期,在Linux主机上建立了NFS网络文件系统,这样就实现了宿主机与目标板的文件共享。开发过程简化为:Linux主机编译生成目标平台的可执行文件→复制文件到NFS共享目录→目标板运行程序,从而省去了重复制作镜像、下载镜像、重启开发板等步骤,节省了大量的开发时间。目标板的NFS启动信息如图3所示。


4 系统测试及结果

4.1 并发测试

并发测试主要用来测试多个用户同时访问同一个应用程序、同一个数据记录时是否存在死锁或其他问题。由于本系统是面向一个小区的住户,因此系统的并发测试尤为重要。

数据库并发测试:室内机开启多个线程同时访问中心机服务器,界面并不会因大量的数据操作而出现"冻结"现象,CPU占用稳定,数据库返回结果显示正常。

信息发布测试:中心机开启多个线程同时发送广播信息,各室内机接收正常,不会出现显示错误或"丢包"现象。

4.2 跨网段测试

考虑到小区用户一般在几百甚至上千,一个网段的IP地址不能满足需求。为了检测在不同网段下通信模块能否正常工作,使用一台华为S5300交换机(switch)和两台华为5200交换机搭建了一个小型的网络环境进行相关测试。如图4所示,测试采用IPv4静态路由,使不同网段的任意两台室内机之间能够互通。测试表明,分属不同网段的室内机之间,可视通话、信息互发等模块均正常工作,从而验证了本设计方案的可行性。


4.3 可视对讲性能测试

可视对讲性能测试主要是检测室内机终端中音视频的采集、编解码、收发和显示。对于音视频的采集、收发和显示,可通过扬声器和LCD显示直观地检测。而对编解码的测试则比较复杂,本设计是从最长时间、最短时间和平均时间三个方面来测试编解码一帧音视频所需要消耗的时间。i.MX51平台上音视频编解码的性能测试如表1所示。

由表1可以看出,i.MX51平台上能够实时地完成音频和视频通信,且音频清晰、视频流畅、失真度小,达到了可视对讲对音视频编解码器的实时性要求。

本文采用Linux和Qt相关技术,在飞思卡尔公司i.MX51平台上设计了一种多功能的智能家居控制系统,实现了客户端与服务器的Socke通信和音视频同步传输等核心功能。下一步还需要扩展家电控制、安防控制等功能。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top