找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5721|回复: 3
打印 上一主题 下一主题
收起左侧

景区环境预知系统—主控模块设计论文

[复制链接]
跳转到指定楼层
楼主
ID:161768 发表于 2017-8-16 03:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
景区环境预知系统——主控模块设计

摘要

本文针对现存的景区环境管理问题,结合已有的先进通信技术,完成了景区环境预知系统中主控模块的设计。课题中采用STM32作为系统的主控芯片,通过串口通信的方式进行数据的发送、接收以及最终在LCD上进行显示。本文包含软硬件两部分设计内容,其中详细介绍了主控芯片STM32的电路设计,并编程实现了STM32数据的接收、发送以及LCD显示。本系统充分利用了STM32体积小、低功耗、低成本、处理速度较快等优势,满足景区环境参数采集的实时性需求。景区环境预知系统实现了PM2.5、人群密度、烟雾值、雨量和红外线强度的采集和显示,便于景区人群密度的控制、环境参数的警示以及安全隐患的提前预判,从而减少人员伤害带来的诸多损失。实验表明,本系统能满足景区环境的预判,并且具备很好的稳定性和实时性,对景区环境和安全有良好的监控和预警作用。
目录
1  绪论
1.1课题背景            
1.2研究意义            
1.3 景区环境预知系统的国内外发展情况            
1.4 论文的内容和组织结构            
2  整体的方案设计
2.1系统设计原则            
2.2 系统总体设计方案            
2.3 zigbee与串口通信技术            
     2.3.1 zigbee技术            
     2.3.2 串口通信技术            
2.4 STM32芯片介绍            
3  硬件的设计与实现
3.1 主控模块总体接口设计            
3.2 硬件电路设计            
     3.2.1 整体原理图设计            
     3.2.2 电源电路设计            
     3.2.3 复位电路设计            
     3.2.4 时钟电路设计            
     3.2.5 UART电路设计            
     3.2.6 LCD电路设计            
4  系统软件实现
4.1 景区环境预知系统开发环境            
     4.1.1 Keil的简介            
     4.1.2 Keil软件的工程创建            
4.2 系统软件设计            
4.3 程序实现              21
     4.3.1串口初始化              21   
     4.3.2 LCD驱动            
     4.3.3 STM32数据的接收和发送            
4.4 上位机显示            
5  
参考文献
致  谢
毕业设计(论文)知识产权声明
毕业设计(论文)独创性声明
附录1 上位机显示部分代码

1 绪论
1.1课题背景
随着人们生活水平的提高,人们都喜欢回归自然,给自己来一段说走就走的旅行。走出家门放松身心的需求越来越强烈,但是有的景区存在着安全隐患,如果能设计一套系统,使得我们能预先知晓景区安全隐患的存在就再好不过了,不仅可以避免旅游的人群遭遇山体滑坡、拥挤造成的踩踏等意外,还可以为旅游集团和相关事业单位提供参考样本数据。通过这些宝贵的样本数据,更便于旅游景区的管理,并能更及时的针对现存的旅游景区问题制定相应的措施。
景区环境预知系统包括烟雾监测模块、温湿度数据采集、PM2.5值数据采集、人流量监测、雨量检测、红外线检测等模块。通过传感器采集好需要的参数,再将这些数据汇总到协调器上,最终将协调器上的数据通过串口传送给PC机、LCD屏等设备进行显示,方便检测人员对整个景区的环境状况进行预判。本课题的研究采用STM32作为主控来实施开发,重点研究STM32平台下的串口通信。预知系统中,基于Zigbee无线技术进行参数的采集和传输,从而STM32的相关技术应用和Zigbee无线技术是景区环境预知系统的主要技术组成。
景区环境预知系统的主控制芯片选择了ST公司的STM32系列32位闪存的嵌入式ARMv7微处理器STM32F103C8T6。该处理器具有性能高、功耗低、实时性强的Cortex-M3内核,在嵌入式领域具有价格竞争的优势。Thumb-2指令集效率更高性能更强,既有32位的高代码密度,又有16位的速度,对中断事件的响应更加迅速,又融入了先进的业界功耗水平,不但如此,还免费提供了开发工具,STM32提供了强大的固件库函数,可以让用户便捷地访问STM32各个标准外设。提供的驱动覆盖了GPIO、ADC、USART、I2C和SPI等所有标准外设。
ZigBee作为一种新兴的技术,专用于需求低成本、低能耗、短距离的无线网络通信领域中,已被广泛应用,是目前WSN   领域的一大热点。ZigBee具有低功耗、低成本、短时延、安全性、可靠性和大容量等特点。
伴随着ZigBee技术的广泛应用,并能够在各个领域展现ZigBee技术非凡的特点,可以预测在不久的将来,ZigBee技术的应用将会使我们的生活更加智能化、数字化,彻底改变人们的生活方式。

1.2研究意义

当前,我国旅游消费日益成为老百姓的一种常态化生活方式。据国家旅游局统计数据显示,2015年,国内游达40亿人次,人均出游接近3次,旅游已成为居民日常生活的必要组成部分。在出游方式上,自助游超过85%,自驾游超过60%,旅游已经走向大众化、生活化、休闲化。但是目前“黑导黑车”、“天价菜单”、混乱的“一日游”等旅游市场上的不公平、不规范事件时有发生,严重损害了游客利益,阻碍了我国旅游市场的健康发展。另一方面,也是游客们对旅游地点的不了解,各种情况的不清楚,导致一些不好的事情发生。

其实,近年来类似同城旅游、阿里行等一些旅游网站的出现,也为市民提供了一定的信息,但这些信息都是经过一定的人工处理,或者是从主观情感宣传的一系列景区,户外环境。“扬长避短”,没有很客观直白的去进行环境的描述。并且缺乏实时数据监测,导致一个景点游客多等一系列问题。
然而,景区环境预知系统很好的解决了这一方面的问题。实时收集景区内各个地点的环境参数,经过汇总之后,通过网络传向客户端,不仅景区主管部门,甚至旅游人群可以作为切身利益获得者第一时间得到景区环境的相关参数,为出门旅游做更好的打算。景区环境预知系统为想要出行的市民提供了大量、实时的数据信息,这种方式也是科技发展的趋势,给人们带来无限的方便。例如,客户群可以根据这些信息来决定旅行的穿着和具体的携带物品,真正的实现了未出门先洞察天下的生活模式。拥有了景区环境预知系统也会避免游客扎堆等现象,人们可以提前向系统上传自己的出行计划,从而实现景点参观人数的客观统计,客户便可以通过统计数据来判断景区参观人数是否饱和,再决定是否要进一步实施旅游计划。此类基于互联网通信技术的发展会提升人类生活质量并达到一个新的高度。

