Chinaunix首页 | 论坛 | 博客
  • 博客访问: 156543
  • 博文数量: 31
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 360
  • 用 户 组: 普通用户
  • 注册时间: 2017-02-28 08:37
个人简介

没有绝活,怎能风骚.....

文章分类

全部博文(31)

文章存档

2017年(31)

我的朋友

分类: 项目管理

2017-04-30 11:58:03

总述:
    在互联网迅猛发展的今天,我们不再是需要家中有人才能控制家中的一些设备的运作情况了,我们可以借助网络来帮助我们远程控制家中的一些设备。例如:突然有紧急情况出门,想起走的时候窗户没关上,这时候不需要你再返回家中关窗户,而是拿起手机,保证手机的网络是畅通的就可以实现关窗户,真正的实现了智能化地控制家中的设备。
    下面再说说智能家居实现的效果和每部分模型完成的功能。
    首先智能家居项目实现的效果:用手机或者是平板可以控制家中设备的运行状态,如开灯关灯、开门关门和空调的开关等;也可以获取家中环境的信息,如温度、湿度和光照等;将这些信息显示到手机上。
     项目主要分为四个模块:APP模块、服务器模块、ZigBee模块、M0模块
    ①APP模块(手机或者平板):主要的功能是用于与用户之间的交互,界面的跳转及信息的显示。将用户的操作按照一定的通信协议发送给服务器,接收服务器的回馈信息,完成相应的界面跳转和界面的信息显示。
    ②服务器模块(A9开发板):主要的功能有:用户注册信息的保存、用户登录检测、修改密码和忘记密码,将用户对硬件操作的信息发送给ZigBee模块,获取ZigBee模块的反馈信息。
    ③ZigBee模块:实现无线传输,将服务器的数据包发送给M0模块,接收到M0模块的反馈信息。
    ④M0模块:对ZigBee发送过来的包做解析,判断出对哪个硬件实现什么样的操作,完成对硬件的相关操作后,给ZigBee发送反馈信息数据包。

下面分别对各个模块的详细实现做简单介绍:
一、APP模块
    APP模块最终能实现的功能包括账户注册、登录、赢家控制,远端信息的实时获取等,在编写这个客户端的时候,我首先基于基本MVC的开发框架对自己的项目框架进行了构思,并且结合项目的功能需求展开了代码的编写。
    我的Module模块使用的是QT自带的数据库接口QSqlDatabase实现的。中间的Control主要用于接收完数据之后的解析逻辑等;View当然是用QWidget和QGraphicsView的框架来搭建UI效果;能够实现远端控制,服务器信息获取与显示,本地数据库和服务器实时同步等功能;对于网络不稳定,数据包丢包问题等,我也设置相应的心跳包检测,断线重连等功能。
    当然,为了我们的客户能够使用方便,我们该APP进行了Android项目的移植,值得一提的是,我们并没有真正使用Android语言对项目进行重写,而是通过QT可跨平台的特点,进行来电QT for Android的移植工作,运行功能正常,流畅。当然,这么多功能的整合不可避免的使我的程序有一些bug的出现,特别涉及到不同位制、不同大小端模式的电脑之间传递信息可能出现数据乱码的问题,当时采用的解决措施尽量使用通用数据包的形式传输数据,如JSON数据包。

二、服务器模块
    智能家居的服务端程序主要完成两部分的功能:
    第一部分完成和客户端APP进行网络通信。主要完成的功能有:
        ①接收用户注册的信息,并将用户注册的信息存放到数据库中
        ②接收用户登录的信息,并且验证用户名和密码是否正确
        ③接收修改用户信息的请求,并将修改后的信息存放到数据中
        ④接收用户对家里电器设备控制以及获取家里环境信息的请求
    第二部分完成通过对ZigBee和家里电器以及环境信息的采集传感器设备进行通信。主要完成的功能有:
        ①根据客户的请求,通过ZigBee向家电设备发送的打开和关闭命令
        ②根据客户端的请求,通过ZigBee向环境信息采集的传感器设备发送获取温湿度信息的命令      
    为了让两部分功能独立运行,在服务器端程序设计的时候,使用了多进程的思想。
    第一部分功能由父进程完成,第二部分功能由子进程完成。为了让服务器端能同时响应多个客户端的需求,使用select函数实现了并发服务器架构。为了让服务器端能快速响应客户端请求,使用了线程池机制。每个客户端的每一个请求到服务器端之后,都会有单独的子线程处理它的请求。

三、数据采集终端模块
    这个其实就是终端数据采集与硬件反馈的模块,这个模块使用的是ARM系列Cortex-M0芯片,在这个芯片的基础之上,分别外接了以下几个设备,有温度、湿度、光照、三轴传感器与RFID射频模块,还有风扇、LED、蜂鸣器、OLED硬件。同时集成了RS485、CAN总线。在这个项目中,使用到了温度、湿度、光照、三轴传感器获取当前的环境信息,发送到ZigBee的节点;还有就是从ZigBee节点接收命令控制风扇、LED、蜂鸣器等来模拟家中的电器设备。在这个模块中使用了ARM开发的一些流程,如配置寄存器让硬件工作。一些总线设备的使用,如SPI、I2C。还有中断的机制和定时器的使用,在本项目中启用了一个32位的定时器来做延时操作。

四、短距离信息传输模块
    这个模块主要实现的是数据的透传工作,一个ZigBee节点接收服务器的消息无线转发到ZigBee的另外一个节点上,另外一个节点把数据发送给终端设备,完成操作。同时也可以反过来,是终端设备的环境信息。我使用的是CC2530的单片机。它是一款完全兼容8051的内核,同时支持IEEE 802.15.4协议的无线射频的单片机。这个项目主要是使用ZigBee提供的协议栈来进行开发。使用了其中的函数接口完成项目需求的应用程序。
阅读(1656) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~