智能家居设计

摘要

近年来随着人们生活水平不断提升以及计算机技术、通信技术和网络技术的发展,人民对家居环境的要求也越来越高,智能家居逐渐成为未来家居生活的发展方向。随着手机以成功人们日活生活必不可行的工具之一,使用手机监控和操作家庭电器的这种智能家居控制模式以越来越受到人们大众的欢爱,成为家居智能控制模式的发展趋势。

针对以上背景本文设计介绍一种以stm32 单片机为核心,设计了一套基于GPRS无线网络的智能家居控制系统。该系统以GPRS通信为基础、能通过无线通信技术实时监控家居的温湿度状态,并能自由控制家居的电器的开关操作,利用stm32内部万年历实现有效对家用电器进行时间性管理,同时集成光强采集电路,能自动开关窗户的功能。

本设计硬件电路结构简单,分为控制器模块,GPRS模块,继电器控制模块,步进电机控制模块等五大电路模块,其中控制器选用基于cotex-m3内核的32位微控制器STM32F103R8T6。GPRS模块选用SIM900模块,人机交互模块选用OLED12864模块显示数据,独立键盘作为输入设备,继电器控制输出控制家电电路开关。

本文详细描述了智能家居控制系统的硬件和软件设计。通过硬件电路,和软件的设计,本文完成了样机制作和调试,通过系统测试,本设计样实现了通过GPRS自由控制家居电器的打开或者关闭,和时间管理功能,窗帘自动根据当前窒内的光照强度而打开或者关门。本设计具有一定的参考价值和实用价值。

关键词:智能家居;gprs;远程控制;stm32;光强

ABSTRACT

In recent years, with the development of people's living standards improve and the computer technology, communication technology and network technology, people's demand for home environment more and more is also high, the smart home has become the future development direction of home life. With the mobile phone to successful people, life will not be feasible tools, the use of mobile phones and monitor operation of household electrical appliances in the smart home control mode to more and more people love, become the development trend of intelligent home control mode.

In view of the above background, this paper introduces the design of a STM32 microcontroller as the core, design a set of smart home based on GPRS wireless network control system. The system is based on GPRS communication as the foundation, through the real-time monitoring of temperature and humidity condition of home wireless communication technology, and can switch operation control home appliances, to achieve effective time management of household appliances using STM32 calendar, at the same time integrated intensity collection circuit can automatically switch the window function.

The design of hardware circuit has the advantages of simple structure, divided into the control module, GPRS module, relay control module, stepper motor control module five module, wherein the controller adopts 32 bit cotex-m3 core micro controller based on STM32F103R8T6. The GPRS module using SIM900 module, human-computer interaction module using OLED12864 module to display data, independent of the keyboard as the input device, relay control output circuit switch control appliance.

In this paper, a detailed description of the hardware and software design of intelligent control system Home Furnishing. Through the hardware circuit design, and software, this paper completed the prototype manufacturing and testing, by testing the system, the design of the sample through the implementation of the GPRS control to open or close the Home Furnishing appliances, and time management function, the curtain automatically according to the current indoor illumination intensity and open or closed. It has certain reference value and practical value of this design.

Keywords:  Intelligent Home Furnishing; GPRS; remote control; STM32; intensity


目录

1 绪论

1.1 课题研究的背景及意义

1.2 本文主要研究内容及结构概述

2 系统总体方案设计

2.1 系统需求分析

2.2 系统方案选择

2.2.1 无线通讯方案选择

2.2.2 显示器方案选择

2.2.3 温湿度传感器方案选择

2.3 系统方案整体设计

3 系统硬件电路设计

3.1 控制单元模块

3.2 人机交互模块

3.3 GPRS电路设计

3.4 温湿度传感器电路设计

3.5 光强检测电路设计

3.6 窗帘控制电路设计

3.7 继电器驱动电路设计

3.8 电源电路设计

3.9 STM32F103XX系列微控制器介绍

3.9.1 Cortex-M3内核简介

3.9.2 STM32F103XX系列微控制器简介

4 系统软件设计

4.1 软件开发环境介绍

4.2 C语言介绍

4.3 软件总体设计

4.3.1 程序结构分析

4.3.2 主程序设计

4.3.3 OLED驱动程序分析

4.3.4 SIM900通信程序设计

5 系统调试与结果分析

结束语

致谢

参考文献

  1. 绪论
    1. 课题研究的背景及意义

智能家居是以住宅为平台,兼备建筑、网络通信、信息家电、设备自动动化、集系统、结构、服务、管理为一体的高效、舒适、安全、便利、环保的居住环境,是融合了自动化控制系统、计算机网络系统和网络通信技术于一体的家居控制系统。