1.3 景区环境预知系统的国内外发展情况
   近年来,伴随人们对旅游需求的提高,景区环境预知系统的研发成了一个迫切攻克的课题,国内外诸多学者开始进行深入研究,寻找最优化的解决方案。现在国内部分景区已经配备了人群密集度预警等系统,来检测部分景区的环境参数。
目前我国经济可谓处于高速发展阶段,旅游业也在迅猛发展,同时也伴随着环境破坏,但为了能够用旅游业带动经济的发展,以及坚持可持续发展,景区的环境监测和相关的措施制定就变得必不可少了。为了更好的去针对存在的景区环境问题进行改善,就需要引入通信技术来实现环境参数的实时监测,从而为环境问题的发现提供有效的帮助。结合国内现有的环境监测技术,并考虑中国人口密度、国民平均素质、人们生活习惯等国情,实现未来景区环境预警系统是时代发展的必然趋势。同时,环境监测系统在为市民提供大量景点的可靠环境实时数据方面也有很大的意义。通常所讲的环境监测也就是选用多种传感器以及终端设备对现场的阳光紫外线、温湿度等参数进行采集,最后汇总到上位机上进行显示,并且通过编码实现参数的界限值设定,一旦采集的参数超出了界限就进行报警提示,从而实现环境监测的终极目标。环境监测的主要目的有两个:一是通过实时检测,获得景区等地的环境参数,为相关部门和人民群众提供数据,便于下一步决策;二是通过监测进行环境的预警,提早的去避免一些不合理存在。无论从哪个方面考虑,景区环境监测系统绝对是时代进步的产物,提高了旅游的安全性和便捷性,通过数据的反应能警示人们热爱、保护我们共同的家园,建设一个舒服、绿色的旅游大环境。   
然而最类似于景区环境预知系统的产品就是旅游环境监测站。主要针对城市、旅游景区用户的一种实用型的自动气象站,观测要素可以根据用户需求灵活调整和增减,还可以配套多种户内户外型显示屏,为市民提供各类实时的数据。
也随着技术,以及为了满足市民对信息更加细化准确的要求,环境检测产品的功能也越来越强大。比如武汉新普惠科技有限公司的PH-JQ旅游景区环境监测站,它是在原有的常规气象要素如风向、风速、温度、湿度、气压、雨量、紫外线、PM2.5空气质量的基础上,还增加了能见度、花粉浓度及二氧化碳、二氧化硫、一氧化碳、噪声等污染指数的监测。观测要素可以根据用户需求灵活调整和增减,还可以配套多种户内户外型显示屏,为市民提供各类实时的气象资料。
图1.1 环境监测基站
当然监测站也只是环境监测产品中的一种,如图1.1所示,在旅游业发展越来越迅速的时代,对景区环境监测的产品和系统也就应运而生,并且具有广阔的前景。景区环境参数的采集和监管不仅对市民提供了实时数据,更是为研究环境变化的科学家提供了大量的数据。随着科技的进步,各类环境参数的监测站也在一步步普及,希望通过国内外不断的研究早日实现景区环境参数的全面检测,形成一个可靠、实时的系统,方便人们旅游。

1.4 论文的内容和组织结构

本课题的研究意义在针对现有的环境监测问题,设计出景区环境预警系统的主控模块,实现协调器数据的控制,基于串口通信进行数据的传输和最终LCD的显示,最后还发挥自己的java基础知识,设计了上位机的简单界面。
  • 绪论。介绍景区环境预警系统的课题背景、研究目的和意义,简述系统所依托的通信技术,完成类似预警系统的国内外综述。
  • 整体的方案设计。本章介绍了系统方案的设计原则,并根据设计原则制定出了整体的设计方案,对方案中所用到的串口通信技术、zigbee技术以及STM32主控芯片进行了详述。
  • 硬件的设计与实现。通过对设计方案的实施过程和原理进一步学习,完成STM32最小系统、复位电路、时钟电路和串口电路等原理图的设计。
  • 系统软件实现。给出软件流程图和部分操作的函数代码,并最终用Java语言实现了简单的上位机显示。
  • 结论


2  整体的方案设计
本文主要是基于STM32主控模块来实现景区环境预知系统,完成景区环境的参数采集和LCD显示。本课题的设计与实现需满足低成本、高效率、实用性的要求,故在本章中对系统所需硬件的选型和系统的整体构架设计均以这些要求为基准。
2.1系统设计原则
在整体方案确立以前,首先要分析系统的设计需求,对系统的构成做详细、科学的分析,从而选定符合需求的硬件设备来实现景区环境参数的采集与传输。只有坚持此原则才能使最终实现的系统更加稳定可靠并且符合实际项目的需求。细化设计原则如下所示:
    a.实时性好
为了能达到景区环境预知的目标,必须要考虑的就是预知系统的实时性。只有能及时的采集和传输环境参数才能实现各种潜在危险的预知,从而尽早的去避免。
    b.可靠性强
一个成熟优秀的系统必须具有良好的可靠性,由于景区环境预知系统所在现场环境变化多端,因此必须要软硬件资源稳定可靠性高的系统,也需要一些比较成熟的技术。
    c.成本便宜
