嵌入式系统以其占用资源少、专用性强、功耗低的特点使其广泛应用在移动通信、工业生产、安全监控等领域。针对人们对高效、舒适、安全、便利、环保的居住环境的要求,提出了以Arm-Linux为平台的智能家居控制系统的设计。

1 智能家居控制器的总体设计

Arm-Linux嵌入式系统以其在性能、体积及功耗等方面的优势在智能家居领域得到越来越广泛的应用。系统采用基于ARM的嵌入式linux方案,系统分为五层分别为硬件层,系统引导层,系统层,应用支撑层及应用层。如图1所示应用层在Qtopia图形系统、SQLite数据库等的支撑下完成了电话报警、照明控制、安防控制、门禁控制以及网络浏览等应用。

2 系统硬件的设计

CPU处理器选用Samsung S3C2440A,其主频为400 MHz,资源丰富功能强大。内存为64M SDRAM,数据总线32bit,时钟频率高达100MHz。存储器为128 M掉电非易失NANDFLASH。LCD显示部分为具有4线电阻式触摸屏接口的35英寸真彩色液晶屏。网卡芯片为DM9000可自适应10/100 M网络,通过RJ45连接头可连接控制器至路由器或者交换机。智能家居控制模块通过RS485总线与主控制器进行通信。其硬件结构图如图2所示。

3 软件平台的构建

开发环境选取的是虚拟机Vmware6.5+fedora9Linux系统+arm-linux-gcc 4.3.2编译器。系统与软件的编译采取交叉编译的方式进行。表1是构建控制系统所需移植开发的一些主要软件。

4 应用程序的设计

通过一个应用程序为例说明如何把QT图形系统,嵌入式数据库SQLite,linux下的串口通信程序结合到一起完成应用程序的设计。通过下列语句在C与C++程序中调用SQLite的API完成数据库的创建、插入数据与查询数据。

在系统中还需要在数据库系统中存储很多其他信息,遵循上述步骤分别建立相应的数据表存储报警电话号码tel,工作状态设定set,设备工作信息zt,报警信息bj等。图形界面、SQLite及串口通信程序的开发的基本过程如图4所示。

Uboot是专门针对嵌入式Linux系统设计的开源bootloader,其任务是初始化处理器及外设硬件资源并引导操作系统。内核为linux2.6.3 2,这版提供了更多的驱动程序以及API,调用起来更加的方便。在内核中要添加对帧缓存frambuffer的支持,图形系统需要它的支持。文件系统使用Yaffs2,以配合2 K每页的大页存储器。根文件系统选用Busvbox1.13.3,配置编译完之后会生成bin和sbin目录以及linuxrc文件,从而系统就具备了系统以及文件管理的相关命令。移植Boa服务器实现了嵌入式服务器的功能。

SOLite是面向嵌入式系统的数据库,编译完成后非常小只有几百k,支持2T的数据记录。在嵌入式系统中可以有力的减小应用程序管理数据的开销。下列语句配置编译器与编译路径并进行安装。在安装目录下生成bin、include及lib 3个文件夹,分别为可执行文件、头文件与库文件。

Qtopia是专门针对嵌入式linux系统消费电子设备所研发的一套应用程序包和开发库。图3为qtopia的软件层次结构图。Qtopia的信号与插槽机制提供了对象间的通信机制。窗口在事件发生后会激发信号,程序员通过建立一个函数(称作插槽),然后调用connect()函数把这个插槽和一个信号连接起来,这样就完成了一个事件和响应代码的连接。可以一个信号对应多个插槽函数,也可以一个槽函数对应多个信号。

首先用Qt Desinger根据系统要求设计图形界面,建立槽函数开槽并且通过语句connect(PushButtonl,SIGNAL(clicked()),this,SLOT(set_userandphone()));建立信号与槽函数的连接。槽函数需要根据设计的功能需要编写。用UIC与MOC工具生成文件user.h、user.cpp及完成信号与插槽功能的moc_user.cpp程序,由PROGEN与TMAKE生成工程文件user.pro与Makefile。user.cpp中有SQLite数据库代码,要把库路径加到Makefile库文件的搜索路径中否则会因为找不到SQLite的库文件而编译失败。

要实现用户的用户名、密码等信息存到前面创建的user.db数据库中,要把创建表与插入数据的代码放到槽函数下。点击set按钮后就会产生一个信号来触发槽函数,实现数据库的创建与数据的存储。实现串口通信的功能把设置的信息传递给智能家居的各个控制模块,需通过设置struct termios结构体的各成员值实现波特率、校验位、停止位等设置,完成之后对串口的操作就可以像普通文件一样进行读写操作。串口通信程序代码也放到槽函数下边

完成X86环境下的编译之后需要修改Makefile文件把PC环境编译器gcc和g++修改为嵌入式环境下的arm-linux-gcc和arm-linux-g++,编译完成下载到文件系统的相应目录下并运行测试,系统的其他应用程序如系统工作模式设定、状态查询等也遵循同样的开发流程。

图5为第一个为系统的总体界面,里面包含12应用程序的图标。第二幅为示例应用程序的界面,在输入相应的信息后点击set按钮,用户名密码以及报警电话分别保存到了namekey与tel表中并发送给电话报警模块。达到了设定用户信息的设计目标。