随着经济的发展,人民生活水平的提高,人民可支配的收入逐渐增多,对家居环境的要求也越来越高,因此对智能家居的发展就显得越来越重要。现在智能家居行业涉及的方面包含家电控制、智能照明、安全监控及远程抄表收费系统等。可以通过手机、电脑等工具连接网络,实现对室内家电进行本地或远程控制;室内烟雾、煤气检测及门窗监控;水、电、煤气等自动抄表收费等。智能家居系统控制可以给用户提供更加智能的家居体验,使用户控制更简单,更高效,也能为家庭提供可观的节能减耗效果,使用户居住起来更加的舒适,并且可以通过不同的设计方案满足不同客户的家居需求。

随着国民经济水平的提高及科学技术的飞速发展,尤其是计算机技术、传感器技术的迅猛发展与提高,使得家庭生活智能现代化成为可能。计算机科学技术已经从舒适性、方便性以及安全性等方方面面影响并改变着人们的生活,颠覆了人们的生活习惯,提升了人们的生活质量,因此智能家居控制系统在这样的形式下应运而生。

在国外,早在1984就开始出现智能建筑,许多国家先后开发出智能家居产品。在美、德、日、新加坡等国智能化家居技术都已在实体的住宅中应用已久。在我们智能家居技术起步于20世纪80年代未,主要集体于三表抄表系统,门禁系统,可视对讲系统等。这些系统离不开现场的网络布线,给建设带来较沉重的成本。随着无线网络技术的强趋发展,因其建设成本低,维护方便等优势,无线网络技术应用于家居控制已成为趋不可挡的趋势。

针对以上背景,本文介绍一种基于stm32控制器的和GPRS网络通信控制的家居环境监测及家居电器开关控制系统。以满意人们生活的多样化需要,提升人们的生活质量。

    1. 本文主要研究内容及结构概述

针对以上背景,本文介绍一种基于stm32控制器的和GPRS网络通信控制的智能家居系统,以实现远程管理家用电器,及监控家居环境的功能。

本设计硬件电路结构简单,分为控制器模块,gprs 通讯模块,人机交互模块,继电器输出控制模块,窗帘控制模块等五大电路模块,其中控制器选用基于arm核,cotex-m3技术的32位控制器STM32F103R8T6。人机交互模块选用OELD显示器显示数据,独立键盘作为输入设备, 窗帘控制采用步进电机模块。

论文的结构安排如下:

第一部分,介绍本设计的背景,设计GPRS网络通信控制的智能家居系统的实用意义,同时阐明本文的机构安排。

第二部分,研究gprs通信控制的原理,完成基于stm32控制器的和GPRS网络通信控制的智能家居系统的总体方案设计。

第三部分,完成整个系统的硬件电路设计。

第四部分,完成系统的软件系统设计。

第五部分,完成本设计的系统调试,并分析解决调试中遇到的问题。

  1. 系统总体方案设计
    1. 系统需求分析

根据任务书要求:本文是设计出一款基于stm32控制器的和GPRS网络通信控制的智能家居系统。该系统技术指标为:

1)架计stm32 硬件系统,结合GPRS无线网络技术,实现手机短息控制家用电器开关操作

2)系统实时采集家居环境温湿度状态,在发生异常时,能实现短信通知主机报警。

3)系统具有万年历时钟,能通过设置时间,完成家用电器的定时开关。

4)系统自动采样窒内光照强度,自动控制窗户开关。

5)人机交互良好,具有好的人性化操作界面。

    1. 系统方案选择
      1. 无线通讯方案选择

方案一、使用网络实现无线控制。利用当前的互网联技术,通过网络的方式达到远程监控家居电器的目的。随着互网联网的普通,通过互联网方式控制家居的模式不惜为一种好的手段。但是利用互联网络往往离不开布线,增加系统的布线成本,尽管有无线网络,但是并不是非常什分稳定,时常会断线,给系统带来不稳定因素,而且由于互联网涉及到控制环节较多,实现开始难度较大。成本也相对较大。

方案二、使用GPRS网络实现无线控制。当前随着手机的普及,手机以经成为人民生活必不可少一部分。有手机便有GPRS网络。根中国移动信息产业公布的数据统计,GPRS网络中国的复盖率以达到98%。因此以GPRS无线为载体的家居控制更具条件。而且从成本及技术难度上考虑,GPRS无疑更具优势。因此本方案选择以GPRS网络的方式实现无线通信。

      1. 显示器方案选择

方案一:数码管显示。利用LED发光数码管分别显示当前绝对海拔高度和相对高度。

该方案硬件设计简单,但由于数码管存在只能显示数字,不能显示字符的缺点,同时由于每个数码管需要8位控制端口控制,占用控制器I/O资源。若显示数据大,则需要另外的编码器进行设计。该方案需要占用大量的软件资源,同时人机交互界面不友好。