大多数的系统设计需要考虑成本问题,所选器件不能太昂贵,以免出现问题更换成本太高而造成不必要的经济损失。本文设计的系统将应用于复杂多变的景区中,容易损坏造成损失,所以在保证可靠性的前提下要做到选择成本低廉和技术成熟的器件,选择性价比较高的芯片和开源软件,减少研发成本。
2.2 系统总体设计方案
基于STM32和Zigbee的智慧景区系统总体包含五部分,分别为数据采集模块、图像采集模块、数据控制模块和数据传送模块。数据采集模块是由温湿度传感器、风速计、电阻应变片、噪声传感器、PM2.5传感器和无线协调器等组成。各个传感器采集到的数据通过终端节点在无线协调器中进行数据整理。图像采集用串口摄像头来完成,此处主要为了实施对景区人流量的监控。数据控制模块主要采用STM32芯片来作为主控芯片,控制数据采集模块的数据采集。数据传送


模块的主要功能就是把所采集到的景区数据传输到上位机上。最终,在上位机上接受传送过来的数据,进行数据解析并显示,从而完成了景区环境参数的实时监控。系统的具体方案设计如图2.1所示。
图2.1 系统方案设计
    而景区环境预知系统(主控模块)的设计,主要是整个系统的后半部分,用STM32来给协调器发送命令,当协调器收到命令后便通过串口给STM32主控发送早已打包好的景区环境参数,待STM32收到数据后再通过串口通信的方式传送给PC机,在PC机上进行显示,同时利用STM32控制LCD屏进行显示。
2.3 zigbee与串口通信技术2.3.1 zigbee技术
ZigBee作为一种新兴的技术,专用于需求低成本、低能耗、短距离的无线网络通信领域中,已被广泛应用,是目前WSN   领域的一大热点。ZigBee具有以下的特点:
(a)低功耗:低功耗是ZigBee最为显著的一个特点。由于ZigBee技术具有较低传输速率,发送接收电流较小,工作周期短且终端节点支持多种睡眠模式,使得采用ZigBee技术的设备非常省电,两节五号干电池可以使一个设备正常工作6个月到2年的时间。
(b)低成本:ZigBee协议相对于蓝牙和WIFI要简单得多,因此对控制器的要求很低,可以采用规模很小的存储器,降低了器件的成本,每个ZigBee芯片仅为2美元,并且ZigBee协议的使用是免费的,其可以工作在2.4GHZ的全球免费频段。
(c)短时延:ZigBee一般从睡眠状态转入到工作状态的时延只需15ms,设备搜索网络进入网络的时延为30 ms,进一步节省了电能,同时ZigBee在时延方面也做了一定的改进,使得数据传输时延以及从休眠模式唤醒时延   变得非常短。
(d)安全性:ZigBee的MAC层采用了高级加密标准(Advanced Encryption Standard,AES)技术对数据进行加密,以确保数据帧的安全性、可靠性和一致性,虽然加密是在MAC层进行处理的,但是网络层控制着安全性的整个过程。
(e)可靠性:ZigBee的MAC层采用了基于时隙的CSMA/CA协议,在发送时对信道进行冲突检测,并且专门为通信  宽带业务预留了时隙,以避免发送数据帧时可能产生的冲     突与竞   争[2],提高了无线数据   传输的可靠性。
(f)大容量:ZigBee可以实现星形、树簇和网状三种拓扑结构,一个主设备最多可以连接254个ZigBee子设备,而主设备由上层网络父节点管理,每一个节点可以分配到一个16位的网络地址,除去广播地址0xFFFF,因此最多可以扩展到216-1=65535个节点。
近年来各种无线通讯技术层出不穷,发展迅猛,广泛应用的还有WIFI、蓝牙4.0、GPRS、3G等,他们都有各自的独特之处。GPRS(General Packet Radio Service)是2G向3G过渡的一种无线技术,经常被描述为2.5G,是一种基于GSM全球手机系统的数据传输技术。3G是第三代移动通讯的简称,可传输音频、视频等高速数据帧,主要特点是随时随地让任何人的通信交流成为可能。蓝牙4.0是2012年开发的新的蓝牙版本,有效连接距离增加很多,功耗也有所降低,是一个很出色的无线系统,包括WIFI,但是伴随而来的是高复杂度,和较高成本。
表2.1 ZigBee与其它技术的简单比较
分类
WIFI(802.11)
蓝牙4.0
3G
GPRS
ZigBee(802.15.4)
频段
2.4Ghz
2.4Ghz
1880-1920MHz
2010-2025MHz
2300-2400MHz
900Mhz
1800Mhz
1900Mhz
2.4Ghz
868MHz(欧洲)915MHz(美国)
应用领域
办公等公共场合
便携设备,多媒体等
语音、视频、网页等
语音,数据
无线传感器
节点功耗
10-50mA
20mA
80mA
60mA
5mA
网络规模
253个
8个
无限制
无限制
65000个
传输速度
11-54Mbps
1Mbps
3Mbps
115Kbps
250Kbps
传输距离
几公里
10-100m
无限制
无限制
10-1000m

