2018深圳迪尔西科技最新物联网智能家居总体设计方案3步曲!
20世纪80年代初,随着大量采用电子技术的家用电器面市,住宅电子化(HE,Homen Electronics)出现。80年代中期,将家用电器、通信设备与安保防灾设备各自独立的功能综合为一体后,形成了住宅自动化概念(HA, Home Automation)。
图片来源于网络
80年代末,由于通信与信息技术的发展,出现了对住宅中各种通信、家电、安保设备通过总线技术进行监视、控制与管理的商用系统,这在美国称为Smart Home,也就是现在智能家居的原型。
中国人口众多,城市住宅也多选择密集型的住宅小区方式,因此很多房地产商会站在整个小区智能化的角度来看待家居的智能化,也就出现了一统天下、无所不包的智能小区。欧美由于独体别墅的居住模式流行,因此住宅多散布城镇周边,没有一个很集中的规模,当然也就没有类似国内的小区这一级,住宅多与市镇相关系统直接相连。
这一点也可解释为什么美国仍盛行ADSL、Cable Modem等宽带接入方式,而国内光纤以太网发展如此迅猛。因此欧美的智能家居独立安装,自成体系。而国内习惯上已将它当作智能小区的子系统考虑,这种做法在前一阶段应该是可行的,而且是实用的,因为以前设计选用的智能家居功能系统多是小区配套的系统。
但智能家居最终会独立出来成为一个自成体系和系统,作为住宅的主人完全可以自由选择智能家居系统,即使是小区配套来统一安装,也应该可以根据需要自由选择相应产品和功能、可以要求升级、甚至你对整个设计不感兴趣,完全可以独立安装一套。
本文主要围绕着基于物联网的智能家居的开发过程进行论述。主要从软件方面进行详尽的描述并且涵盖了硬件的实施。包括相关的移植和应用技术。并且利用了IP网和串口进行通信。主控部分是建立在操作系统之上,整个系统采用了LINUX。
图片来源于网络
LINUX是一个嵌入式平台十分优秀的操作系统。这要可以保证家居系统的稳定运行。各个功能模块采用物联网的思想进行构建。每个模块若出现故障不会对其他部分造成影响,这样保证了程序的可运行性。
本文主要从整体的软硬件构建流程进行详尽的描述。将整体的流程图与说明结合。从全局观察本系统的各个功能以及实现过程,并且将Linux和QT的移植进行了简要的介绍。
一、系统核心控制软件流程及其说明
智能家居系统控制流程图
现代智能家居系统,对于室内温度的控制要求比较高,比如夏天的温度要在26摄氏度左右才适合人体。因此我们决定将温度控制在25至27摄氏度的范围内。一旦温度升高,超过了27摄氏度,这时候空调将自动开启,进行制冷。
当传感器温度在27摄氏度以下时,空调停止工作。由于空调对诗文的调节可能是非线性的。并且传感器与空调的位置也可能会影响对于室温的控制。这时候我们选择了25至27摄氏度这个范围内。避免了受固定数值的影响。
因为如果将温度设定为一个固定的数值,将可能造成的结果是空调一直工作,不断地调整温度,反复的开关很可能损害空调的寿命,并且对于电力资源的消耗极大。我们出于对环保的高要求考虑进行了以上调整。
由于现代家居对于门禁系统有较高的要求,传统的钥匙已经不再能满足家庭的需求。因此我们采用了门禁系统。用户刷卡,然后由系统自动识别ID卡,是否开门等。门禁系统的核心采用了AT89S52单片机来进行控制,通过传感器识别ID卡,然后进行判断,如果正确将进行开门。如果不正确将保持关门状态。
这使得家庭的安全得到了保障。此智能家居系统不但出于安全性的考虑增加了安防系统。而且对于现代家庭的休闲放松还增加了娱乐功能。有嵌入式播放器,电子相册,文本阅读等等功能,并且对于智能家居的控制系统主题提供了变换功能,不仅可以使用系统默认的主题,还可以根据用户的个人喜好,进行主题的变换。
智能家居核心控制软件流程
二、Linux内核移植
对于 PXA270 这样的基于ARM10系列的 CPU和S3C2410这样基于ARM9系列的CPU,支持内存管理单元,可以采用传统的Linux内核,对进程进行保护,提高了嵌入式系统中多进程的保护能力。使用户应用程序的可靠性得以提高,降低了用户的开发难度。
Linux版本
现在的Linux版本为2.6.x,最新的内核已经升级到2.6.38,本系统采用了2.6.24内核版本。 所谓 Linux 移植就是把 Linux 操作系统针对具体的硬件平台做必要改写之后,安装到该目标平台使其正确的运行起来。这个概念目前在嵌入式开发领域讲的比较多。
其基本内容是:获取某一版本的 Linux 内核源码,根据我们的具体目标平台对这源码进行必要的改写(主要是修改体系结构相关部分),然后添加一些外设的驱动,打造一个适合于我们目标平台的新操作系统,对该系统进行针对我们目标平台的交叉编译,生成一个内核映象文件,最后通过一些手段把该映像文件烧写(安装)到我们目标平台中。
而通常对 Linux源码的改写工作难度较大,它要求不仅对 Linux 内核结构要非常熟悉,还要求您对目标平台的硬件结构要非常熟悉。同时还要求您对相关版本的汇编语言较熟悉因为与体系结构相关的部分源码往往是用汇编写的。所以这部分工作一般由目标平台提供商来完成。
比如说针对目前嵌入式系统中最流行的ARM平台,它的这部分工作就是由英国ARM公司的工程师完成的,我们所要做的就是从其网站上下载相关版本 Linux内核的补丁(Patch)。把它打到我们的 Linux 内核上,再进行交叉编译就行。
其基本过程是这样的: 1)到ftp://ftp.arm.Linux.org.uk上下载Linux2.6.24内核及其关于ARM平台的补丁。 2)给Linux2.6.24打补丁。 3)准备交叉编译环境。交叉编译环境工具链一般包括binutils(含AS汇编器,LD链接器等),arm-linux-gcc,glibc等。 4)修改内核目录下的makefile文件,主要是以下几行: ARCH:=$(shell uname–m | sed –e s/i.86/i386/-e s/sun4u/sparc64/ -e s/arm. */arm/ - e s/sa110/arm/)这一行。ARCH :=改为ARCH := arm CROSS_COMPILE:=改为CROSS_COMPILE=交叉编译工具中arm-linux所在目录/arm-linux- 例如:CROSS_COMPILE=/opt/crosstool/arm-Linux/bin/arm-linux- 5)此后就可以进行编译。 6)以上可以使他在目标板上跑起 Linux 系统。 有了操作系统对于V4L,UDP,无线网卡等驱动就简单了很多。并且多任务的调控完全交给了操作系统支配。
三、QT Embedded移植
Qt/Embedded的底层图形引擎完全依赖于FrameBuffer,因此在移植时需考虑目标平台的Linux内核版本和FrameBuffer驱动程序的实现情况,包括分辨率和颜色深度等在内的信息。
当前嵌入式CPU大多内部集成LCD控制器,并支持多种配置方式。Qt/Embedded能够较好地根据系统已有的FrameBuffer驱动接口构建上层的图形引擎。 Qt/Embedded图形引擎中的图形绘制操作函数都是由源代码目录src/kernel/中的src/kernel/qgfxreaster_qws.cpp所定义的QgfxRasterBase类发起的声明。对于设备更加底层的抽象描述,则在src/kernel目录qgfx_qws.cpp的Qscreen类中给予相应定义。
这些是对FrameBuffer设备直接操作的基础,包括点、线、区域填充、alpha混合和屏幕绘制等函数均在其中定义实现。在FrameBuffer驱动程序调试通过后,配置Qt/Embedded的编译选项,可以保证Qt/Embedded的图形引擎正常工作。 Qt/Embedded中的输入设备,同样分为鼠标类与键盘类。其中鼠标设备在源码目录中的src/kernel/qwsmouse_qws.cpp中实现,从该类中又重新派生出一些特殊鼠标类设备的实现类。
当然也可以根据具体硬件驱动程序实现的接口,实现类似的接口函数。 Qt/Embedded中对于键盘响应的实际函数位于src/kernel/qkeyboard_qws.cpp 中,在qkeyboard_qws.h中,定义了键盘类设备接口的基类QWSKeyboardHandler。具体的键盘硬件接口依然要建立在键盘驱动程序基础上,移植时需要根据键盘驱动程序从该类派生出实现类,实现键盘事件处理函数processKeyEvent()即可。 Qt/Embedded内部对于字符集处理采用了UNICODE编码标准。
Qt/Embedded同时支持两种对于其他编码标准(如GB2312和GBK)的支持方式:静态编译和动态插件装载。通过配置config.h文件添加相应的编码支持宏定义,可以获得其他编码标准向UNICODE的转换支持,从而在Qfont类中得以转换与显示。
由于UNICODE涵盖了中文部分,所以Qt/Embedded对中文支持也非常好。 安装交叉编译工具链arm-linux-gcc3.4.1。并设置环境变量 安装QT 4.6 for ARM ./configure -make libs -embedded arm -xplatform qws/linux-arm-g++ -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -little-endian -no-qt3support -no-libmng -no-mmx -no-sse -no-sse2 -no-3dnow -no-openssl -no-webkit -no-qvfb -no-phonon -no-nis -no-opengl -no-cups -no-glib -no-xcursor -no-xfixes -no-xrandr -no-xrender -nomake examples -nomake tools -nomake docs -nomake demo -D__ARM_ARCH_5TEJ__ 由于在系统中没有使用触摸屏,所以没有对tslib进行编译。而是使用usb鼠标进行控制,这样触摸屏与视频显示之间的冲突将可以避免。
目前中国物联网还只是处于萌芽阶段,未来的发展方向一定是属于物联网产业人工智能化。小编不才,收集整理了《50套物联网商业计划书和技术方案作品》相信对您从事物联网技术有非常大的帮助,关注公号索取【迪尔西科技】