方案二:OLED液晶屏显示。考虑到低功耗和交互的友好性,液晶屏显示必然成为首先。传统的字符型液晶显示器,虽然可以能符合以上两点要求。但相比于便携性,选用OLED显示器,将更为优越。OLED又称为有机激光显示,其具有自发光的特性,采用非常薄的有机材料涂层和玻璃基板,当有电流通过时,这些有机材料就会发光,而且OLED显示屏幕可视角度大,并且能够节省电能。非常便合于便携式设备上。本设计选用OLED最大支持64个字符显示,其4行,每行16字符,除了支持所有ASCII码,还自带字体库。非常便于显示信息。显示字符支持黄,蓝两种不同颜色。

OLED显示器一般均SPI数据通讯方式。只需通过将OLED接口连接到控制器I/O端,控制器将需要显示的内容发送到液晶屏,液晶即可将数据显示出来,并保存当前显示状态。选用该方案,不但显示内容更为丰富,需要更显人性化。

      1. 温湿度传感器方案选择

方案一:采用电阻式湿度片和温度片:利用吸湿膜片和电阻温度片随湿度变化改变其电阻值的原理,将阻转换成电压信号,通过搭建放大电路或者滤波电路或者调调零电路,经集成ADC芯片转换成数字信号,供控制器采集。随着传感器的集成化程序越来越高,此方案以渐渐不被数字化集成系统所采集。取而代之是采用集成一体化的数字传感器

方案二:采用温一体化的温度传感器,DHT11是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数,实现超快响应、高精度检测。其具有单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则,产品为 4 针单排引脚封装。连接方便。鉴于以上考虑,本设计采用DHT11作为温湿度传感采集器件。

    1. 系统方案整体设计

通过方案比较分析确定了本设计的基本方案。同时完成了本设计的总体设计。系统总体结构框图如图1.1所示。本设计硬件电路结构分为如下5大部分,分别是STM32控制器、按键、OLED显示器、SIM900无线模块,继电器输出模块,窗帘控制模块,光强检测,电源模块。其中控制器选用32位微控制器STM32F103R8T6。人机交互模块选用0.96寸12864 OLED显示器显示数据,独立按键作为输入设备。传感器采用一体化

温湿度传感器DHT11。GMS模块采用支持AT指令集的SIM900模块。

系统运行时,通过控制器通过程序读取由光感电阻组成的光强检测电路输出的AD值读取当前光照强度,控制窗帘的开关从而控制家居的通光率。系统运行时控制器通过串口访问SIM900模块,不断解析是否收到主机手机发送的短信命令,并对有效命令进行解析控制继电器进行开闭动作,从而控制家电的开关。当用户想打开或者关闭某路用电设备时,只需通过手机短息往控制器发送指令的开关命令,实现远程控制的功能。接着系统不断采集温湿度传感器DHT11的采集值,判断当前温湿度是否异常,当发现异常时触发SIM900模块往设定手机号发送异常信息。最后系统完成人机交互,通过按键扫描,响应按键输入和控制OLED显示各类相关数据信息。

  1. 系统硬件电路设计

通过第一章,本文完成了系统的方案比较与整体结构设计。本章将完成整个系统的硬件电路设计。本章将分五大部分来介绍本系统硬件电路,分别为控制单元模块、人机交互模块、传感器模块,最后对所用控制器做相关的介绍。

    1. 控制单元模块

本设计采用的控制器是一款基于arm核和cotex-m3架构技术的32位控制器。支持传统Thumb和新型Thumb-2指令的译码器,采用三级流水线指令作业方式,内部PLL技术,最高运行频率达72MHZ。并且内部资源丰富,内置有128K的flash,多达20K的运行RAM,集成多路定时器,12位的AD转换器,多达9个通信接口和USB2.0接口,内嵌经出厂调教的8MHz的RC振荡器。支持串行单线调试(SWD)和JTAG接口技术,支持睡眠、停机和待机模式,其采用ECOPACK封装。被告广泛应用于便携式穿戴设备上。

由于STM32内部有高达128K字节的内置闪存存储器,用于存放程序和数据。多达20K字节的内置 SRAM,CPU能以0等待周期访问(读/写)。这样在我们所设计的系统中就去掉了以往很多嵌入式项目设计中所需要的用于外部程序存储器的Flash芯片和用于外部数据存储器的SRAM芯片,大大节约了系统成本,提高了系统可靠性及稳定性。