如表2.1所示,是ZigBee技术与上面所讲的其它几种无线通信技术的比较,根据系统需求综合比较来看,ZigBee技术最适合应用在WSN分布式采集系统中。
伴随着ZigBee技术的广泛应用,并能够在各个领域展现ZigBee技术非凡的特点,可以预测在不久的将来,ZigBee技术的应用将会使我们的生活更加智能化、数字化,彻底改变人们的生活方式。
2.3.2 串口通信技术
a.串口通信的原理
串口通信(Serial Communications)描述了一种特定模式的信息传递方式和传递规则,即串口按照bit完成bit的发送和接收。虽然,众所周知在并行通信的模式下,按照比特传输比较缓慢,但是串口通信有一个优势,便是可以用两根线同时完成数据的传送和接收。串口通信的原理和结构不仅简单,并且针对远距离通信也有其独特的优势。在IEEE488协议中规定了并行通信的情况下设备总线的长度规格,一般短于20米,同时任意两个设备之间的距离也有限制,通常低于两米。然而,对于串口通信而言,距离长度可以长达1200米。一个典型的实例就是串口常用于ASCII码的传输,它由地线、发送、接收三根通信线组成。又因为串口通信是异步操作,故串口就可以在一根线上发送数据的同时,利用另外一根线来实现数据的接受,其他线还可以用于握手,不过有时候并不需要。对于串口通信来说,波特率、数据位、停止位和奇偶校验是特别重要的参数,在两个端口之间进行数据传输,这几个参数必须是一致的,否则无法实现端口间的通信。
(1)波特率,描述的是符号的传输速率快慢,也可以理解为单位时间内信号的变化次数。在日常生活中,电话的波特率有14400、28800和36600几种值。波特率虽然可以很大,但是由于波特率与传输距离成反比的关系,故也有一定的限制,不同的传输模式需要选择合理的波特率。高波特率常用于近距离的设备通信,例如GPIB设备通信。
(2)数据位,表达的是信号传输中的实际数据位。在计算机传输数据的信息包里,实际数据长度一般情况下不是8位,而是6/7位,这个数据位是可以根据自己的需求来设定的。经典的例子就是标准的ASCII和扩展ASCII数据位分别是7位和8位。每个数据包代表一个字节,数据包一般由四部分组成:开始位、数据位、奇偶校验位和停止位,其中数据位的具体制定依照通信协议来完成。
(3)停止位,即包的最后一位,用于表示数据传输的截止。同时,停止位还可以用来同步设备的时钟。
(4)奇偶校验位,是用来进行通信检错的位信息,检错的具体方式又可以分为四种:奇、偶、高和低。当然此位是根据数据传送的具体实施办法来选取的,并不是必须的位。
串口通信,顾名思义,就是以串口的方式进行设备间的数据传输,并且传输的单位是位。串口通信具有很多优势,尤其在远距离通信装置中,数据线使用量小为项目节省了大量成本。
在工业中,多数控制计算机以及GPIB兼容的设备都含有RS-232的串口,并且拥有规范的串口通信协议,用户可以很方便的通过串口来获取远距离数据采集的数据包。
本课题基于串口通信研发了一套光伏发电站的监控系统,利用了串口通信的便捷性和稳定性来实现与上位机之间的通信,如图2.2所示,为串口通信协议的体系结构图。
图2.2 串口通信协议的体系结构图
    b.串口通信的传输方式
    (1)有线远程数据传输
1) 调制解调器技术支持下的远程数据传输
现代拨号通信方式是基于现有的有线电话网络,从而实现计算机之间的相互
远程通信。然而电话网信号和计算机网络信号有一定的区别,那就是电话网只可
以处理和传输模拟信号,对于计算机和单片机等微处理器只可以处理和传输数字
信号。因此,当数据的计算机和微处理器通过电话网络传输,在传输的两端必须具有模拟信号的调制和解调的设备,经过相关处理得到对应的数字信号,然后再做进一步的操作。
具体来说,对于数据的发送端,利用调制解调器的调制功能,实现数字信号向模拟信号的转换,如此一来,经过调制的数字信号就可以在电话网中传输。同样的道理,在数据的接收端,利用调制解调器的解调功能,实现模拟信号向数字信号的转换,如此使得计算机处理接收到的信号非常方便。拨号通信有标准的规则协议,现阶段由于Hayes公司制定的AT命令支持所有的AT命令,因而成为名副其实的行业标准。近年来,随着计算机技术的深入发展和不断普及,尤其是语音拨号通信方式的出现,极大的推动了电话语音控制技术的发展。基于此,美国微软公司和因特尔公司合作开发出了一种全新的应用程序接口 TAPI,这种接口可以匹配所有的硬件接口,如此一来为相应的软件开发提供了极大的便利条件,又由于TAPI接口可以提供的许多种功能,所以现阶段基于拨号通信的远程监控技术体系里面都滞要运用到此种接口。
特别的,在所要传输的数据量比较小和通信数据频率比较低的情况下,使用拨号通信方式可以极大地降低通信成本费用,而且可以在节约成本的前提下实现
通信数据信息的安全可靠传输,进而带来比较可观的经济效益。
2) 因特网支持下的远程数据传输
人类社会发展进入20世纪以来,计算机信息技术迅猛发展,特别是随着因特网的全面普及,极大地改变了人类传统的生产生活方式,不仅如此,还将向其他科技信息领域渗透,进而引发较大的技术创新与变革。随着信息技术与传统工业技术的深度融合发展,以因特网为基础的监控技术引发了业内人士的广泛关注和重视,因此被广泛地应用到传统工农业生产监控过程中。通过互联网监控新技术等方法,研发技术人员可以轻松实现生产管理过程的控制与维护,对各个生产环节进行优化升级,大幅度地提升设备利用效率,有效降低生产成本,从而进一步扩大生产规模,提高经济效益。
    (2)无线远程数据传输
