资源描述
本科毕业设计(论文)基于ARM的嵌入式智能家居远程监控系统设计唐传璋燕 山 大 学2013 年 6 月 本科毕业设计(论文)基于ARM的嵌入式智能家居远程监控系统设计学院(系):电气工程学院 专 业: 工业自动化 学生 姓名: 唐传璋 学 号: 090103010055 指导 教师: 李建雄 答辩 日期: 2013-6-22 燕山大学毕业设计(论文)任务书学院:电气工程学院 系级教学单位:自动化系 学号090103010055学生姓名唐传璋专 业班 级09级工自1班题目题目名称基于ARM的嵌入式智能家居远程监控系统设计题目性质1.理工类:工程设计 ( );工程技术实验研究型( );理论研究型( );计算机软件型( );综合型( )。2.文管类( );3.外语类( );4.艺术类( )。题目类型1.毕业设计( ) 2.论文( )题目来源科研课题( ) 生产实际( )自选题目( ) 主要内容1 查询ARM嵌入式系统的相关技术资料,阅读消化理解工作原理。2 熟悉智能家居监控系统的监控对象和具体要求。3 设计硬件控制系统和软件控制程序。4 给出全部设计参数和图纸。基本要求1、 完成毕业设计说明书一份(格式与毕业设计撰写要求相符),字数在2.4万字以上,要求有不超过300字的中、英文摘要;2、 查阅文献15篇以上,翻译与课题有关的外文资料不少于5千汉字;3、 绘制A1图纸一张以上. 图形及文字符号符合国家现行标准;4、 翻译与研究内容相关的外文资料一份参考资料1ARM嵌入式系统开发与编程2ARM嵌入式系统设计原理与开发实例3智能家居系统与技术4. 期刊学术论文周 次14周58周911周1215周1617周应完成的内容查询ARM嵌入式系统和智能家居监控系统的相关技术资料。 了解ARM嵌入式系统工作原理,设计硬件控制系统。设计控制程序撰写论文绘制图纸、准备答辩指导教师:李建雄职称:讲师 2012年12月7日系级教学单位审批: 年 月 日摘要摘要科技改变生活,科技为人类带来了更舒适更方便的解决方案,智能家居是现代化科技的体现,智能家居也正是在应人们需求下而产生的。本设计的内容是设计一个基于ARM的智能家居远程监控系统。整个硬件控制系统有以下模块:控制主机STM32F103VET6、无线短信收发模块GPRS(远程监控的主要模块)、用于显示的LCD1602液晶显示屏(显示测量出来的温湿度值)、测量外部环境温湿度的温湿度传感器DHT11,异步电机28BYJ-48(模拟控制窗帘收放用到的控制器)、蜂鸣器(报警用)、LED灯(模拟室内各种灯)、继电器(模拟室内各种电器的控制开关)。温湿度传感器测量出来的温湿度数值通过LCD1602来显示,当超过设定的阈值将通过GPRS模块发送警报短信到指定的手机上,同时也可以由手机发送特定短信到GPRS上控制LED灯的亮灭、控制28BJY-48步进电机的正反转、读取当前室内的温湿度并发送回手机上,实现远程监控的。关键词智能家居;远程监控;GPRS;ARMIAbstractAbstractTechnology has changed life, science and technology has brought to mankind more comfortable and more convenient solution, smart home is a manifestation of modern technology, smart home is also in demand should be generated by people. The content of this thesis is to design a remote monitoring system of smart home based on ARM. The entire hardware control system has the following modules: the host controller STM32F103VET6, wireless SMS transceiver module GPRS (the main module of the remote monitoring), LCD display (to display the temperature and humidity measured values), temperature and humidity sensor,DHT11, be used to measure the external environment temperature and humidity, asynchronous motor 28BYJ-48 (analog controller curtain used), a buzzer (alarm), LED light (simulated indoor lamps), a relay (control switch simulation of indoor each kind of electric appliance). The temperature and humidity value measured by the temperature and humidity sensor and displayed by LCD1602, when more than a set threshold an alarm SMS will be sent by GPRS module to the designated mobile phone, but also can be caused by the mobile phone to send a specific message to the GPRS to control LED light, 28BJY-48 stepper motor reversible, read the current indoor temperature and humidity and sent back to the mobile phone.Keywords smart home; remote monitoring; GPRS; ARM3目录 目 录摘要IAbstractII第1章 绪论1 1.1 课题背景1 1.2国外的发展动态1 1.3 国内的发展动态2 1.4 本文各章主要安排2第2章 各个硬件模块的说明3 2.1 主控模块3 2.1.1 STM32的系统架构3 2.1.2 STM32F103VET6的内部资源4 2.2短信收发模块GPRS7 2.3温湿度测量模块8 2.3.1 DHT11的引脚说明8 2.3.2 DHT11的工作原理9 2.4 温湿度液晶显示模块LCD160211 2.4.1 LCD1602的管脚说明12 2.4.2 LCD1602的特性12 2.4.3 LCD1602的基本指令12 2.5 收放窗帘模块步进电机28BJY-4814 2.5.1 步进电机的工作原理14 2.5.2 步进电机的引脚接线14 2.6 本章小结15第3章 硬件系统的设计16 3.1 直流稳压电源的设计16 3.2 STM32最小系统的设计17 3.2.1电源的供电方案17 3.2.2 晶振电路17 3.2.3 复位电路18 3.2.4 串口驱动电路18 3.3 步进电机、继电器驱动电路设计19 3.4 本章小结20第4章 软件程序的设计21 4.1 主函数及TIM2中断服务函数设计21 4.1.1 主函数及TIM2中断服务函数程序代码21 4.1.2 主函数及TIM2中断服务函数程序流程图23 4.2 GPRS来信中断处理函数设计24 4.2.1 GPRS来信中断处理函数程序代码24 4.2.2 GPRS来信中断处理流程图26 4.3 GPRS的AT指令27 4.3.1 本设计中用到的AT指令27 4.3.2 PDU编码27 4.3.3 AT指令的使用程序设计29 4.4本章小结31结论32参考文献33致谢35附录一 整个硬件系统电路图36附录二 开题报告说明37附录三 文献综述38附录四 中期报告39附录五 外文文献及其翻译40附录六 完整的程序代码41III第1章 绪论第1章 绪论1.1 课题背景随着科技的提高,经济的发展,人们的物质生活水平的提高,对家居环境的要求也越来越高,作为家居智能化的核心部分智能家居控制系统也越发显得重要。智能家居控制器可以为系统提供智能控制方案,使住户的控制更便捷,更高效,更能为家庭的日常活动节约不必要的能耗1。而且在现在这个注重绿色环保的世界里,智能的为住户控制好空气的湿度、温度等,检查分析空气成分,让住户安心入住。家居智能化控制的开发和建设是未来国家、经济发展的必然趋势。在科学技术日新月异的今天,智能家居产品也在不断发展寻求突破,用智能的方式缓和、解决社会矛盾,这是本课题的目的及意义所在。1.2国外的发展动态1984年,世界上第一座智能建筑在美国的康涅迪格州建成,这座意义不一般的智能建筑是对一座旧式大楼在一定程度上的改造而完成的。它只是采用计算机系统对大楼的照明、空调、电梯等设备进行监控,并提供情报资料、语音通信、电子邮件等方面的信息服务。2000年,新加坡大约有5000户家庭采用了这种家庭智能家居化系统,而与此同时,美国采用这种智能家居化系统的用户已高达4万户。目前,在国外的家庭智能化系统技术己经越来越成熟,预计今后,越来越多的新房将会安装具有一定的“智能家居化”功能的系统。于此同时,由于科学技术的发展日益标准化,这些新型智能家居系统将会比世界首富比尔. 盖茨耗资六千万美元的高端智能家居别墅便宜得多。在家居智能化系统研发方面,美国及一些西方国家一直处于领先地位。近年来,以摩托罗拉公司及美国微软公司等为首的一些国外知名企业,先后加入到智能家居系统的研发中。比如:摩托罗拉公司开发出来的“居所之门”、微软公司开发出来的“梦幻之家”、IBM公司开发出来的“家庭主任”等都以日趋成稳的技术霸占家居市场。此外,亚洲国家日本、韩国、新加坡等国的领头大企业也纷纷致力于家居智能化的研发,对家居市场更是跃跃欲试。1.3 国内的发展动态1990年后,我国的智能家居化住宅小区日益兴起。我国的智能家居化住宅建筑最早起于广州、深圳和上海等沿海发达城市,并慢慢地向内陆发展。在1997年香港回归时,上海的中皇广场在建设部“97跨世纪住宅小区案竞赛活动”中被建设部科技委员会评为全国首家“智能住宅示范工程”,从此揭开了我国智能家居住宅小区发展的序幕。1999年,建设部住宅产业化办公室、建设部勘察设计司联合组织实施了全国住宅小区智能化技术示范工程,这也标志着我国的智能家居进入了一个新阶段。随着信息化技术日益普,国家经贸委领头成立了家庭信息网络技术委员会,同时信息网络技术体系研究及产品开发已经被列为了国家技术创新的重点专项计划。根据建设部的要求,截止今年,大中城市中50%的住宅要实现智能化2。我国的智能家居建设相对于国外起步比较晚, 尚未形成一定的国家标准。国内各大硬、软件企业机构正在积极的研发更为符合市场的智能家居化产品,以解决我国当前智能化设备使用复杂、产品价格昂贵及实用性差等缺点,而技术创新能力也逐渐向国际先进水平靠拢,这样智能家居的未来值得我们期待3-4。1.4 本文各章主要安排本文第二章主要介绍了智能家居控制系统中用到的各个硬件模块,有主控模块STM32F103VET6、GPRS短信收发模块GTM900-B、温湿度测量传感器DHT11、液晶显示屏LCD1602、步进电机28BYJ-48。第三章主要介绍了硬件系统的设计,重点描述各个功能模块电路图的设计及其功能。第四章主要介绍了控制系统软件程序的设计,主要有主函数及TIM2中断处理函数的程序设计,GPRS来信中断处理函数的设计以及GPRS的AT指令的PDU编码过程。其中给出了主要程序代码及其程序流程图。1第2章 各个硬件模块的说明第2章 各个硬件模块的说明第2章 各个硬件模块的说明2.1 主控模块本设计整个系统的主控芯片选择的具有ARM内核Cortex-M3的STM32F103VET6。该芯片属于增强型的32位高性能微控制器,具有100引脚和高达512K字节的闪存存储器。2.1.1 STM32的系统架构STM32VET6的系统架构包含4个驱动单元:Cortex-M3内核Dcode总线、系统总线、通用DMA1和通用DMA2;4个被动单元:内部闪存存储器Flash、内部数据存储器SRAM、FSMC和AHB到APB的桥。这些单元都是通过一个多级的AHB总线构架相互连接的,如图2-1所示。ICode: 该总线将闪存指令接口与ARM的Cortex-M3内核的指令总线相连接。指令预取在此总线上完成。DCode: 该总线将闪存存储器的数据接口和Cortex-M3内核的数据总线相连接(常量加载和调试访问)。系统总线: 此总线连接Cortex-M3内核的系统总线到总线矩阵,总线矩阵协调着DMA与内核之间的访问。DMA总线: 此总线将DMA的AHB主控接口与总线矩阵相联,总线矩阵协调着CPU的DCode和DMA到 内部闪存存储器Flash、内部数据存储器SRAM和外设的访问。总线矩阵: 该矩阵协调DMA主控总线与内核系统总线间的访问与仲裁,仲裁采用轮换算法。总线矩阵包含4个驱动部件和4个被动部件。 AHB外设通过总线矩阵与系统总线相连,允许DMA访问。AHB/APB桥(APB): 两个AHB/APB桥在AHB和2个APB总线间提供同步连接。APB1操作速度限于36MHz,APB2操作于全速(最高72MHz)。 有关连接到每个桥的不同外设的地址映射。在每一次复位以后,所有除SRAM和FLITF以外的外设都被关闭,在使用一个外设之前,必须设置寄存器RCC_AHBENR来打开该外设的时钟图2-1 STM32系统架构2.1.2 STM32F103VET6的内部资源STM32F103VET6的引脚图如图2-2所示。(1) 内核:ARM的32位Cortex-M3微处理器;最高达72MHZ频率,Cortex-M3内部的数据路径是32位的,寄存器是32位的,存储器接口也是32位的。Cortex-M3采用了哈佛结构,拥有独立的Dcode总线和Icode总线,可以让数据访问和取指并行不悖,这样数据访问就不再占用Icode总线,从而提升了工作性能。为实现这个特性,Cortex-M3内部含有好几条总线接口,每条都为自己的应用场合而优化过,并且它们可以并行工作。图2-2 STM32F103VET6引脚图(2) 存储器:512KB的闪存程序存储器;64K字节的静态数据存储器SRAM,它可以以字节、半字(16位)或全字(32位)访问。(3) 时钟和电源管理:(a) 三种不同的时钟源可被用来驱动系统时钟(SYSCLK):1) HSI振荡器时钟;2) HSE振荡器时钟;3) PLL时钟。(b) STM32的工作电压(VDD)为2.03.6V,通过内置的电压调节器提供所需的1.8V电源;(c) 独立的A/D转换器供电和参考电压;(d) 一个完整的上电复位(POR)和掉电复位(PDR)电路;(e) 可有3种不同工作模式的电压调节器;(f) 可编程电压监测器(PVD)。(4) 通用和复用功能I/O(GPIO和AFIO):5组多功能双向5V兼容的通用I/O端口;可使用复用功能重新映射到其他一些引脚上。(5) DMA控制器:支持定时器、ADC、SPI、IIC和USART等外设。(6) 嵌套向量中断控制器:(a) 有68个可屏蔽中断通道(不包含16个Cortex-M3的中断线);(b) 16个可编程的优先等级(使用了4位中断优先级);(c) 低延迟的异常和中断处理;(d) 电源管理控制;(e) 系统控制寄存器的实现。(7) 模拟/数字转换(ADC):12位的ADC是一种逐次逼近型模拟数字转换器,它有多达18个通道,可测量16个外部和2个内部信号源。(8) 定时器:2个高级控制定时器(TIM1、TIM8);(a) 4个通用定时器(TIM2、TIM3、TIM4、TIM5);(b) 2个基本定时器(TIM6、TIM7);(c) 一个实时时钟、两个看门狗定时器和一个系统滴答定时器(Systick)。(9) 通用异步收发器(USART):全双工的,异步通信RZ标准格式;发送和接收共用的可编程波特率,最高达4.5Mbits/s;智能卡模拟功能。2.2短信收发模块GPRS本设计选用的GPRS模块为华为的GTM900-B。华为GTM900-B无线模块是一款两频段GSM/GPRS 无线模块。它支持标准的AT 命令及增强AT 命令,提供丰富的语音和数据业务等功能,是高速数据传输等各种应用的理想解决方案。GTM900-B 模代表支持PPP 协议的模块,主要兼容西门子C35 模块还有数据传送的AT 命令,适用于小数据量传送的场合,用户无需实现PPP 协议也可实现数据传输的功能。GTM900-B采用AT 命令集,通过UART 接口与外部的CPU 进行通信,主要实现无线短信的发送和接收、音频处理、基带处理等功能。键盘、液晶显示LCD等外部设备由外部CPU 进行控制。本设计主要用于短信的首发来监控主机上的一些外围设备,GTM900引脚图如图2-3所示,主要引脚说明如表2-1所示。图2-3 GTM900引脚图表2-1 GTM900引脚功能说明序号名称I/O功能15VBATI供电610GND-工作地14ADCI模拟数字采样15PWONI开关控制信号17RIOO振铃指示18RXD0OGTM900模块AT命令串口发送信号(对端设备接收)19TXD0IGTM900 模块AT命令串口接收信号(对端设备发送)20CTS0O清除发送21RTS0I请求发送22DTR0I数据设备准备就绪23DCD0O载波检测2429SIM_x-SIM卡的信号31RSTI复位信号32LPGO指示灯状态控制信号2.3温湿度测量模块温湿度的测量选择温湿度传感器DHT11,数字温湿度传感器DHT11是一种具有已校准数字信号输出的温度与湿度复合的传感器。它采用了专用的温湿度传感技术与数字模块采集技术,确保DHT11具有极高的可靠性与优越的长期稳定性。2.3.1 DHT11的引脚说明数字温湿度传感器DHT11中具有一个NTC测温元件和一个电阻式感湿元件,并与一个高性能的8位单片机相连接。因此DHT11具有抗干扰能力强、超快响应、品质卓越、性价比极高等优点。每个温湿度传感器DHT11产品都在极为精确的温湿度校验室中进行了校准。校准系数以程序的形式储存在DHT11中的OTP内存中,传感器内部在检测信号的处理过程中要使用这些校准系数。其引脚接线图如图2-4所示,引脚说明如表2-2所示。图2-4 DHT11引脚接线图表2-2 DHT11引脚功能说明引脚Pin名称注释1VDD供电,3-5.5VDC2DATA串行数据,单总线双向3NC空脚,悬空4GND接地,电源负极2.3.2 DHT11的工作原理DHT11的供电电压为35.5V。传感器上电后,要等待1s 以越过不稳定状态,在此期间无需发送任何指令。DATA引脚用于微处理器与DHT11之间的通讯和同步,采用的是单总线数据格式,一次通信时间为4ms左右,数据分为整数部分和小数部分,当前的小数部分现读出为零。(1) 数据的格式进行一次温湿度采集得到完整的数据为40bit,高位数据先出。数据格式:8bit湿度整数+8bit湿度小数+8bi温度整数+8bit温度小数+8bit数据校验和。采集到的温湿度数据传输正确时,其校验和等于“8bit湿度整数+8bit湿度小数+8bi温度整数+8bit温度小数”所得结果的末8位数据。(2) 主机与DHT11的通信过程主机与DHT11进行通信要有一个握手的过程,如图2-5所示,当主机开始发送开始信号后,温湿度传感器DHT11即从低功耗模式转换到高速模式,等到主机的开始信号结束后,DHT11立即发送响应信号,接下来开始送出40bit的温湿度数据,用户可选择需要读取的温湿度数据。若没有接收到主机发送开始信号,DHT11就不会响应主机的信号也就不会主动进行温湿度采集。当DHT11采集数据完成后就会转换到低功耗模式。图2-5 DHT11与主机通信过程如图2-6所示,当总线空闲是其状态为高电平,主机要与DHT11通信则需要主机将总线拉低至少18毫秒以上,再拉高2040us,保证DHT11传感器能检测到开始信号。当DHT11检测到主机的握手开始信号后,会等待主机开始信号的结束,然后发送80us低电平的响应信号。主机发送开始信号结束后, 接收DHT11的响应信号,当主机发送开始信号后,就可以由输出模式切换到输入模式,开始接收DHT11测量出来的温湿度数据。图2-6 主机与DHT11的握手过程DHT11发送80us低电平的响应信号后,再把总线拉高80us,准备发送测量出来的温湿度数据,每1bit的数据都以50us的低电平时隙开始,高电平的长短决定了该数据位是1还是0,格式分别如图2-7和图2-8所示。如果主机读取DHT11的响应信号为高电平,则是DHT11没有响应,温湿度数据测量失败。当最后1bit温湿度数据传送完后,DHT11将总线拉低50us,接着总线由上拉电阻拉高进入空闲状态。图2-7 数字0信号的表示图2-8 数字1信号的表示2.4 温湿度液晶显示模块LCD1602液晶显示屏LCD1602是一种专门用来显示符号、数字、字母等的点阵型液晶显示模块,它由32个5*11或5*7等的点阵字符位组成,分两行显示,每行16个字符位。每个点阵字符位都可以显示一个字符,每两个字符位间都有一个点距的间隔,两行间也有一定的间隔,起到了字间距和行间距的作用。1602是指显示的内容为16*2,即可以显示两行,每行显示16个字符(显示字符和数字)。2.4.1 LCD1602的管脚说明LCD1602的管教功能说明如表2-3所示表2-3 LCD1602的管教说明引脚名称引脚说明1VSS电 源 地2VDD5 V 电 源 正 极 3V0液晶显示器对比度 调 整端可以通过一个电位器调整对比度4RS寄存器选择,高电平1时选 择 数据寄存器、低电平0时选择指令寄存器5RW读写信号端,高电平1时进行读操作,低电平0时进行写操作6E使能(Enable)端,高电平时读取数据,负跳变时执行指令。714D0D7双向数据传输端,用于传输数据15BLA背光源正极16BLK背光源负极2.4.2 LCD1602的特性(1) 3.3V或5V工作电压,对比度可调;(2) 内含复位电路;(3) 提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能;(4) 有80字节显示数据存储器DDRAM;(5) 内建有192个5*7点阵的字型的字符发生器CGROM;(6) 8个可由用户自定义的5X7的字符发生器CGRAM。2.4.3 LCD1602的基本指令LCD1602的显示控制模式可以自己设定,通过指定的指令码输入LCD1602中就能得到想要的显示模式。指令的写入需要寄存器选择功能,即当RS为低电平,RW为低电平时为指令寄存器(IR)的写入;当RS为高电平,RW为低电平时为数据寄存器(DR)的写入;当RS为低电平,RW为高电平时为忙标志和地址计数器的读出;当RS为高电平,RW为高电平时为数据寄存器的读出。LCD1602的基本指令如表2-4所示。表2-4 LCD1602的基本指令表指令码功 能指令RSRWD7D6D5D4D3D2D1D0清除显示0000000001数据指针及所有显示清零显示 模式设置0011100000设置16x2显示,5x7点阵,8位数据口显示开关及 光标设置0000001DCBD=1:开显示;D=0:关显示;C=1:显示光标;C=0:不显 示 光标;B=1:光标闪 烁 ; B=0:光标不闪烁进入点设定00000001NS指定在数据的读取与写入时,设定游标的移动方向及指定显示的移位设定DDRAM地址0010AC5AC4AC3AC2AC1AC0设定DDRAM 地址(显示位址)第一行:80H87H第二行:90H97H读取忙标志和地址01BFAC6AC5AC4AC3AC2AC1AC0读取忙标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值写数据到RAM10数据将数据D7D0写入到RAM读RAM的值11数据从内部RAM读取数据D7D02.5 收放窗帘模块步进电机28BJY-482.5.1 步进电机的工作原理步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。通过控制脉冲个数可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率可以控制电机转动的速度和加速度,从而达到调速的目的。步进电机28BYJ-48是四相八拍型电机,工作电压为直流5V12V。当对步进电机的四相输入一系列连续不断的控制 脉 冲时,步进电机就可连续不断地转 动 。每个控制脉冲信号对应步进电机的某一相 或 两相绕组的通电状态改变一次,对应转子转过一个步距角。当通电状态的改变 完 成一个循环时,转子转过一个齿距。四相步进电机有两种运行方式:四相四拍、四相八拍。其中拍数、步距角及转速的计算为:(1) 拍数:完成一个磁场周期性变化所需脉冲数,或指电机转过一个齿距角所需脉冲数,以四相步进电机为例,四相四拍运行方式为AB-BC-CD-DA-AB,四相八 拍 运行方式为A-AB-B-BC-C-CD-D-DA-A.;(2) 步距角:对应一个控制脉冲信号,步进电机转子转过的角位移用 表示。=360度(转子齿数J*运行拍数),以常见的四相、转子齿为50齿的电机为例。四拍运行时 步 距角为=360度/(50*4)=1.8度(俗称整步),八拍运行时步距角为=360度/(50*8)=0.9度(俗称半步)。(3)步进电机转速的计算:以基本步距角1.8的步进电机为例(现在市场上常规的二、四相混合式步进电机基本步距角都是1.8),四相八拍运行方式下,每接收一个脉冲信号,转过0.9,如果每秒钟接收400个脉冲,那么转速为每秒400X0.9=360,相当与每秒钟转一圈,每分钟60转。2.5.2 步进电机的引脚接线红线接电源5V,橙色电线接GPIOC_Pin_0口,黄色电线接GPIOC_Pin_1口,粉色电线接GPIOC_Pin_2口,蓝色接GPIOC_Pin_3口。由于stm32主机接口信号不够大需要通过ULN2003放大再连接到相应的电机接口,电机正反转时各接口输出情况如表2-5所示。正反转的顺序刚好相反,所以可以定义旋转相序:unsigned char F_Rotation4=0x03,0x06,0x0C,0x09;/正转表格unsigned char B_Rotation4=0x09,0x0C,0x06,0x03;/反转表格步进电机的正反转控制脉冲输入情况如表2-5所示。表2-5 步进电机正反转脉冲控制转向橙黄粉蓝十六制(GPIOC端口)正转00110x0301100x0611000x0C01100x09反转10010x0911000x0C01100x0600110x032.6 本章小结本章主要对智能家居的整个硬件系统所用到的模块进行了介绍,主控模块STM32F103VET6、无线收发GPRS模块、温湿度测量传感器DHT11、液晶显示屏LCD1602、步进电机28BYJ-48。GPRS模块用来发送报警短信、温湿度测量值的短信以及接收特定短信以控制其他模块的工作;温湿度测量传感器DHT11用来测量家里的温湿度情况,对家里是否有火灾危险情况进行监视,当温湿度超出阈值时会通过GPRS发送报警短信;液晶显示屏LCD1602用来显示DHT11测量出来的温湿度数值;步进电机28BYJ-48用来模拟家里窗帘收合控制。本章介绍了这些模块的工作原理、引脚说明以及接线等。15第3章 整个硬件系统的设计第3章 硬件系统的设计3.1 直流稳压电源的设计 直流稳压电源用来给主机及各个模块供电,其工作原理可分为四个部分,电路接线图如图3-1所示。图3-1 直流电源电路(1)电源变压器:是降压变压器,它将电网220V交流电压变换成符合需要的交流电压,并送给整流电路。(2)整流滤波电路:整流电路将交流电压变换成脉动的直流电压。本文采用桥式整流滤波。(3)滤波电路:将整流电路输出电压中的交流成分大部分加以滤除,从而得到比较平滑的直流电压。(4)稳压电路:稳压电路的功能是使输出的直流电压稳定,不随交流电网电压和负载的变化而变化。本文采用固定式集成三端稳压器78L05,输出为5V直流电压,再经过一个稳压器件AMS1117输出直流电压3.3V。3.2 STM32最小系统的设计 STM32的最小系统由主芯片STM32F103VET6及其供电电源、晶振电路、复位电路、串口驱动电路等构成。3.2.1电源的供电方案(1) 电路由稳定的电源VDD供电,本设计使用的是3.3V直流电压,VDD管脚为I/O管脚和内部调压器的供电。(2) VSSA,VDDA =2.03.6V:为ADC、复位模块、RC振荡器和PLL的模拟部分提供供电。使用ADC时,VDD不得小于2.4V。VDDA和VSSA必须分别连接到VDD和VSS。(3) VBAT =1.83.6V:当关闭VDD时,(通过内部电源切换器)为RTC、外部32kHz振荡器和后备寄存器供电。(4) VREF+引脚可以连接到VDDA外部电源。如果在VREF+上使用单独的外部参考电压,必须在这个引脚上连接一个10nF和一个1F的电容。在所有情况下,VREF+必须在2.4V和VDDA之间。 (5) VREF+连接到VDDA或VREF+。3.2.2 晶振电路STM32上电复位后默认使用内部精度8MHz左右晶振,如果外部接了8MHz的晶振,可以切换使用外部的8MHz晶振,并最终PLL倍频到72MHz。外部晶振电路及RTC晶振电路如图3-2和图3-3所示。图3-2 外部晶振电路图图3-3 RTC晶振电路3.2.3 复位电路STM32的外部硬件复位电路如图3-4所示,按下按钮S1,将RST脚的电平拉低即能实现stm32的外部硬件复位。图3-4 复位电路3.2.4 串口驱动电路MAX232芯片是用来做电平转换的,标准的RS232电平很高,达正负15V.常用的TTL电平最高5V。相互连接的话,必须进行电平转换!由于电脑串口输出电压高达12V,直接与单片机连接会烧坏芯片。所以用MAX232来进行电平转换。MAX232芯片采用单+5V电源供电,仅需几个外接电容即可完成从TTL到RS232电平的转换,共两路。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DP9插头;DP9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。具体电路连接如图3-5所示。图3-5 STM32串口驱动电路3.3 步进电机、继电器驱动电路设计 由于STM32主机的输出信号较小不足以使步进电机、继电器正常工作,所以需要接上一个ULN2003功率放大stm32输出的信号。蜂鸣器通过一个三极管驱动,按主机输出的高低电平控制蜂鸣器的响与不响;步进电机的运转通过ABCD四相输入一系列连续不断的脉冲信号来控制;继电器的控制相当于开关控制,与蜂鸣器一样通过一个三极管的饱和导通情况来控制继电器的吸合。具体电路连接如图3-6所示。图3-6 步进电机等驱动电路3.4 本章小结本章主要介绍了部分硬件系统模块的电路设计。主要有直流稳压电源的设计、STM32最小系统的设计、步进电机驱动电路的设计,其中STM32最小系统的设计介绍了外部晶振电路、复位电路和串口驱动电路。直流稳压电源电路输入交流220V经过变压整流滤波稳压输出5V直流电压和3.3V直流电压为整个系统的各个模块供电;STM32是主控模块,要正常工作必须保证其自身最小系统的完整,供电方案、外部晶振电路、串口驱动电路等的存在能使STM32与其外围设备正常工作;步进电机的驱动电路的设计是由于STM32输出的电压信号较小不足以驱动步进电机的正常工作,需要加上一个功率放大ULN2003来驱动步进电机的正常工作。21第4章 软件程序的设计第4章 软件程序的设计4.1 主函数及TIM2中断服务函数设计 主函数开始先初始化所用到的GPIO端口、配置时钟、配置中断等,并先测量一次温湿度显示在LCD液晶屏上,接着进入循环等待各个模块的中断到来,在循环中判断测量出来的温湿度数值是否超出设定的阈值,若超出,则发送报警短信到目标手机上。TIM2定时器用来实现每10s进行测量一次温湿度,并将测量出来的数据分析处理后通过LCD1602显示出来。具体过程如流程图所示。4.1.1 主函数及TIM2中断服务函数程序代码void main() /初始化 LCD_GPIO_Configuration(); Time2_GPIO_cfg(); Time2_NVIC_cfg(); Time2_Configuration(); RCC_cfg(); GPIO_cfg(); NVIC_cfg(); EXTI_cfg(); Rx_USART_Configuration(); Del_Mesg(); /删除SIM卡里的短信 LCD_Init(); /LCD1602初始化 if(Start_DHT11()=1)/检测是否有响应,结果有响应往下执行 while(!DHT11_Get_Data(); /从DHT11取数据 Display_WSD(); /显示温湿度 Send_Mesg_Sign=0; /用于防止重复发送报警短信 TIM_Cmd(TIM2, ENABLE);/开启TIM2时钟,10s读取一次温湿度值 while(1) if(Table_Data226)|(Table_Data065)/温湿度超过设定值则发送报警短信 GPIO_SetBits(GPIOB,GPIO_Pin_5);if(Send_Mesg_Sign=0) Send_Mesg();/发送报警短信 /* 函数名称:TIM2_IRQHandler(void) 功能: TIM2的中断处理*/void TIM2_IRQHandler(void) TIM_ClearITPendingBit(TIM2, TIM_FLAG_Update); /清中断 GPIO_SetBits(GPIOB,GPIO_Pin_7); Start_DHT11(); DHT11_Get_Data(); Display_WSD();/从DHT11取数据4.1.2 主函数及TIM2中断服务函数程序流程图图4-1 主函数与TIM2中断服务函数流程图4.2 GPRS来信中断处理函数设计当GPRS收到短信时从Ring端口会发出一个振铃信号,将Ring口与STM32的GPIOA_Pin_2口连接起来作为外部中断。即当GPRS接收到短信时通过Ring端口产生一个外部中断,在外部中断服务函数里首先要清除中断标志位,防止重复进入中断。由于本设计中用到短信控制命令均为Text模式,所以在中断处理里先发送AT指令“AT+CMGF=1”设置短信为Text模式,再发送AT指令“AT+CMGR=1”读取SIM里的第一条短信即为刚收到的未读短信,然后嵌套进入USART串口接收中断,将读取出来的短信内容存到接收缓存Rx_Buf 数组中,再对缓存中的内容进行判断,判断接收到的短信内容是否为“Light On”、“Light Off”、“DJ Left”、“DJ Right”或“WSD”,再进行响应的开关灯、步进电机的控制或回复温湿度数据短信的处理。具体过程如流程图所示。4.2.1 GPRS来信中断处理函数程序代码/* 函数名称:EXTI2_IRQHandler(void) 功能: EXTI2的中断处理*/void EXTI2_IRQHandler(void) EXTI_ClearITPendingBit(EXTI_Line2);/清空中断标志位,防止持续进入中断 USART_ClearFlag(USART1, USART_FLAG_TC); USART_Send_String(AT_CMGF_Text); USART_Send_String(rn); Delay_Nms(4000); Clear_Buf(); USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);/接收使能 Rx_Count=0; USART_Send_String(AT_CMGR_1); USART_Send_String(rn); Delay_Nms(4000); USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);/接收失能if(Rx_Buf15=O)|(Rx_Buf16=O)|(Rx_Buf14=O)|(Rx_Buf12=O)|(Rx_Buf13=O) GPIO_SetBits(GPIOB,GPIO_Pin_9); t=5; else t=0;if(Rx_Buf105+t=r)&(Rx_Buf107+t=0)&(Rx_Buf109+t=4)&(Rx_Buf110+t=C)&(Rx_Buf118+t=7)&(Rx_Buf138+t=E) GPIO_SetBits(GPIOB,GPIO_Pin_1);/Light Onif(Rx_Buf105+t=r)&(Rx_Buf107+t=0)&(Rx_Buf109+t=4)&(Rx_Buf110+t=C)&(Rx_Buf113+t=6)&(Rx_Buf118+t=7)&(Rx_Buf138+t=6)&(Rx_Buf141+t=6) GPIO_ResetBits(GPIOB,GPIO_Pin_1);/Light Offif(Rx_Buf105+t=r)&(Rx_Buf107+t=0)&(Rx_Buf109+t=4)&(Rx_Buf110+t=B)&(Rx_Buf113+t=5)&(Rx_Buf118+t=0)&(Rx_Buf122+t=F)&(Rx_Buf126+t=E) BJDJ_28BYJ48_L(); /DJ Leftif(Rx_Buf105+t=r)&(Rx_Buf107+t=0)&(Rx_Buf109+t=4)&(Rx_Buf110+t=B)&(Rx_Buf113+t=5)&(Rx_Buf118+t=0)&(Rx_Buf122+t=F)&(Rx_Buf126+t=6) BJDJ_28BYJ48_R(); /DJ Rightif(Rx_Buf104+t=r)&(Rx_Buf106+t=0)&(Rx_Buf108+t=5)&(Rx_Buf109+t=7)&(Rx_Buf112+t=5)&(Rx_Buf113+t=3)&(Rx_Buf116+t=4)&(Rx_Buf117+t=4) Send_WSD_Mesg(); /WSD Delay_Nms(1000); Del_Mesg();/* 函数名称:USART1_IRQHandler(void) 功能: USART1的中断处理*/void USART1_IRQHandler(void) if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET) USART_ClearITPendingBit(USART1,USART_IT_RXNE); USART_ClearFlag(USART1,USART_IT_RXNE); Rx_BufRx_Count+=(USART_ReceiveData(USART1)&0x7f); if(Rx_Count149) Rx_Count=0; 4.2.2 GPRS来信中断处理流程图图4-2 GPRS来信中断流程图4.3 GPRS的AT指令4.3.1 本设计中用到的AT指令AT+CMGF=1 设置GPRS的短信格式为textAT+CMGF=0 设置GPRS的短信格式为PDUAT+CMGD=1,4 删除SIM卡内的所有短信AT+CMGR=1 读取SIM卡内的第一条短信AT+CMGS=“15232330101” 设置短信发送的目标收号码AT+CMGS=43 设置发送中文短信的字符数4.3.2 PDU编码发送短消息常用
展开阅读全文