主控电路为整个电路的核心,负责着整个系统的功能实现,如图2.1所示为控制单元模块,其中控制器为STM32F103R8T6,按键S1为复位按键,Y1为晶振。控制器采用STM32F103R8T6。电路中为了计时方便计算,本设计的晶振选用8MHz无源外部晶振,配合两个起振电容C11,C13,形成晶体谐振电路为控制器提供一个8MHz的稳定的时钟源。再经内部配置PLL,使控制器运行在72MHZ工作频率。为了方便起振,起振电容选用22pF。图中Y2为万年历时钟电路BT1为万年历备用电池,当主机电源关闭时,自动切换到电池供电,以保证万年历数据不丢失。虽然本设计使用控制器的万年历,但硬件上留有设置口,为日常升级使用。R18为0欧电阻,可以适应吸取一些微小信号,电容C15,C16构成退耦滤波电路,大电容C15用于滤除低频电源纹波,小电容C16用于滤除高频噪声,使得电源更加干净稳定。BOOT0,和BOOT1引脚均通过下拉电阻至地,使主控制器工作在用户闪存启动模式。电容C10以及电阻R11构成复位电路,当上电后,电流流过电阻R11为电容充电,此时在单片机的RESET复位引脚得到高电平,当充电结束后电流为0,此时复位端电压为0V,既低电平,整个充电过程在RESET端形成一个下降沿脉冲使得单片机复位,系统开始正常工作。当按键S1按下后,电容端的电压对释放,RESET端重新出现高电平,松开后,C10电容重新被充电,因此RESET再次出现一低电平脉冲,使得MCU复位。

    1. 人机交互模块

人机交互模块包括按键设定电路和OLED显示电路,如图2.2所示。由于需要设定万年历时间,温湿度异常报警,主机手机号等参数,系统设定三个按键完成人机输出。R20,R21,R22为上拉电阻,当按键弹开,输入至MCU引脚为高电平,当按键按下,由于S2另一端接地,输入至MCU引脚变低电平。控制器通过采集输入引脚PB8,PB9,PB10可以获知按键输入状态。

OLED显示器采用SPI数据通讯方式一共有7个引脚,1,2脚为供电引脚,3号脚为SDI脚接到MCU,PB15脚(亦为SPI2_MOSI脚),4号脚为SCL脚接至MCU的P14脚(亦为SPI2_MISO脚),5号脚为SCK接至MCU的P12脚(亦为SPI2_SCK脚),6号脚为RESET脚,由于复位电平方式与主控制器兼容,直接接至主控制器RESET端。7号脚为A0脚为数据/命令选择口脚接至MCU的PB11脚。

    1. GPRS电路设计

GSM模块,是系统关键部分,直接关系到能否实现远程控制的功能实现。因此本设计直接采用集成的GSM模块SIM900模块。它是一种完整的无线GSM模块,主要由GSM基带处理器、GSM射频模块、供电模块(ASIC)、闪存、ZIF连接器、天线接口六部分组成。它可以快速、安全可靠地实现系统方案中的数据传输、语音传输、短消息服务(Short Message Service)和传真服务。模块的工作电压为3.7~4.2V。该模块有AT指令集接口,支持文本和PDU模式的短消息第三组的二类传真等。此外,该模块还具有电话簿功能、多方通话、漫游检测等功能。常用工作模式有省电模式、IDLE、TALK等模式。通过独特的40管脚ZIF连接器,实现电源连接、指令、数据、语音信号、及控制信号的双向传输。通过ZIF连接器及50Ω天线连接器,可分别连接SIM卡支架和天线。基带处理器作为SIM900的核心,主要处理GSM终端内的语音、数据信号,并涵盖了蜂窝射频设备中所有的模拟和数字功能。在不需要额外硬件电路的前提下,可支持FR、HR和EFR语音编码。

模块支持900~1800频段,包括中国移动与中国联通。兼容TTL电平,通过串口控制,可直接与单片机串口相连。模块本身有六个引脚,分别为GND :电源负极;RX:GSM模块的接收端,对应单片机或者电脑的TX 发射端;TX: GSM模块的发射端,对应单片机或者电脑的RX 接收端;耳机:声音输出,可以串联瓷片电容解决音质问题;麦克风:音频输入,可以串联瓷片电容解决音质问题;KEY:模块开机引脚,对地两秒后释放即开即 ,也可以一直接地,这样是上电自动开机状态;VCC:GSM模块供电端 可输入电压范围3.7~4.2V 。其电路原理如图2。3所示

    1. 温湿度传感器电路设计

根据DHT11官方数据手册知,传感器供电电压范围为3.3V到5.5V。其共有4个引脚。分别为电源,串行数据总线,空脚,接地脚。由于采用单总线方式,采用高电平时间长短来区别高低电平,因此具有较长的传输距离,非常适合应用于现场温湿度监控。其电路原理如图2.4所示,采数字接口经上拉电阻R22后接入单片机PB5引脚。上拉电阻与信号线的长度有关,距离越长时,电阻越小,以增强电流。反之亦然。

    1. 光强检测电路设计

光强检测电路如图3-8所示,将光敏电阻与10kΩ电阻串联,其分压经过由电阻R23和电容C9组成的RC低通滤波电路后,直接送到单片机的AD采集通道PA0,进行AD转换

    1. 窗帘控制电路设计

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,使得步进电机非常适合应用于开环控制系统。步进电机一般由多相组成,通过对相通电顺序,即可以改变电机的正反转。通过改变相间的通电切换频率即可以改变速度。非常适合应用于数字控制系统。