近年来,之所以无线通信技术和信息技术的迅猛发展,是因为其技术体系是建立在已经成熟的有线远程数据传输的基础之上。无线远程传输技术异军突起,日益成为最富有发展潜力的新兴的监控系统主流技术之一。对于无线数据通信技术,其最大的优点就是将中央监控中心计算机与各个分监控中心实现实时连接,而且可以做到整个监控过程不间断和信息传递低延时,因此实现了真正意义上的中央监控对分中心监控的实时监测控制,这一点是有线监控技术一般不能达到的。
2.4 STM32芯片介绍
STM32F103微控制器构建与高性能的ARM Cortex-M3内核,工作频率为72MHz,内置高速存储器,丰富的增强型I/O端口。增强型器件都包含ADC、定时器、PWM定时器。
成本低、该系列微控制器与常见的8位、16位单片机在价格上基本接近。既有32位单片机的性能,又与8位、16位单片机价格相当,可直接代替8位/16位单片机应用于一些小型控制系统中。
性能高,包含标准和先进的通信接口:3个UART接口、2个SPI口、2个I2C接口、一个USB接口和一个CAN接口。STM32F103是一个完整的系列,其成员之间引脚对引脚完全兼容,软件和功能也兼容。
a.STM32的优势
通过对STM32的系统学习,详细总结STM32的优势如下所示:
(1)性价比高。STM32是32位的芯片,但是其价位几乎与8位机持平,成本的考虑也是STM32广泛应用于各种实际项目中的主要原因之一。
(2)外设配套齐全。STM32是一款高度集中的主控模块,模块中包含SPI、TIMER、IIC、ADC、DAC、RTC等外设,从而让其具备许多便携的功能,方便在其平台上进行开发。
(3)产品型号多样。STM32芯片可选择性很强,包含5个系列的产品,分别针对不同的设计需求可以进行选型,并且有多种封装用于选择。
(4)实时性极佳。模块含有84个中断,另外引脚全部可以当做中断,完全满足大多数项目的需求,16级可编程优先级让实现过程更加优化。
(5)功耗控制的便携。STM32的外部设备均包含独立的时钟开关,从而可以利用时钟开关来控制整个系统的功耗。
(6)开发成本低。项目中常基于STM32做开发,除了其自身成本比较低以外,还有个很重要的原因就是开发成本很低,迫切满足实用性需求。STM32可以通过串口来实现程序的下载,方便、快捷,不需要昂贵的仿真器来帮助下载程序,并且SWD和JTAG两种调试接口,让仿真调试的方式简化了好多。
b.开发板特点
在实际项目中做开发,我们还需要考虑的就是硬件的开发板特性,因为开发板的特性有时决定了是否符合项目的需求,总结STM32的开发板特点如下所示:
(1)小巧。整个板子尺寸为8cm*10cm*2cm(包括液晶屏,但不计算铜柱的高度)。
(2)灵活。板上除去晶振外,其他IO口全部引出,另外GPIOA和GPIOB的IO口还是按顺序引出的,这样的设计很大程度为研发人员在其基础上扩展开发提供了便捷。外加的一键下载功能,省去了设置B0/B1的繁琐,可以用电脑一键下载。
(3)资源丰富。板载十多种外设及接口,可以充分挖掘STM32的潜质。
(4)质量过硬。沉金PCB+全新优质元器件+定制全铜镀金排针/排座+电源TVS保护,坚若磐石。
c.开发板资源
(1)CPU为STM32F103RBT6,拥有128K的FLASH和20K的SRAM;
(2)一个标准的JTAG/SWD调试下载口;
(3)1个电源指示灯(蓝色);
(4)2个状态指示灯(DS0:红色,DS1:绿色);
(5)1个红外接头,配备一款小巧的红外遥控器;
(6)1个IIC接口的EEPROM芯片,24C02,容量256字节;
(7)1个SPI FLASH芯片,W25X16,容量为2M字节;
(8)1个DS18B20/DS1820温度传感器预留接口;
(9)1个标准的2.4/2.8寸LCD接口,支持触摸屏;
(10)1个OLED模块接口;
(11)1个USB串口,可用于程序下载和代码调试;
(12)1个USB SLAVE接口,用于USB通信;
(13)1个PS/2接口,可外接鼠标、键盘;
(14)1组5v电源供应/接入口;
(15)1组3.3V电源供应/接入口;
(16)1个启动模式选择配置接口;
(17)2个2.4G无线通信接口;
(18)1个RTC后备电池座,并带电池;
(19)1个复位按钮,可用于复位MCU和LCD;
(20)3个功能按钮,其中WK_UP兼具唤醒功能;
(21)1个电源开关,控制整个电路板的电源;
(22)3.3v与5v电源TVS保护,有效防止烧坏芯片;

3  硬件的设计与实现
3.1 主控模块总体接口设计
我们在景区环境预知系统的硬件设计中,始终坚持开始的方案设计分析思路,综合考虑系统的可靠性、外观、功耗以及安全性等元素。最终的定论中可以把整个系统分为两大部分:主控模块STM32和外围通信设备。外围的通信包括主芯片STM32跟协调器之间的通信和STM32跟上位机之间的通信,而选择的方式为串口通信。具体的硬件平台框图如图3.1所示。

图3.1 系统的硬件框图
3.2 硬件电路设计

3.2.1 整体原理图设计
本节我们利用Altium Designer软件画出系统硬件原理图。根据本课题需求,确定了系统结构以及原理设计,从而在软件上画出最终的STM32控制芯片的原理图,如图3.2所示。


图3.3系统外接+5V供电电路
另外,+3.3V也是系统中器件常常需要的一个电压值,在电路设计中通常采用稳压芯片来进行转换,然后稳定的输出所需的+3.3V电压值,稳压芯片有多种,课题中利用AMS1086CM-3.3来进行电压转换。如图3.4所示,电路设计原理图,其中电容的配置同样是为了起到电压滤波的作用。
经过长期的电路设计发展,一些常用的引脚和模块所需的电压值也逐步形成一种规范,例如采用3.3V的电压为I/O引脚供电,还有zigbee模块、数据采集模块等都是3.3V供电。如图3.4所示,5V转3.3V的电路设计实现原理图。
图3.4 5V转3.3V电源电路设计
3.2.3 复位电路设计
复位电路的设计也是十分重要的,如果没有复位设计,当上电后程序会自动跑,不便于控制。复位电路通常由RC电路外加按键构成,最终实现两种复位模式:上电复位和手动复位。实现原理是T-RST引脚的输入电平逐步由低转高来产生复位信号。由于STM32F103芯片自身含有上电复位和电压检测复位,所以我们只需要搭建外部的手动复位电路。如图3.5所示,复位电路的原理设计,其中,复位键S2在按下之前,RESET端的电平信号为高,芯片系统工作正常;按下S2键,T-RST端输入电平由高转低,从而控制完成芯片复位操作。

图3.5 复位电路设计
3.2.4 时钟电路设计
若系统想正常工作,都需要时钟电源来为芯片内部结构供电,时钟电源通常由外接晶振来构成,时钟电路就好比人的心脏,为整个芯片提供工作必须的能量。STM32可外接两个晶振:高速HSM和低速LSM,它们的作用分别为系统提供主频和为系统提供日历时钟。时钟电路的设计可以实现为一些定时功能提供时钟源,保证VBAT可持续供电,当切断电源时,PTC仍然可以照常工作。如图3.6所示,时钟电路设计原理。