5 结束语

本文利用嵌入式数据库SQLite实现了对智能家居控制系统的数据管理,在管理效率上有了很大提高,节省了系统资源开销。应用Qtopia图形系统实现了操作界面的可视化界面更加友好,操作更加简单明了。系统运行稳定,很好的满足了设计要求。

嵌入式linux智能家居系统,以Arm-Linux为平台的智能家居控制系统的设计详解相关推荐

  1. linux top交叉编译_Linux 系统下ARM Linux交叉编译环境crosstool工具

    Linux系统下ARM Linux交叉编译环境的建立目前流行的有三种途径. 一.使用别人编译好的开发工具链本文引用地址:http://www.eepw.com.cn/article/201611/31 ...

  2. Windows系统下nodejs、npm、express的下载和安装教程详解

    这篇文章主要介绍了Windows系统下nodejs.npm.express的下载和安装教程详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下 1. node.js下载 首先进入http://nod ...

  3. 架构设计-支付宝、京东、美团、去哪儿的支付系统架构整体设计详解!!!

    架构设计-支付宝.京东.美团.去哪儿的支付系统架构整体设计详解!!! 支付产品模块是按照支付场景来为业务方提供支付服务.这个模块一般位于支付网关之后,支付渠道之前. 它根据支付能力将不同的支付渠道封装 ...

  4. 音频接口设计详解!智能硬件设计,I2S、PDM、TDM选什么接口?

    音频接口设计详解!智能硬件设计,I2S.PDM.TDM选什么接口? 在智能硬件和物联网产品设计中,经常遇到声音的传输.本文主要讲一下最常用的音频接口,以及使用场景. 主要分类:模拟.数字(I2S.PC ...

  5. arm linux设置ip地址命令,ARM Linux系统修改动态IP为静态IP地址

    # Wired or wireless interfaces auto eth0 #iface eth0 inet dhcp #        pre-up /bin/grep -v -e " ...

  6. linux系统调用的封装格式,ARM Linux系统调用的原理

    ARM Linux系统调用的原理ARM Linux系统调用的原理 操作系统为在用户态运行的进程与硬件设备进行交互提供了一组接口.在应用程序和硬件之间设置一个额外层具有很多优点.首先,这使得编程更加容易 ...

  7. 学习arm需要Linux吗,学了半年ARM+linux的一点感想

    从接触51单片机到ARM有一年了.从以前的一点都不懂到现在的有一点懂~~其实也不容易啊.大一的时候我还迷恋着魔兽世界的. 借着写日志的时候把这些日子学到的一些知识整理下........注明这个我其实还 ...

  8. arm linux下看门狗应用,arm linux watchdog 看门狗

    目前手上有个项目需要设计看门狗,是arm+CPLD 方式.由于对看门狗要求很高,打算做一个双看门狗,arm CPLD互相为 对方的看门狗.理论上CPLD是不需要看门狗的,还是这么去设计了.接下来对看门 ...

  9. python linux arm_[Python]python for ARM/LINUX

    按照下面的方法,可以成功将python2.5 build到 ARM /linux , 我已经成功了: Download latest from www.python.org Save into /ho ...

最新文章

  1. 对超线程几个不同角度的解释
  2. 《数学建模:基于R》——2.2 方差分析
  3. 关于最近练习PYTHON代码的一点心得
  4. 前端学习(3251):dom的diff算法2
  5. 背后的故事之 - 快乐的Lambda表达式(二)
  6. 深度学习笔记(27) 经典卷积网络
  7. mysql keeplevied_mysql keepalived
  8. asp.net三层架构制作新闻管理_程序员蜕变为架构师必须要知道的「架构理论」...
  9. web.xml中的主要元素说明(listener, filter, servlet)
  10. C++ MFC WebBrowser 探索(二)
  11. Python:学习笔记之函数的递归
  12. spring mvc异步操作处理,注解方式
  13. ASP.NET TreeView操作实例
  14. atsc-m/h现状
  15. 小布老师_Oracle11g SQL基础入门
  16. 手机版支付宝html页面,支付宝手机网页支付代码
  17. MCU芯片设计和软件开发
  18. Visio保存为网页出错
  19. 计算机应用能力 中文字处理,职称计算机Word 2003中文字处理考试大纲
  20. 2.AZ900资源汇总

热门文章

  1. 2018深圳国际3D打印产业展览会
  2. 爱招飞软件开发工具与 Arduino 与 ESP32 的关系
  3. java基于springboot足球联赛管理系统
  4. ipc开发(liteos hi3518ev200----smaple【如何把hi1131 wifi驱动跟venc驱动整合到一个sample bin文件里面)
  5. php发送 日历邮件_如何阻止垃圾邮件发送者攻击您的Google日历
  6. Imaginary number
  7. 2021年ICPC第九届陕西省赛题解(10/12)
  8. Content-Disposition:attachment没有触发浏览器下载弹框
  9. php微信开发查询分组,微信开发之用户组的介绍
  10. 项目支付接入支付宝【沙箱环境】