考虑到窗帘需要打开和关闭。其执行电机必须实现正反转控制。因此采用步进电机构成的开环控制系统实现。本设计采用小型步进电机进行模拟。采用5V供电的四相步进电机作为执行机构。选用耐压,大电流达林顿管驱动器,ULN2004作为驱动器件,组成窗帘控制电路。其原理图如图2.6所示.

    1. 继电器驱动电路设计

本设计中系统的继电器驱动电路如图2.6所示,采用三极管组成达林顿管驱动的方式来实现,由于继电器的功率较大,采用8050和8550组成达林顿管方式来驱动,它的最大集电极电流可以达到1A,图中二极管Q1,Q3采用二极管IN4007,用于对继电器的线圈进行续流,因为在继电器线圈由通电到断开的时候,电感电流不能突变,需要一个电流的泄放回路,二极管Q1,Q3即实现了这以功能。R13,R17为限流电阻,为三极管提供合适的基极电流。R9,L2,R14,L3构成继电器工作指示电路。当继电器打开时,L1,L3发光。继电器的常开触点控制外部的220V电源,实现家用电源电路开关。

    1. 电源电路设计

电源是整个系统的基础模块,肩负着整个系统的供电,一旦电源模块不能正常工作那么整个系统也就无法工作,因此电源模块的稳定程度关系着整个系统的稳定性。主机电源模块电路如图2.7所示,本系统需要两种电压,由于SIM900模块工作以3.7V~4.2V,而MCU工作于3.3V。因此系统直接采用12V电压输入,由LM2596-ADJ芯片构成的固定频率开关降压稳压电路后,得到4.2V直流电压,为SIM900模块提供工作电压. 

LM2596系列是美国国家半导体公司生产的3A电流输出降压开关型集成稳压芯片,它内含固定频率振荡器(150KHZ)和基准稳压器(1.23v),并具有完善的保护电路、电流限制、热关断电路等。利用该器件只需极少的外围器件便可构成高效稳压电路。电路中通过调节R2电阻,可调节输出电压。

由于主控MCU采用3.3V供电。因此采用线性低压差三端稳压器LM1117作为供电电源。LM1117将4.2V电压转换成3.3V电压直接给控制系统、显示模块、传感器电路以及键盘模块等供电。电容C5,C6,C7,C8构成退耦滤波电路,大电容C5,C6用于滤除低频电源纹波,小电容C7,C8用于滤除高频噪声,外加0欧电阻,使得电源更加干净稳定。BT1为电池,为另一种系统供电方式。电阻R8和二极管D2构成电源指示电路。

    1. STM32F103XX系列微控制器介绍
      1. Cortex-M3内核简介

Cortex-M3内核包含一个适用于传统Thumb和新型Thumb-2指令的译码器、一个支持硬件乘法和硬件除法的先进ALU、逻辑控制和用于连接处理器其他部件的接口。Cortex-M3处理器是首款基于ARMc7-M架构的ARM处理器。中央Cortex-M3内核使用3级流水线哈佛架构,运用分支预测、单周期乘法和硬件除法功能实现了出色的效率(1.25DMIPS/MHZ)。Cortex-M3处理器是一个32位处理器,带有32位字宽的数据路径、寄存器库和基于传统ARM7处理器的系统只支持访问对齐的数据、沿着对齐的字边界即可对数据进行访问和存储。Cortex-M3处理器采用非对齐数据访问方式,使非对齐数据可以在单核访问中进行传输。

Cortex-M3处理器是专为那些对成本和功耗非常敏感但同时对性能要求又相当高的应用而设计的。凭借缩小的内核尺寸和出色的中断延迟性能、集成的系统部件、灵活的配置、简单的高级编程和强大的软件系统、Cortex-M3处理器将成为从复杂的芯片系统到低端微控制器等各种系统的理想解决方案。

      1.  STM32F103XX系列微控制器简介

STM32F103XX增强型系列使用高性能的Cortex-M3架构的32位的RSIC内核,工作频率支持72MHZ,内置高速存储吕(高达128K字节的闪存和20K字节的SRAM),丰富的增强I/O端点和联接到两条APB总线的外设。所有型号的器件都包含2个12位的ADC、3个通用16位的定时器和一个PWM定时器,还包含标准和先进的通信接口:多达2个I2C和SPI,3个UART、一个USB和一个CAN。

STM32F103XX增强型系列Cortex-M3内核256个中断和可编程256级中断优先级的设置,与相关的中断控制和中断优先级控制寄存器。其个68个外部中断通道路。STM32F103XX增强型系列产生中断延时只有6个时钟周期,并且压栈和出栈均由硬件自动完成,效率非常高。

STM32F103XX增强型系列工作于-40度至+105度的温度范围,供电电压由2.0至3.6V,一系列的省电模式保证低功耗应用的要求。

这些丰富的外设配置,和管理方式使得STM32F103XX增强型系列微控制器适于多种应用场合,如电机驱动和应用控制、医疗和手持设备、PC外设和GPS平台、工业应用、等多种领域。

  1. 系统软件设计
    1.  软件开发环境介绍