图3.6 时钟电路设计
3.2.5 UART电路设计
UART是通用的异步接收/发送装置,UART采用并行输入、串行输出的方式进行通信,是一种传输的收发机制,在多数设备上已经实现了集成。由于计算机内部传输数据是并行模式,故不能直接将数据发到Modem,需要引入UART整理后,方才可以实施异步传输。
在接收过程中,UART便从消息帧中去掉起始位和结束位,并根据通信协议的要求,选择是否进行数据的奇偶校验检错步骤,最后将将串行的数据字节转换成并行。同时,UART还会产生额外信号来显示数据的发送和接收状态。例如,当存在一个奇偶错误,UART就置位奇偶标志,从而便于后期的数据纠正。如图3.7所示,UART接口内部结构。
图3.7 UART接口内部结构
    UART串口原理图设计,保证了数据的准确发送、传输和接收。在景区环境预知系统-主控模块设计中,采用的通信方式皆为串口通信的模式,故串口通信模块是必不可少的一部分,其原理图设计如图3.8所示。


图3.8 串口通信接口设计
3.2.6 LCD电路设计
字符型点阵式LCD模块是一种专门用于显示字母、数字、符号等点阵式液晶显示模块,项目中可以用LCD对STM32接收到的数据进行显示。LCD与STM32的连接如图3.9所示。
图3.9 LCD电路图设计
1


4 系统软件实现
4  系统软件实现4.1 景区环境预知系统开发环境4.1.1 Keil的简介
Keil是一种窗口化的软件开发平台,广泛应用于嵌入式应用程序开发。在此平台下我们可以对程序进行编辑、调试和仿真,并且其支持汇编、C语言等多种语言的混合编程。经过不断地更新,Keil的界面功能也越发健全,便于初学者上手学习,并且使用方便。Keil除了编译器功能强大以外还拥有C编译器、装载器等编译工具。详细分析Keil的开发环境及其功能组件,总结其的一些特征如下:
a.源代码编辑器功能强大
b.针对大部分开发工具,可以配置对应的数据库,从而便于程序的快速开发
c.拥有工程管理器,可以来创建和维护工程
d.是集汇编、编译和链接过程于一体的编译工具
e.可以对开发工具的对话框进行设置
f.具备外设模拟器的编码调试功能,助于程序的开发
g.含有高级GDI接口,从而实现软硬件的连接
h.可以完成程序下载,即Flash ROM到Flash编程器
i.详细的开发工具介绍,方便用户学习和使用
4.1.2 Keil软件的工程创建
(1)当我们打开Keil软件后,可以单击ProjectNew Vision Project…菜单项,从而Vision就会打开对话框。此处,我们通常对每个新建工程使用独立的文件夹,输入工程名保存,便实现了新工程的创建。若如想查阅我们已经创建的工程,可以在Project Workspace区域的Files选项卡里查看,如图4.1所示。               
图4.1 Keil新建工程
1


西安工业大学北方信息工程学院毕业设计(论文)
    (2)此时Keil会自动弹出对话框,可以根据目标芯片选择对应的CPU主控,此步操作可以实现对芯片STM32的选取。
    (3)Keil会提示复制CPU指定的启动代码到工程中去。工程中需要使用这些启动代码,选择“是(Y)”,如果不使用Keil编写启动代码可以选择“否(N)”,如图4.2所示。
图4.2 Keil CPU代码复制
    (4)选择FileNew或者单击图标以创建一个新的源文件,会打开一个空的编辑窗口,用户可以在此窗口里输入源代码,如图4.3所示。然后选择FileSave命令,以扩展名*.C保存文件至之前新建的文件夹里以便于以后寻找。

图4.3 Keil导入*.C文件

    (5)完毕后,再在工程工作区中选择“Source Group1”右击选择Add Files选项,出现一个对话框,在对话框里选择前面创建的C源文件,然后点击“Add”,此时文件已经被添加到工程然后点击“Close”关闭即可。如图4.4所示。然后开始输入程序。

图4.4 Keil添加文件到工程
    (6)在程序完成编译后,我们在projectOptions for TargetOutput中选择Create HEX file选项,Keil会在编译过程中同时产生HEX文件。如图4.5所示,编译结束。
图4.5 HEX文件的生成
4.2 系统软件设计
    根据系统的总体方案设计,我们可以清晰的了解到整个系统的数据传输流程,从而对我们的软件设计提供帮助。首先通过STM32向协调器发送数据请求命令,当协调器收到命令后通过串口向STM32发送数据,下一步就是STM32和上位机之间的通信,以及STM32控制LCD进行数据显示。故景区环境预知系统--主控模块的软件流程如图4.6所示。
图4.6 系统软件流程图

4.3 程序实现

