基于物联网技术的智能家居嵌入式系统设计本科设计.docx
《基于物联网技术的智能家居嵌入式系统设计本科设计.docx》由会员分享,可在线阅读,更多相关《基于物联网技术的智能家居嵌入式系统设计本科设计.docx(72页珍藏版)》请在冰豆网上搜索。
![基于物联网技术的智能家居嵌入式系统设计本科设计.docx](https://file1.bdocx.com/fileroot1/2023-7/26/70ce4317-3335-4af2-90c3-6eab6265c8bf/70ce4317-3335-4af2-90c3-6eab6265c8bf1.gif)
基于物联网技术的智能家居嵌入式系统设计本科设计
基于物联网技术的智能家居嵌入式系统设计本科设计
基于物联网技术的智能家居嵌入式系统设计
摘要
从上世纪的住宅电子化、住宅自动化到今天的住宅智能化,基于物联网技术的智能家居正逐步融入到我们的生活当中来。
作为嵌入式Linux系统设计的一个典型应用,智能家居是融合自动化控制系统、网络通信系统于一体的网络化、智能化家居控制系统。
基于物联网的智能家居嵌入式系统设计,主要分为三个子系统,即前端数据采集子系统、终端服务器子系统、上位机反控子系统。
前端数据采集子系统,主要负责实时数据采集与传输,包括温度数据、湿度数据、时钟数据,与终端服务器子系统通过串口进行单工通信,其中包括单片机主控制处理模块、温度采集模块、时钟采集模块、报警模块、电平转换模块等。
终端服务器子系统,主要负责实时数据存储与传输,即存储从前端采集模子系统收到的实时数据,传输独立采集数据,其搭载的BOA服务器可以进行远程浏览访问控制,包括前台界面、后台控制模块、智能家居控制模块等,另外,也可以进行独立数据采集以及传输。
上位机反控子系统,主要负责数据存储备份以及网络数据远程访问控制。
解析由终端服务器传输来的实时数据,同步显示在上位机界面上,另外可以通过浏览器远程访问控制搭载在终端服务器上的BOA服务器,实现智能家居远程访问控制。
关键词物联网嵌入式系统智能家居
DesignofIntelligentHomeEmbeddedSystemBasedonInternetofThings
ABSTRACT
Fromthelastcentury’selectronichomeandautomationhome,intelligenthomebasedonInternettechnologyisgraduallycomingintoourlives.AsatypicalapplicationoftheembeddedLinuxsystem,theintelligenthomeisnetworkingandintelligenthomecontrolsystemwhichintegratedautomatedcontrolsystemsandnetworkcommunicationsystems.
TheintelligenthomeembeddedsystembasedonInternetofThingsismainlydesignedtobethreesubsystems.Theyarenamelythefrontdataacquisitionsubsystem,terminalserversubsystem,hostcomputeranti-controlsubsystem.
Thefrontdataacquisitionsubsystemmainlyrealizeddataacquisitionandtransmissionwhichincludetemperaturedata,humidityandclock.Itsimplexcommunicatedwithterminalserversubsystemthroughserialport.Thissubsystemincludesamicrocontrollermastercontrolprocessingmodule,temperatureacquisitionmodule,clockacquisitionmodule,alarmmodule,levelconversionmodule.
Terminalserversubsystemmainlyrealizedstorageandtransmission.Theprocessstoredreal-timedatareceivedfromfrontacquisitionsubsystemandtransmittedtohostcomputeranti-controlsubsystem.WecanremotelybrowseandcontroltheBOAserverequippedinthissubsystemwhichincludesthefrontinterfacemodule,thebackgroundcontrolmodule,intelligenthomecontrolmodule.Itcanalsoseparatelycarryoutdatacollectionandtransmission.
Hostcomputeranti-controlsubsystemmainlyrealizeddatastoragebackupandnetworkdataremoteaccesscontrol.Itsynchronouslydisplayedoninterfacebyanalyzingrealtimedatatransmissionfromterminalserver.Besides,itcanalsoremotelyaccessandcontrolBOAserverthroughawebbrowser.Sorealizetheremoteaccessandcontrolofintelligenthome.
KEYWORDSInternetofThings,embeddedsystem,intelligenthome
摘要I
ABSTRACTII
目录III
图目录V
表目录VII
缩略词表VIII
第1章绪论1
第2章嵌入式系统环境搭建3
2.1Bootloader的移植3
2.2Linux内核裁剪5
2.3根文件系统制作10
2.4嵌入式GUI移植14
2.5嵌入式数据库sqlite3的移植17
2.6嵌入式BOA服务器的移植18
第3章前端数据采集子系统20
3.1单片机主控制处理模块20
3.2温度采集模块22
3.3时钟采集模块23
3.4电平转换模块25
3.5报警电路模块26
第4章终端服务器子系统27
4.1主控制模块27
4.2GPS数据采集模块29
4.3人体红外感应模块31
4.4前台界面模块32
4.5电源模块34
4.5.1+5V电源供电34
4.5.2+12、-12V电源供电35
4.5.3+3.3V电源供电35
4.6路由器端口映射36
第5章上位机反控子系统38
5.1背景音乐控制模块38
5.2USB/CMOS摄像头控制模块40
5.3智能家居控制模块41
5.4上位机界面41
5.5网页界面42
5.6循环冗余CRC校验算法44
第6章智能家居系统测试45
6.1前端实时数据采集测试报告45
6.2终端服务器配置测试报告45
6.3网络浏览反控测试报告47
6.4智能家居系统压力测试报告47
6.5上位机实时数据测试报告48
第7章智能家居系统问题与持续改进49
7.1内存泄漏问题的改进49
7.2系统代码的重构以及优化49
7.3系统硬件电路设计的问题49
7.4系统软件架构的问题50
第8章智能家居系统未来畅想51
8.1一键式遥控功能51
8.2集中控制处理功能51
8.3网络反向控制功能51
8.4电话远程控制功能51
8.5家居综合布线功能52
第9章总结53
参考文献54
图目录
图11系统整体架构框图1
图21嵌入式Linux系统中的典型分区结构3
图22主配置菜单界面5
图23LCD驱动配置界面6
图24触摸屏驱动配置界面6
图25USB鼠标键盘配置界面7
图26USB摄像头驱动配置界面7
图27DM9000网卡驱动配置界面8
图28AC97音频驱动配置界面8
图29串口驱动配置界面9
图210yaffs2文件系统配置界面9
图211nfs文件系统配置界面9
图212busybox主配置界面11
图213压缩、解压缩工具命令ArchivalUtilities11
图214核心命令CoreUtilities12
图215控制台相关命令ConsoleUtilities12
图216编辑相关命令EditorUtilities13
图217网络相关命令NetworkingUtilities13
图218进程相关命令ProcessUtilities13
图31前端数据采集子系统架构框图20
图32前端数据采集子系统流程框图21
图33单片机最小系统电路图22
图34DS18B20温度寄存器格式22
图35DS18B20数值样例22
图36DS18B20读写0时隙23
图37DS18B20读写1时隙24
图38DS18B20复位时序24
图39DS1302寄存器地址24
图310DS1302读写时序25
图311max232电平转换电路25
图312KD9561集成芯片26
图41终端服务器子系统架构框图27
图42终端服务器子系统架构框图28
图43通讯包结构组成29
图44人体红外感应范围示意图31
图45人体红红外感应触发方式示意图31
图46登录窗体对话框32
图47数据曲线对话框33
图48软键盘33
图49系统状态34
图410A型B型USB接口的外观图35
图411双12V稳压电源电路图35
图412+3.3V稳压电源36
图413路由器转发规则配置37
图414路由器虚拟服务器配置37
图51上位机反控子系统架构框图38
图52上位机反控子系统程序流程框图39
图53背景音乐及摄像头控制模块40
图54智能家居控制模块41
图55上位机界面42
图56网页界面
(一)42
图57网页界面
(二)43
图58网页界面(三)43
图61前端数据采集测试45
图62串口管理对话框测试46
图63用户管理对话框测试46
图64通讯管理对话框测试47
图65网页界面测试
(一)47
图66网页界面测试
(二)48
图67上位机界面测试48
表目录
表21bootloader的分类4
表41通讯包结构组成说明29
表42GPRMC定位信息说明30
表43GPGGA定位信息说明30
缩略词表
英文缩写
英文全称
对应中文
BOA
蛇,引申为单任务HTTP服务器
ADSL
AsymmetricDigitalSubscriberLine
非对称数字用户环路
ARM
AdvancedRISCMachines
高级精简指令集制造公司
AVR
A与V先生共同研究的RISC精简指令集高速8位单片机
CGI
CommonGatewayInterface
通用网关接口
CMOS
ComplementaryMetalOxideSemiconductor
互补金属氧化物半导体
COM
CommunicationPort
串口
CPU
Central Processing Unit
中央处理器
CRC
CyclicalRedundancyCheck
循环冗余码校验
DB
Define Byte
定义字节
DS
DataSegmentRegister
数据段寄存器
GIS
GeographicInformationSystem
地理信息系统
GND
Ground
地线或零线
GNOME
TheGNUNetworkObjectModelEnvironment
GNU网络对象模型环境
GNU
GNU'sNotUnix
引申为自由的软件
GPGGA
GlobalPositioningSystemFixData
GPS系统固定数据
GPRMC
RecommendedMinimumSpecificGPS/TRANSITData
建议使用最小GPS数据格式
GPS
GlobalPositioningSystem
全球定位系统
GRUB
GRandUnifiedBootloader
多重操作系统启动管理器
GUI
GraphicalUserInterface
图形用户接口
HA
HomeAutomation
住宅自动化
HE
HomenElectronics
住宅电子化
HI
HomeIntelligent
住宅智能化
HTML
HypertextMarkupLanguage
超文本标记语言
I/O
input/output
输入输出端口
I2C
Inter-IntegratedCircuit
内部整合电路
IC
IntegratedCircuit
集成电路
IP
InternetProtocol
网络之间互联的协议
KDE
KoolDesktopEnvironment
K桌面环境
LCD
LiquidCrystalDisplay
液晶显示器
LED
LightEmittingDiode
发光二级管
LILO
LinuxLoader
Linux加载程序
MCS
MicrocontrollerSystem
微控制系统
MIME
MultipurposeInternetMailExtensions
多用途网际邮件扩充协议
MJPEG
MotionJointPhotographicExpertsGroup
运动联合图像专家小组
PC
PersonalComputer
个人计算机
PNG
PortableNetworkGraphicFormat
可移植的网络图像格式
QTE
Quick Time Event
快速反应事件
RAM
RandomAccessMemory
随机存储器
RISC
Reduced Instruction Set Computer
精简指令集计算机
ROM
Read-OnlyMemory
只读存储器
RS
RecommendedStandard
推荐标准
RX
Receive
接收
SD
SecureDigitalMemoryCard
安全数码卡
SPI
SerialPeripheralInterface
串行外设接口
STM
SynchronousTransferModule
同步传输模式
TCP
TransmissionControlProtocol
传输控制协议
TTL
TimeToLive
生存时间
TX
Transmit
传送
UART
UniversalAsynchronousReceiver/Transmitter
通用异步接收/发送装置
UDP
UserDatagramProtocol
用户数据包协议
USB
UniversalSerialBus
通用串口总线
UVC
USBVideoClass
USB视频类别
VCC
VoltCurrentCondenser
电源
第1章绪论
从20世纪80年代初,家用电器开始采用电子工艺技术,住宅电子化概念(HE,HomenElectronics)逐渐出现在人们的视野当中。
到90年代中期,将家用电器、网络设备、家庭安防设备等各自独立的系统整合为一体后,人们进入到了住宅自动化HA,HomeAutomation)的时代。
而进入到21世纪,随着电子工艺技术的革新,信息技术的迅猛发展,嵌入式设备以崭新的面孔出现在人们的生活中,它将网络设备、家电设备、安保设备通过主控制器进行控制、管理,即现如今的住宅智能化(HI,HomeIntelligent),也就是智能家居的雏形。
智能家居,即通过物联网技术整合自动化控制系统、计算机通信系统于一体的网络化、智能化家居控制系统。
智能家居能够让用户使用更加便捷、人性化的方式来控制管理家用电器,比如,通过触摸屏、遥控器、电话、互联网等控制家用设备;另一方面,智能家居内的各种设备相互间可以通讯,不需要用户指挥也能根据不同的状态互动运行,从而给用户带来最大程度的高效、便利、舒适与安全。
智能家居系统一般主要包括:
智能家居(中央)控制管理系统、灯光控制系统、家庭安防系统、家居布线系统、家庭网络系统、背景音乐控制系统、家庭多媒体系统、家庭环境控制系统等八大子系统[1]。
其中,智能家居(中央)控制管理系统、家居照明控制系统、家庭安防系统是其必备系统。
而基于物联网的智能家居嵌入式系统设计,正是智能家居系统的一个简单缩影,在三大必备系统的基础之上,参考增加了背景音乐控制系统、家庭网络系统等功能模块。
下面是系统的整体架构框图,如图11所示。
图11系统整体架构框图
基于S3C2440的智能家居嵌入式系统,整个系统分为三个子系统,即前端数据采集子系统、终端服务器子系统、上位机反控子系统。
其中前端数据采集子系统主要负责实时数据采集与传输,与终端服务器子系统通过串口或者I2C进行单工通信;终端服务器子系统负责实时数据存储与传输,其搭载的嵌入式BOA服务器可以通过网络浏览器进行远程访问控制,并且该子系统也可以进行独立数据采集传输;上位机反控子系统负责数据存储与备份,另外可以通过网络进行远程访问控制。
第2章嵌入式系统环境搭建
一般嵌入式Linux系统主要包括以下几个部分[1]:
(1)引导加载程序:
其中包括内部ROM中的固化启动代码和Bootloader两部分。
固化启动代码是厂家生产芯片时固化在ROM中的,其主要作用是引导Bootloader;而Bootloader是用来初始化硬件环境,加载Linux内核。
(2)Linux内核:
通过Bootloader传递内核参数来引导加载内核。
(3)文件系统:
包括根文件系统和建立在Flash设备上的其他文件系统,包含了Linux系统能够运行所必需的应用程序、库文件等,比如用户操作Linux的控制界面shell程序、动态链接的程序运行时所需要的glibc等。
(4)用户应用程序:
用户自定义的应用程序,它们也存储在文件系统当中,当然在用户应用程序以及内核层之间还可能包含嵌入式用户界面GUI。
嵌入式Linux系统的典型架构,如图21所示。
图21嵌入式Linux系统中的典型分区结构
根据上述嵌入式Linux系统的结构组成,基于物联网的智能家居嵌入式系统的设计,需要构建嵌入式系统开发环境,这其中包括Bootloader的移植、Linux内核裁剪、Rootfs根文件系统制作、QT4GUI的移植、Sqlite3嵌入式数据库的移植、Boa嵌入式服务器的搭载等。
2.1Bootloader的移植
Bootloader是在操作系统内核启动之前运行的一段小程序,通过这段程序,可以初始化硬件设备,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备一个正确的环境,然后从别处(比如Flash、NET、SD卡等)引导Linux内核映像文件,最终加载Linux内核,启动Linux系统。
现如今,bootloader的种类非常多,一般比较常用的bootloader[1],在x86架构上有GRUB、LILO等,而在ARM架构上则有Vivi、U_Boot等,其适用性如表21所示。
从表中可以看出,U_boot对各种平台的支持性比较好,事实上,U_boot是遵循GNU条款的开放源代码项目,可以引导多种操作系统、支持多种架构的CPU,比如ARM、X86、PowerPC等。
支持多种操作系统,比如Linux、NetBSD、VxWorks、Windows等。
表21bootloader的分类
Bootloader
描述
X86
ARM
PowerPC
Vivi
针对三星的引导程序
否
是
否
U_Boot
通用引导程序
是
是
是
LILO
Linux磁盘引导程序
是
否
否
GRUB
GNU的LILO替代程序
是
否
否
但是,U_Boot一直以来都没有支持S3C2440,移植U_Boot仍是使用SBC2410的文件作为蓝本,主要针对S3C2440与S3C2410的不同,以及SBC2410与Micro440外设的不同来做相应的调整与修改,并增加新的功能特性。
S3C2440与S3C2410的主要区别是[2]2440的主频更高,在接口方面,增加了摄像头接口和AC97音频接口,在寄存器方面,NANDFLASH控制寄存器有较大变化,另外,芯片的时钟控制寄存器也有一定的变化,其他寄存器是兼容的。
下面是Bootloader移植的简要步骤:
步骤一:
修改顶层Makefile,定义交叉编译工具链和开发板配置选项,在/board目录中建立开发板micro2440目录,并拷贝复制sbc2410x的文件到此,并作适当修改;
步骤二:
测试编译环境,对出现的错误进行相应的调整修改。
如果测试编译通过,说明编译环境的基本的开发板代码没有问题,由于编译的蓝本是基于SBC2410的,接下来的工作主要是按照代码的执行流程来针对mico2440做相应的修改;
步骤三:
进入/cpu/arm920t/start.S初始化代码,针对CPU频率的不同修改初始化设置,针对寄存器配置的不同,作相应的调整与修改;
步骤四:
在UBoot启动的其一阶段,初始化NandFlash控制器,起到代码重定向的作用,但是在第二阶段的start_armboot函数还是需要再次初始化NandFlash控制器,真正启动U_boot,2410与2440NandFlash控制器上的寄存器和启动流程差别很大,需要修改NandFlash底层驱动代码。
接下来增加对yaffs2文件系统的支持,对网络协议、串口传输等作相应的修改;
步骤五:
根据配置文件,重新编译移植。
2.2Linux内核裁剪
相比于Linux2.4内核,2.6内核支持更多的平台架构,采用新的调度算法,使进程间的切换更加高效。
而基于物联网的的智能家居嵌入式系统则是在Linux2.6.32的基础上裁剪移植的。
在虚拟机下建立内核源码树,对于ARM架构的S3C2440,