本设计中选用德国KEIL公司推出的专为arm核控制器开发的一款叫MDK集成开发环境作为主机程序设计的编译器。该软件集成了业内最领先的技术。Keil software的arm开发工具提供的程序,可以用它们来编译C程序代码,汇编源程序,连接和重定位目标文件和库文件,创建HEX文件以及调试目标程序。

    1.  C语言介绍

C语言是一种结构化的语言,它层次清晰,便于按模块化的方式组织程序,易于调试和维护,语言简洁,紧凑,使用方便灵活。其次,它丰富的运算和数据类型,便于实现各类复杂的数据解耦。第三,可以直接访问内存地址,能进行位操作的特点,使其能够胜任开发炒作系统的工作。第四,由于C语言可以对硬件进行编程操作,因此,它既有高级语言的功能,同时也有低级语言的优势。不仅可用于系统软件的开发,同时也适用于应用软件的开发。另外,C语言还有效率高的,可移植性强等特点。

    1. 软件总体设计
      1.  程序结构分析

本设计的软件需要完成的任务分为:

1)从SIM900 GPRS模块读取短信,并进行判断,从而对家用电器进行开关控制。

2)采集光照强度,自动调节窗帘开关,实现家居光照率自动控制。

3)采集温湿度值,判断发生异常时,触发短息报警通知主机。

4)读取主控器万年历时钟,对家用电器进行时间段开关管理。

5)完成按键扫描,当前的操作消息或者数据显示在液晶屏上。

      1.  主程序设计

为了满足温湿度采集的实时性,本程序采用循环扫描的方式对DHT11传感器进行数据读取。主程序需要完成功能为首先完成系统的初始化,因此整个程序的构架在主程序中需要完成的设置任务是系统各部分初始化、进行人机交互。因此可以得到如下图所示的程序总流程图。主程序流程图如图3.1所示。在程序开始运行后,首先进行的系统初始化。在初始化中完成系统I/O的配置,液晶显示初始化、串口的初始化以及系统运行必需参数初始化。初始化后,程序进入循环扫描,程序首先读取DHT11传感器的温湿度数据,控制器通过逻辑判断,温湿度是否发生异常,当发生异常时,生成异常标志位,通知主控制器控制SIM900周期性往手机发送报警短信,接着程序访问不断访问SIM900模块,判断是否收到短信,并对短信进行解码分析,若是有效命令则控制继电器输出。否则不矛处理,然后程序对按键扫描,并响应其操作,程序设置有三个按键输入,分别有模式输入,参数加1,参数减1,模式输入不断切换设置参数,分别为高温度值设置,高湿度值设置,以及通信手机号码设置等。接着程序获取万年历时间,若到达设定开机时间或者关机时间,则控制继电器输出变化。最后程序根据当前状态控制OLED显示当前温湿度值,当前继电器输出状态,万年历时间,或者显示设置高温湿度输入页面。接着程序循环至采集DHT11温湿度值,不断循环。

      1.  OLED驱动程序分析

OLED采用SPI数据通讯协议,此模块的程序结构较简单,难点也只是OLED读写的时序,本程序中只需要实时对OLED写入数据,便于人机交互,只要对OLED驱动了后写数据也就相应的简单了,通过查看OLED的时序图,如图3.2所示。然后再模拟时序编程就能驱动OLED显示器了。

OLED初始化程序如下   

void OLED_Init(void)

{

GPIO_InitTypeDef  GPIO_InitStructure; //定义IO初始化结构体 

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);  //使能A端口内部时钟

GPIO_InitStructure.GPIO_Pin= GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;  //设定PA4PA7为输出 

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度最高50MHZ

  GPIO_Init(GPIOA, &GPIO_InitStructure);    GPIO_SetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7); //输出初始化全拉高

delay_ms(500);

OLED_CS_Clr(); //使能访问屏

OLED_WrCmd(0xae);

OLED_WrCmd(0xae); //--turn off oled panel

OLED_WrCmd(0x00);//---set low column address

OLED_WrCmd(0x10);//---set high column address

OLED_WrCmd(0x40);//--set start line address  Set Mapping RAM Display Start Line (0x00~0x3F)

OLED_WrCmd(0x81);//--set contrast control register

OLED_WrCmd(0xcf); // Set SEG Output Current Brightness

OLED_WrCmd(0xa1);//--Set SEG/Column Mapping     0xa0,0xa1

OLED_WrCmd(0xc8);//Set COM/Row Scan Direction   0xc0,0xc8

OLED_WrCmd(0xa6);//--set normal display

OLED_WrCmd(0xa8);//--set multiplex ratio(1 to 64)

OLED_WrCmd(0x3f);//--1/64 duty

OLED_WrCmd(0xd3);//-set display offset Shift Mapping RAM Counter (0x00~0x3F)