4.3.1串口初始化

    因为我们需要对STM32的引脚进行定义,服务于自己的想法,所以首先要进行初始化操作,从而来定义波特率、优先级、串口功能等。串口初始化函数如下所示:
  1. void InitUart()
  2. {
  3. CLKCONCMD &= ~0x40;           // 设置系统时钟源
  4. while(CLKCONSTA & 0x40);    // 等待晶振稳定
  5.     CLKCONCMD &= ~0x47;         // 设置系统主时钟频率为 32MHZ
  6.     SLEEPCMD|=0x04;            //关闭不用的RC振荡器
  7.     PERCFG = 0x00;            //使用串口1的备用位置1 P0口
  8.     P0SEL  = 0x3c;           //P0_2,P0_3,P0_4,P0_5用作串口,第二功能
  9.     P2DIR &= ~0XC0;         //P0优先作为UART0 ,优先级

  10.     U0CSR |= 0x80;            //UART 方式
  11.     U0GCR |= 8;              //U0GCR与U0BAUD配合   
  12.     U0BAUD |= 59;           //波特率设为9600
  13.     UTX0IF = 1;             //UART0 TX 中断标志初始置位1  (收发时候)
  14.     U0CSR |= 0X40;         //允许接收
  15.     IEN0 |= 0x84;         //开总中断,接收中断   
  16. }
  17. 4.3.2 LCD驱动
  18.     想让LCD工作,首先也要对LCD模块进行初始化如下过程:
  19. void LcdInit(void) //初始化程序
  20. {
  21. LCD_RST = 0;
  22. delay_us(20);
  23. LCD_RST = 1;
  24. delay_us(5);
  25. LCD_CS1=0;
  26. LCD_CS2=0;
  27. LCD_CS3=0;
  28. WriteCommand(0x3f);  //设置开显示命令
  29. WriteCommand(0xc0);//设置起始位置
  30. LCD_CS1 = 1;
  31. LCD_CS2 = 1;
  32. LCD_CS3 = 1;
  33. LcdClear();    //清屏

  34.     初始化完成后,就要编写LCD模块的数据写入函数,从而为LCD数据的显示做准备,LCD的数据写入函数,如下所示:

  35. void WriteData(u8  dat)  //写数据
  36. {  
  37.         LCD_RS=1;     //写数据
  38. //RW=0;
  39. LCD_DATA(dat);               //数据输出到数据口
  40.    LCD_E=1;             //写入到LCD
  41.    delay_us(10);
  42.    LCD_E=0;
  43. }
  44. 4.3.3 STM32数据的接收和发送
  45.     STM32既然作为主控模块,那么数据的接收和发送即为其主要功能,下边编写其工作状态的选择,具体什么条件下进行数据的收和发。
  46. if(RXTXflag == 1)              //接收状态
  47.         {
  48.             LED1=1;           //接收状态指示
  49.             if( temp != 0)
  50.             {
  51.                 //'#'被定义为结束字符,最多能接收50个字符
  52.                 if((temp!='#')&&(datanumber<50))
  53.                 {
  54.                     Rxdata[datanumber++] = temp;
  55.                 }
  56.                 else
  57.                 {
  58.                     RXTXflag = 3;   //进入发送状态
  59.                     LED1=0;        //关指示灯
  60.                 }
  61.                 temp  = 0;
  62.             }
  63.         }
  64.         if(RXTXflag == 3)         //发送状态
  65.         {
  66.             LED2= 1;                          
  67.             U0CSR &= ~0x40;      //禁止接收
  68.             Uart_Send_String(Rxdata,datanumber); //发送已记录的字符串
  69.             U0CSR |= 0x40;       //允许接收
  70.             RXTXflag = 1;       //恢复到接收状态
  71.             datanumber = 0;     //指针归0
  72.             LED2 = 0;           //关发送指示
  73.         }
复制代码

4.4 上位机显示
    本章节通过JAVA进行了上位机的显示界面制作,实现了景区环境参数的简单显示,JAVA编写的初始界面数据如图4.7所示。
                       图4.7 初始数据显示界面
     接着,对我们本课题需要的烟雾值、雨量、PM2.5、红外线和人流量数据进行采集和添加,设定数据的格式,设计环境参数采集的子界面,如图4.8所示。
图4.8 环境参数采集和添加界面
上一步骤是将景区环境的参数显示在对应的窗口框里,接下来提交数据,即完成了一次数据的采集和保存,并显示在主界面上,如图4.9所示。
图4.9 主界面数据显示
从而实现了景区环境参数的上位机显示制作,虽然功能简单,但是可以很便捷的查看环境参数信息以及过往采集的数据。

5  结论
随着通信技术的迅速发展,以及人们对生活品质追求越来越高,景区环境的检测已经成了必不可少的部分,本课题针对当下景区管理存在的不便,设计实现了景区环境预知系统的主控模块设计,研究内容也是智慧城市的重要分支之一。
在本系统的研究、实现过程中,收获颇丰,总结如下:
a.STM32基本原理的学习
本系统中选用STM32作为主控芯片,来接收协调器的数据并将数据在LCD上进行显示。通过大量的资料,了解了STM32的几个系列产品,对STM32成本低、功耗低等优势进行了总结。
b.LCD显示和串口通信技术
首先了解了LCD显示的原理,并编程实现了LCD的驱动,最后将数据在LCD上显示,便于客户的观测。文中STM32收发数据皆通过串口通信的方式进行传输,故着重了解串口通信的原理。
c.智慧景区领域相关技术的了解
智慧景区系统的整体实现包括了zigbee无线通信技术、STM32控制、LCD显示和PC机显示等技术。通过深入了解整个大背景,丰富了作者的知识,最终针对任务书的要求,对STM32和LCD显示做了深入研究。
由于各种条件的限制,系统中仍旧有诸多可以改进的地方,为了实现更好的通信技术服务于大众,为了使客户使用起来更加便利,系统主要体现的不足如下几点:
a.可以摆脱串口传输数据的物理局限,使用WiFi等方式来实现。
b.上位机显示的方式过于单一,LCD显示还是不够便捷,如果数据能通过无线网络的方式在手机app上完成实时显示的话,会让系统更加满足实际要求。
希望通过以后的深入学习来克服以上不足,不断的优化系统,使景区环境预知系统更加智能化。

致谢
在拿到本课题的设计时,作者对课题的理解仅停留在表面的认知,对景区环境预知系统很是茫然,不知从何入手。在这里,首先要感谢指导导师王鹏教授,通过王老师不厌其烦的一遍遍讲解,开始对课题有了进一步的认识,并且学会了看待问题的角度,分析一个课题首先要分析其背景下的技术支持,明白了万变不离其宗的道理。
此后,在了解课题的目标和采用的关键技术后,学长和舍友的帮助使得作者很快接受诸多相关知识,大家给予的支持和帮助是毕设课题顺利完成的基本保障。在课题研究过程中涉及了系统的软件和硬件设计,软件方面由于单片机不能接受JAVA语言,而作者只擅长JAVA语言,所以在C语言程序的涉及中及时请教了身边的同学帮忙辅导;在硬件设计中,本课题需要进行STM32最小系统的原理图设计以及PCB板的绘制,此过程中,出现了诸多难以解决的问题,比如复位电路的设计、STM32的最小系统原理设计等,经过不断的在网上搜索资源和借助图书馆等资源,最终还是予以克服。从遇到困难到解决困难的这个过程使作者成长了很多,使在面对突发状况时更加的沉着冷静。
最终感谢学校安排的毕业设计,使得理论联系实际,亲自动手去操作,去寻找方法,毕业设计的完成为我们走入社会奠定了坚实的基础。论文的撰写使得语言表达能力和对工作的总结能力得到了提高。总之,感谢从毕业设计过程中学到知识的机会和身边老师、同学身上感受到的温暖,作者一定会进一步深入学习,不断的提高专业知识,成为社会的有用之才。

附录 1 上位机显示部分代码
  1. </head>
  2. <body bgcolor="sky blue">        //设置背景颜色
  3. <div align="center">             //设置居中格式
  4. <fieldset style="width: 300px">  //绘制框图大小
  5. <legend style="margin-left: 100px">添加环境信息</legend>                     
  6. <form action="EnvironmentAction?action=add" method="post" style="text-align: left;">      
  7. <table>
  8. <font size="50px">
  9. <tr><th width="100px">烟雾值:</th><th width="150"><input name="yanWu"></th></tr>
  10. <tr><th>雨量值:</th><th><input name="yuLiang"></th></tr>
  11. <tr><th>PM2.5:</th><th><input name="PM2_5"></th></tr>
  12. <tr><th>红外线:</th><th><input name="hwx"></th></tr>
  13. <tr><th>人流量:</th><th><input name="rll"></th></tr>
  14. </font>
  15. <tr><th colspan="2"><input type="submit" value="提交数据">       <input type="reset" value="重置"></th></tr>           
  16. </table>
  17. </form>
  18. </fieldset>
  19. </div>
  20. </body></html>
复制代码
//数据处理类
  1. public class EnvironmentAction extends HttpServlet {
  2. //使本类具有web方向的一切功能
  3. List<Environment> environmentList = new ArrayList<Environment>();
  4. @Override
  5. 1

  6. 附录1上位机显示部分代码
  7. protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
  8. throws ServletException, IOException {
  9. String action = arg0.getParameter("action");
  10. if ("add".equals(action)) {
  11.                   Doadd(arg0, arg1);
  12.                             }
  13.               }
  14. protected void Doadd(HttpServletRequest arg0, HttpServletResponse arg1)
  15. throws ServletException, IOException {
  16. String yanWu = arg0.getParameter("yanWu");
  17. String yuLiang = arg0.getParameter("yuLiang");
  18. String PM2_5 = arg0.getParameter("PM2_5");
  19. String rll = arg0.getParameter("rll");
  20. String hwx = arg0.getParameter("hwx");
  21. Environment environment = new Environment(yanWu, yuLiang, PM2_5, hwx,rll);
  22. List<Environment> environmentList = add(environment);
  23. arg0.setAttribute("environmentList", environmentList);
  24. arg0.getRequestDispatcher("show.jsp").forward(arg0, arg1);
  25.               }
  26. private List<Environment> add(Environment environment) {
  27. environmentList.add(environment);
  28. return environmentList;
  29.               }
  30. }
复制代码

//数据显示界面
  1. <body bgcolor="pink">
  2. <br><br><br>
  3. <%List<Environment>environmentList=(List<Environment>)request.getAttribute("environmentList"); %>             //获得后台传来的数据
  4. <div align="center">
  5. <fieldset style="width: 380px">
  6. <legend style="margin-left: 150px">环境信息如下</legend>
  7. <br><br><br>
  8. <table width="500px">
  9. <tr><th>烟雾</th><th>雨量</th><th>PM2.5</th><th>红外线</th><th>人流量</th></tr>                       //设置标题信息
  10. <% if(environmentList==null){%>           //判断有无环境信息
  11. <tr><th colspan="5">没有数据...</th></tr>  //提示信息
  12. <% } %>
  13. <c:forEach var="environment" items="${environmentList}">
  14. <tr>
  15. <th>${environment.yanWu}</th>
  16. <th>${environment.yuLiang}</th>
  17. <th>${environment.PM2_5}</th>
  18. <th>${environment.hwx}</th>
  19. <th>${environment.rll}</th>            
  20. </tr>
  21. </c:forEach>
  22. </table>
  23. <br><br><br>
  24. <a href="add.jsp">继续添加数据</a><!--模拟传感器传来的数据,并进行数据录入  -->                    
  25. </fieldset>
  26. </div>
  27. </body>
  28. </html>
复制代码

  1. //数据模型:(定义实体类)
  2. package com.ddd.entity;
  3. import java.io.Serializable;
  4. public class Environment implements Serializable {
  5. private String yanWu;
  6. private String yuLiang;
  7. private String PM2_5;
  8. private String hwx;
  9. private String rll;
  10. public String getYanWu() {
  11.                             return yanWu;
  12. }
  13. public void setYanWu(String yanWu) {
  14.                             this.yanWu = yanWu;
  15. }
  16. public String getYuLiang() {
  17.                             return yuLiang;
  18. }
  19. public void setYuLiang(String yuLiang) {
  20.                             this.yuLiang = yuLiang;
  21. }
  22. public String getPM2_5() {
  23.                             return PM2_5;
  24. }
  25. public void setPM2_5(String pM2_5) {
  26.                             PM2_5 = pM2_5;
  27. }
  28. public String getHwx() {
  29.                             return hwx;
  30. }
  31. public void setHwx(String hwx) {
  32.                             this.hwx = hwx;
  33. }
  34. public String getRll() {
  35.                             return rll;
  36. }
  37. public void setRll(String rll) {
  38.                             this.rll = rll;
  39. }
  40. public Environment() {
  41.                             super();
  42.                             // TODO Auto-generated constructor stub
  43. }
  44. public Environment(String yanWu, String yuLiang, String pM2_5, String hwx,
  45.                             String rll) {
  46.                             super();
  47.                             this.yanWu = yanWu;
  48.                             this.yuLiang = yuLiang;
  49.                             PM2_5 = pM2_5;
  50.                             this.hwx = hwx;
  51.                             this.rll = rll;
  52. }
  53.               @Override
  54. public String toString() {
  55.                             return "Environment [yanWu=" + yanWu + ", yuLiang=" + yuLiang
  56.                                                         + ", PM2_5=" + PM2_5 + ", hwx=" + hwx + ", rll=" + rll + "]";
  57. }
  58. }
复制代码


完整论文下载(word格式 可编辑):





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:457851 发表于 2018-12-29 11:26 | 只看该作者
nice!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表