OLED_WrCmd(0x00);//-not offset

OLED_WrCmd(0xd5);//--set display clock divide ratio/oscillator frequency

OLED_WrCmd(0x80);//--set divide ratio, Set Clock as 100 Frames/Sec

OLED_WrCmd(0xd9);//--set pre-charge period

OLED_WrCmd(0xf1);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock

OLED_WrCmd(0xda);//--set com pins hardware configuration

OLED_WrCmd(0x12);

OLED_WrCmd(0xdb);//--set vcomh

OLED_WrCmd(0x40);//Set VCOM Deselect Level

OLED_WrCmd(0x20);//-Set Page Addressing Mode (0x00/0x01/0x02)

OLED_WrCmd(0x02);//

OLED_WrCmd(0x8d);//--set Charge Pump enable/disable

OLED_WrCmd(0x14);//--set(0x10) disable

OLED_WrCmd(0xa4);// Disable Entire Display On (0xa4/0xa5)

OLED_WrCmd(0xa6);// Disable Inverse Display On (0xa6/a7)

OLED_WrCmd(0xaf);//--turn on oled panel

OLED_Fill(0x00);

OLED_SetPos(0,0);

}

//向OLED写入一个数据字节

void OLED_WrDat(unsigned char dat)

{

unsigned char i;

OLED_DC_Set(); //选择数据

for(i=0;i<8;i++)

{

if((dat << i) & 0x80) OLED_SDA_Set();

    else OLED_SDA_Clr();

OLED_SCL_Clr(); //SCL输出上升沿脉冲,输入数据位

OLED_SCL_Set();

 }

}

//向OLED写入命令字节

void OLED_WrCmd(unsigned char cmd)

{

unsigned char i;

OLED_DC_Clr(); //选择命令

for(i=0;i<8;i++) //

{

if((cmd << i) & 0x80) OLED_SDA_Set();

else OLED_SDA_Clr();

OLED_SCL_Clr(); //SCL输出上升沿脉冲,输入数据位

OLED_SCL_Set();

}

}

      1.  SIM900通信程序设计

由于SIM900模块,支持AT串口命令集,对SIM900的访问,实际上就是对单片机串口的访问。因此通过AT指令,即可以实现控制SIM900的短信发送和短信读取。以下是涉及短信发送和读取的AT命令简介:

AT+CMGF=?  选择短信模式;

AT+CMGS     为发送一条短信;

AT+CMGR     为读取一条短信;

AT+CMGD     为删除一条短信;

本设计中SIM900串口通讯协议为9600波特率,8位数据位,无校验,1位停止位。系统上电后首先对SIM900 进行初始化,设置其短息的模式,以及接收短息报告模式方式等,程序如下所示:

while(0==Sim_Send_AT())   delay_ms(1000); //等待SIM 通信成功

 Sim_Set_MODE(1); //设置为文本模式

 delay_ms(800);

 Sim_ReSms_Config(); //设置其收短到信息的报告方式,最后位为短息数

 delay_ms(800);

 Sim_Sms_Config_Cscs(); //短息发送格式为GSM

 memset(uart1_buf,0,sizeof(uart1_buf)); //清空串口接收缓冲区

 uart1Pt=0;

由于接收到短息后,SIM900会通过串口发送 “+CMTI: "SM",1”命令字节,因此当程序扫描到到串口接收到“+CMTI”字符时,进入读取短信程序,发送“AT+CMGR=1”命令,将信息读出。并判断信息内容是否对继电器进行打开,或者关闭操作。实现家电控制。其程序实现如下:

if(mystrstr(uart1_buf,"+CMTI:")!= NULL ){  //收到新信息

delay_ms(300);

memset(uart1_buf,0,sizeof(uart1_buf));  //清空接收缓冲区

  uart1Pt=0;

delay_ms(1000);

uart1_sendstring("AT+CMGR=1\r\n"); //读取短信命令

while(uart1_buf[0]==0); //等待接收到命令

delay_ms(1000); //延时等待接收完成

if( mystrstr(uart1_buf,"1 Close") ){ //短信要求关闭

GPIO_ResetBits (GPIOB,GPIO_Pin_0); //继电器1路控制引脚置1关闭

Solid0_status=0;

}

if( mystrstr(uart1_buf,"1 Open") ){ //短信要求打开

GPIO_SetBits (GPIOB,GPIO_Pin_0);  //继电器控制引脚置0关闭

Solid0_status=1;

}

if( mystrstr(uart1_buf,"2 Close") ){ //短信要求关闭

GPIO_ResetBits (GPIOB,GPIO_Pin_0); //继电器2路控制引脚置1关闭

solid1_status=0;

}

if( mystrstr(uart1_buf,"2 Open") ){ //短信要求打开

GPIO_SetBits (GPIOB,GPIO_Pin_0); //继电器2路控制引脚置0关闭

solid1_status=1;

}

}

  1. 系统调试与结果分析

通过第3章和第4章本文完成了基于stm32控制器的和GPRS网络通信控制的智能家居系统的硬件设计和软件设计。而本章节将对整个系统的软硬件调试工作和系统整机调试,通过实物测试完成系统调试。

在系统调试的过程中,发现了一些问题,最后经过程序的反复修改和调试,最终所有问题得以解决。通过实际测试,本次设计出的基于stm32控制器的和GPRS网络通信控制的智能家居系统能接收短息,并响应有效的命令,对继电器进行控制,实现家用电器的开关控制,并且能够根据光照强度,实现窗帘的自动开关,并切确地对时间响应,在设定时间段打开继电器。本设计样机能满足任务书的设计要求。因此具有一定的实用价值和参考价值。

    1. 程序仿真设计

系统仿真采用仿真软件Proteus7.0。进入Proteus的主界面后,绘制好系统硬件原理图后双击单片机,加载成功十六进制文件。

1、仿真开始测试图(lcd屏显示初始化,温湿度感测值,状态值)

2、调整湿度值,湿度过高,电机反转关窗测试图

结束语

经过一个学期的学习与实践,较好的完成了本次毕业设计的大部分功能要求。在完成毕业设计的过程中,我不仅巩固了电气控制、单片机以及传感与检测等相关理论知识,而且通过不断的电路实验和与人交流积累了一定的实践经验,所学专业知识有了进一步了解和兴趣,这将对我以后的求学道路有很好的指导作用。在本次毕业设计的过程中我收获了很多。加强了对专业性的工具软件的应用。同时锻炼了自己单片机编程的能力。这些对我以后的学习和工作都将带来很大的帮助。但在收获的同时,也让我发现了自身存在的许多不足,发现了很多问题。在以后的工作学习中我将努力改正,更加完善自己。

1) 本文所完成工作

本文完成了基于stm32控制器的和GPRS网络通信控制的智能家居系统的研究和设计。完成了样机的设计和实物的制作。所设计出的系统满足任务需求。

2) 下一步工作设想

在设计过程中发现了许多的问题,在接下来的工作中将进一步优化软件系统,以实现系统的最优化,进一步提高系统的智能化,增加响应短息控制命令。并加强人机交互的人性化设计。

致谢

此章节由学生自己写,致谢内容包括在设计过程中,以及在整个大学生涯中对你有所帮助的人以及其他在生活中你想要感谢的人。

参考:

随着这篇本科毕业论文的最后落笔,我四年的大学生活也即将划上一个圆满的句号。回忆这四年生活的点点滴滴,从入学时对大学生活的无限憧憬到课堂上对各位老师学术学识的深沉沉湎,从奔波于教室图书馆的来去匆匆到业余生活的五彩缤纷,一切中的一切都是历历在目,让人倍感留恋,倍感珍惜。四年XXXX大学的学习生活注定将成为我人生中的一段重要旅程。

在整个毕业设计的过程中,我有过失败与成功,有过沮丧与喜悦。我首先要衷心感谢我的指导老师XXX老师,XXX老师严谨细致的治学作风,还有他实事求是的处世态度深深地影响着我,并将使我终生受益。在我整个毕业设计过程中正是XXX老师悉心指导和热心教诲才使我能顺利完成此次设计。 此外,本文参考了大量杂志期刊和专业丛书,由于参考期刊太多,不能一一注明,敬请原谅并向所有作者和刊物致以诚挚的谢意!由于本人水平有限,纰漏之处在所难免,恳请各位老师不吝赐教。

最后感谢我的父母,你们一直都默默的在我身后支持我,为我无私奉献,对我关怀备至。正是你们的关心和支持让我顺利完成学业,你们永远是我最亲的人。感谢陪伴我渡过大学生涯的XXX班的全体同学。在这即将毕业的日子,与你们相处的每一天都是那样的珍惜。有你们的陪伴和支持,我很幸福!

  

参考文献

[1][美]Stephen Prata. C Primer Plus(第五版)中文版 .北京:人民邮电出版社,2005-2-1

[2]郭天祥. 新概念51单片机C语言教程. 北京:电子工业出版社,2009-1-1

[3]严蔚敏.  数据结构(C语言版). 北京:人民邮电出版社, 2011-2-1

[4] 张毅刚、彭喜元,单片机原理与应用设计,电力工业出版社,2008.4.

[5] 先锋工作室,单片机程序设计实例.清华大学出版社,2002.

[6]裘岚,张晓芸等译,C语言程序设计实用教程,电子工业出版社,北京,2001.7.

[7]周洪、胡文山、张立明、 卢亦焱,智能家居控制系统中国电力出版社 ,2006.01

[8]杨光祥,STM32单片机原理与工程实践,武汉理工大学出版社,2013-6

[9]张洋,刘军,严汉宇 著, 原子教你玩STM32, 北京航空航天大学出版社

附录A 系统电路原理图

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等天晴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值