农业环境远程监控系统设计与开发-本科毕业论文_第1页
农业环境远程监控系统设计与开发-本科毕业论文_第2页
农业环境远程监控系统设计与开发-本科毕业论文_第3页
农业环境远程监控系统设计与开发-本科毕业论文_第4页
农业环境远程监控系统设计与开发-本科毕业论文_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浙江工业大学本科毕业设计说明书(论文)本科毕业设计说明书(论文) (2017届)论文题目 农业环境远程监控系统设计与开发作者姓名 敖越 指导教师 陈琦 学科(专业) 计算机科学与技术1302班 所在学院 计算机科学与技术学院 提交日期 2017年6月 摘要在现代农业生产中,伴随着传感器技术、无线通信技术、智能手机操作系统和嵌入式技术的进步,农业环境的监控也走向了智能化和自动化。本文的主要内容是农业环境远程监控系统的设计与开发。系统采用了C/S架构,把单片机端作为服务端,服务端分为传感器模块、控制模块、核心模块、wifi模块4大模块负责采集、处理、发送数据和接受客户端的指令通过控制模块对农业环境进行控制。把移动Android终端作为客户端,用户通过客户端可以远程的监测农业环境数据并远程调节控制农业环境。采集模块主要采集到的数据有温度、湿度、光照强度、土壤湿度数据。采集到的数据发送到核心模块,核心模块对数据进行处理后通过wifi模块发送到客户端。控制模块主要通过LED设备模拟照明条件,增加农业环境的光照;通过进步电机模拟水泵工作增加土壤湿度。核心模块使用了零度空间的51单片机开发板,使用了M02 wifi模块进行通信。客户端是Android移动终端,可以克服传统终端的不足实现随身携带移动实现真正的远程监控。对于采集到的数据也通过SQLite数据库进行保存,对于保存的数据,可以按照时间顺序通过ListView进行查看,还可以将采集到的数据输出成折线图更为直观的进行监测。关键字:农业,监控,采集,控制,移动终端AbstractIn modern agricultural production, with the development of sensor technology, wireless communication technology, smart phone operating system and embedded technology, the monitoring of agricultural environment has also become intelligent and automated. The main content of this paper is the design and development of remote monitoring system for agricultural environment.The system uses the C/S framework, the MCU as a server, the server includes sensor module, control module, core module, WiFi module 4 module is responsible for collecting, processing, send data and receive client instructions through the control module to control the agricultural environment. The mobile Android terminal as the client, the user can remotely monitor agricultural environmental data through the client, and remotely regulate and control the agricultural environment.The data collected by the acquisition module include data of temperature, humidity, light intensity and soil moisture. The collected data is sent to the core module. The core module processes the data and sends it to the client through the WiFi module. The control module simulates the lighting condition mainly through the LED equipment, increases the illumination of the agricultural environment, and increases the soil humidity by improving the motor and simulating the water pump work. The core module uses the zero space 51 MCU development board, and uses the M02 WiFi module to communicate.The client is Android mobile terminal, which can overcome the shortcomings of the traditional terminal, and realize portable monitoring and remote monitoring. For the data collected by the SQLite database to save, for the preservation of the data, according to the time sequence by the ListView view, can also be collected data into the output line more intuitive monitoring.Keywords:agricultural,monitoring,collect,control,mobile terminal目录摘要1Abstract2目录3第一章 绪论71.1 选题背景与研究现状71.1.1 研究的背景71.1.2 研究现状81.2 研究的主要目标81.3 研究的主要内容9第二章 相关技术及系统构建方案概述102.1、ST89C52单片机及传感器102.1.1 单片机102.1.2 传感器和其他硬件102.2 安卓系统平台102.2.1 常见移动手持设备操作系统102.2.2 Android 平台系统架构112.2.3 Android 的MVC设计模式112.3 TCP Socket通讯122.4 本章小结13第三章 系统硬件构建方案143.1 整体架构概述143.2 系统核心模块153.2.1 核心模块概述153.2.2 代码的烧入153.3 数据采集模块183.3.1 数据采集模块概述183.3.2 DH11温湿度采集传感器183.3.3 GY30光照传感器223.3.4 土壤传感器243.4 控制模块243.4.1控制模块概述243.4.2 28BYJ-48步进电机253.4.3 LED照明模块263.4.4 自动控制方案273.5 WIFI模块273.6 总结28第四章 安卓终端软件设计294.1安卓开发环境的搭建294.1.1所需准备的工具294.1.2 搭建开发环境294.1.3 安卓模拟器的使用304.1.4 第三方开源库的导入314.2 创建一个Android Studio 工程324.2.1创建一个新的Android Studio工程324.2.2 Android Studio目录结构334.3 安卓终端设计344.3.1主界面设计344.3.2 侧滑菜单设置364.3.3 自定义标题栏设计374.3.4 其他界面设计384.4 发送请求和接收数据并保存394.4.1 APP协议格式394.4.2 Tcpsocket通讯404.4.3 在主界面显示接收到的数据404.4.4 建立Sqlite数据库保存数据414.5 通过ListView查看保存的数据424.5.1 创建ListView434.5.2 提升ListView的运行效率434.5.3 通过ListView查看数据444.5.4 设置下拉刷新444.6 删除数据454.7 将保存的数据输出成图表464.7.1 hellochart的布局设置474.7.2 获取x坐标轴标注474.7.3 获取坐标点474.7.4 初始化图表474.7.5 在AndroidManifest中声明不限制活动的内存474.8 通知设置484.8.1 保存设定的数据484.8.2 创建服务484.8.3 在服务中创建通知494.9 本章总结49第五章 系统分析总结及展望505.1 系统功能测试及结果505.1.1 采集结果接收测试505.1.2侧滑菜单测试515.1.3 数据的保存与读取测试525.1.4 通过app直接控制调节农业环境535.2 系统实用性分析545.2.1 技术可行性分析545.2.2 经济可行性555.3 通过服务器实现远程控制555.4 系统总结及展望565.4.1 系统服务端总结及展望565.4.2 系统客户端总结及展望57参考文献59致谢61第一章 绪论1.1 选题背景与研究现状1.1.1 研究的背景比尔盖茨在北大演讲提出中国未来4大最具有潜力的领域,包括了健康、能源、农业、和网上服务。其中,农业方面的潜力在于生产更加高产的农作物。生产更加高产的农作物不仅要靠内部因素,如育种,也要靠外部因素推动,如本文所描述的农业远程监控系统,对农作物生产环境的监控和控制对农作物产量的提高发挥着至关重要的作用。在物联网时代,问了保证农产品的价值与品质,讲究能对农产品从生长到加工、销售的跟踪,在本文所描述的农业产品远程监控系统中,对农产品环境数据的本地化保存时生长过程跟踪监控的重要一环。 早期通过 2 代及 2.5 代移动通信网络的建设,出现了利用 GSM/GPRS 和CDMA等移动通信技术进行客户端与服务端的数据传输的研究设计,来实现远程监控的应用,它们不但能够进行正常的语音通话,还能够进行最高速度达到 171Kbps 的数据传输功能,但是 2 代及 2.5 代的通信网络的带宽还是太窄,限制了该研究应用无法大规模的普及。Wifi传输技术是通过wifi在客户端与服务端之间进行数据传输,与传统的2g、3g、4g传输技术相比,wifi传输具有维护成本低、实现简单、普及率较高的优点。安卓操作系统是目前使用率最高的手机操作系统之一,根据统计资料显示,截至 2016 年 11 月底,全国移动电话用户达到12.23 亿户,以性价比超高的千元智能手机为代表的移动手持终端迅速普及。而其中手机的操作系统以安卓为主,安卓设备具有价格低廉,应用范围广泛,开发较为容易等优点。可以通过安卓的这些特点,结合基于单片的传感器技术和wifi传输技术,建立远程农业监控系统,及时的了解农作物的环境数据,减小人力成本,实现远程监控,创造农业经济社会价值。1.1.2 研究现状国际上对农业远程监控系统的研究始于20世纪70年代,经历了从模拟式的组合仪表到分布式控制系统的过程阶段。目前这一领域最先进的是计算机数据采集控制系统的多因子综合控制系统。现在世界各国的温室控制技术发展很快,这一技术的趋势正朝着自动化、无人化的方向发展。荷兰、日本、韩国都是这一领域的佼佼者。作为世界第一农业大国,我国对于农业监控技术的研究较晚,始于20实际80年代。目前对于农业环境监控大多采用的都是现场就地监控,没有实现远程监控,监控的对象和管理者之间是相互分离的,对于采集到的数据也没有加以利用或者保存。武汉轻工业大学的杨晨露的基于安卓的农业环境远程监控系统的研究中,采集了温度、湿度、光照、二氧化碳浓度等数据,但是对于采集到的数据。只是进行了简单的本地文件存储方式的保存,采集到的数据被保存成了txt格式的本地文件,只要数据量一大,从中读取有用信息的难度就会变大。在张杰博士的基于物联网的农业环境远程监测系统研究一文中,采用了C/S、B/S的混合架构,实现了通过计算机监控农业环境的功能,将数据保存在了SQL server中,对于采集到的数据也有很好的利用,对本文的基于安卓的农业远程监控系统有很大的启发。1.2 研究的主要目标目前国内农业环境的环境监控主要还是现场监控,控制也是现场通过机械或者有线方式实现农业环境的控制。对于无线监控,国内的研究也有很多,但是对于采集到的数据都没有很好的实现本地化。针对以上问题,本系统的主要研究目标有:(1) 实现对农业环境数据的采集工作。(2) 通过wifi的传输能力将数据传输到接收端。(3) 创建一个基于安卓系统的安卓农业环境监控APP。(4) 通过安卓APP实现对农业环境进行控制。(5) 对于采集到的数据实现数据库保存。(6) 对于保存的数据进行简单的利用。1.3 研究的主要内容整个系统可以分为两部分,服务端和客户端,即我们熟悉的C/S架构。服务端为采集端和控制端,主要负责采集数据和控制,由c51单片机开发板和wifi模块以及相干传感器组成。服务端主要研究完成接线和编写代码使传感器正确采集数据发送到单片机,再由单片机上的wifi模块传输到客户端。客户端为为使用Android系统的移动端,可以是Android智能手机,主要编写Android Application接收数据。研究的主要内容有UI的编写,使界面易于使用者操作和阅读数据。创建SQLite数据库,保存采集到的数据,便于输出图表方便使用者统计数据。通过安卓程序模拟调节农业环境,通过led灯模拟为农业环境增加光照,通过电机模拟水泵工作。本文将就此展开以下研究学习工作:(1)查找阅读国内外相关论文,对现有的农业远程监控系统进行分析。(2)分析采用wifi数据传输的优势。(3)对硬件方面进行学习,51开发板,DH11温湿度传感器和GY-30光照传感器。(4)研究学习安卓APP开发技术,包括安卓环境的搭建,Android Studio的使用,安卓自带的SQLite数据库和TCP/IP通讯协议。(5)在完成Android 系统和 Java 的学习后,在 Windows 10 环境下基于 Android Studio 编写Android 应用软件,并进行界面设计和通信协议的实现并实现对数据的简单处理。(6)程序打包安装到手机上进行测试使用,发现不足进行修改,完成后递交并作出总结和展望。第2章 相关技术及系统构建方案概述2.1、ST89C52单片机及传感器2.1.1 单片机STC89C52RC是STC公司生产的一种低功耗、高性能的MCS-51系列单片机中的一款比较成熟的产品,通过89c52开发板接入dh11温湿度传感器和gy-30光照强度传感器,传感器采集到数据后保存到单片机,再由单片机通过无线wifi模块与安卓客户端建立TCP/IP通讯,把数据传送到安卓端。STC89C52单片机采用MSC-51单片机体系结构和指令系统。可以使用C语言对单片机进行编程,例程通过数据线直接从电脑下载到单片机。另外,51单片机的技术较为成熟,且成本较低并且完全可以满足我们所需要实现的功能,另外网上有大量的学习资料可以自学,因此使用51单片机。2.1.2 传感器和其他硬件本系统用到了一系列传感器和其他硬件,有dh11温湿度传感器,gy30光照传感器,进步电机,led、m02-wifi模块。这些硬件都已经有比较成熟的应用,对于单片机程序,网上有很多现成的版本,自己写的话优化空间有限也比较耗时,可以直接使用网上的例程稍加甚至不加修改就可以直接使用。2.2 安卓系统平台2.2.1 常见移动手持设备操作系统Android 是谷歌公司在 2007 年发布的基于Linux平台的移动终端操作系统,运用平台较广,可以支持手机、手表、平板电脑和智能眼镜等设备。市场占有率大,Android和苹果的IOS操作系统占据了移动端操作系统市场90%以上的份额。大多数主流手机厂商都采用了安卓的操作系统,如小米,华为三星等。切相比于IOS操作系统,安卓设备的成本较低,最便宜的安卓设备仅在百元左右。安卓系统的开放性较好,因为其开源与Linux操作系统,有利于开发者快速的开发出所需要的应用软件。2008年9月,谷歌发布了Android系统最早的版本Android 1.0,2016年Google I/O大会上,谷歌推出了目前最新的Android7.0系统,加入了多窗口模式。在今年的I/O大会上,谷歌推出了新的Android O 操作系统,重点解决了安卓的碎片化问题,优化了在低配置机上的运行能力。2.2.2 Android 平台系统架构Android 大致上可以分为四层架构:为Android设备的各种硬件提供了底层驱动的Linux内核层(Linux Kernel)。通过了一些C/C+库来为Android系统提供特性支持的系统运行库层(Libraries),后面要用到的SQLite就是这一层的SQLite库提供了支持。在应用框架层(ApplicationsFramework)为开发者提供了构建应用程序所要使用到的各种API。我们所有在手机上安装的应用程序都是在应用程序层(Applications)上的。2.2.3 Android 的MVC设计模式MVC即Modle-View-Controller的缩写,其中Modle是逻辑模型负责建立数据结构和相应的行为操作处理,View是视图模型主要负责展示给用户在屏幕上渲染出的相应的图形信息,Controller是控制器,用户对按键和屏幕的点击反馈都是由控制器来处理的。(1) 模型Modle是一个应用系统的核心部分,包含了对于未了实现功能所要实现的处理的逻辑。以本系统中的ListView为例从数据库中读取数据就是Modle。(2) 视图视图View是APP程序反馈给用户的一个反馈结果,是对用户的可见部分。在ListView中,显示给用户的历史数据就是一个视图,视图和模型之间是通过适配器Adapter连接起来的。(3) 控制器控制器负责对外部事件的相应,控制器会实现一个队列来标识出外部事件,然后框架会依次将时间从队列中移除并派发出去。在ListView中,控制器的作用是告诉视图以什么样的格式把数据显示出去。2.3 TCP Socket通讯tcp协议是面向连接、可靠的、有序的、以字节流的方式发送数据的网络通信方式。基于tcp协议实现网络通讯的类主要有用于创建客户端的Scoket类和创建服务端的ServerSocket类。实现socket通信的步骤主要有如图2.3所示图2.3 socket通讯2.4 本章小结本章主要介绍了实现系统所用到的一些技术基础,如单片机开发技术,Android Application开发技术,socket编程等。第三章 系统硬件构建方案3.1 整体架构概述本系统构建的终极目标是让用户使用Android手机终端,通过wifi远程监测和控制农业生产环境。系统架构采用了C/S架构,即服务端/客户端架构。整个硬件系统模块主要可以分成系统核心模块、数据采集模块、控制模块、Android移动终端和wifi通讯模块。系统整体架构设计如图3.1所示。图3.1 系统架构数据采集模块主要包含了一些传感器,负责采集农业环境数据并将采集到的数据传给核心模块处理;核心模块接收数据采集模块采集到的数据,将数据处理后通过wifi通讯模块发送到Android移动终端;Android移动终端对保存的数据进行本地化保存,用户可以通过Android移动终端向核心模块发出指令;核心模块接收到指令后可以通过控制模块来调节农业环境。3.2 系统核心模块3.2.1 核心模块概述系统核心模块是整个系统的服务端的中心。向下系统模核心块对采集模块发送的数据进行处理,又要根据客户端的指令对控制模块进行控制;向上,系统核心模块将处理好的数据通过wifi模块发送给单片机端,又要接收来自单片机端的指令。在本系统中,使用零度空间的51开发板作为系统核心模块,在本系统用到的所有硬件中,开发板基于STC89LE54RE芯片,已经集成了M02-WIFI模块、5V电源接口和下载线接口,单片机开发板如图3.2.1所示图3.2.1 零度空间51单片机开发板3.2.2 代码的烧入单片机代码通过Keil4软件进行编写,编译通过后会产生一个hex文件,通过下载线接口将hex文件烧入单片机,具体步骤如下:第一步,给板子上电,并且接好串口线,,并且往下拨开关。实物图如下所示。 图 3.1.2.1 单片机串口线接好,cp2101 芯片右侧会亮一个蓝色的 LED 灯;5V 电源接,一个是蓝色和红色 LED 灯常亮。电源开关,往下是开,往上是关。此时不接任何跳线帽。第二步:串口线驱动,点击”我的电脑”右键”,选择“ 设备管理器“ 点击端口界面如下所示 图3.1.2.2 电脑端口界面选中端口下第一个Silicon Labs Cp210x USB to UART Bridge(COM5)端口右键更新驱动。第三步:打开烧入软件stc-isp,配置好“单片机型号”与“串口号”,界面如下所示 图 3.1.2.3 stc-isp烧入软件界面第四步:烧录程序,点击打开程序文档。程序文档一般都是.hex 格式。如下图所示。 图3.1.2.4 选择要烧入的程序最后点击下载/编程,然后给单片机进行断电和上电操作,最后如果提示操作成功,那么烧入完成。3.3 数据采集模块3.3.1 数据采集模块概述农业环境需要采集的数据主要有温度、湿度、光照、土壤湿度等。这些数据通过各自的传感器采集,再将采集到的数据发送到核心模块,传感器的选择如下表所示:传感器种类传感器型号温湿度传感器DH11光照传感器GY30土壤湿度传感器Rysym土壤湿度传感器表3.3.1 传感器及型号3.3.2 DH11温湿度采集传感器DH11传感器的主要作用是将温湿度传感器采集到的数据通过wifi模块发送到Android端设备进行显示和保存。DH11硬件原理图如下图 3.2.1 DH11 硬件原理图在DH11规格书中的接口说明中规定了建议连接长度短与20m时用5K上拉电阻,大于20m时根据实际情况选用合适的上拉电阻,所以在上图中添加了上拉电阻。DH11引脚定义如下:电源供电为3.3V到6V,第二脚为单总线数据接口。 图3.2.2 DH11引脚定义DH11的数据格式为:40bit数据=16bit温度数据+16bit湿度数据+8bit校验和。第一个字节是湿度高八位,也就是整数部分,第二个字节是湿度的小数部分,第三个字节是温度的整数部分,第四个字节是温度的小数部分,第五个字节为前四个字节之和,校验和数据。将dh11温湿度传感器插入单片机上的温湿度接口。然后编写单片机代码。先写DH11的驱动函数。总线空闲时是为高电平的,主机拉低总线,延时,再拉高则表示主机发起起始信号,这里延时大约18ms后拉高,然后延时20us开始检测从机的响应信号。 void DHT11ReadData(void)/主机拉低18ms DataPin=0;Delay_500Us(36);DataPin=1;/总线由上拉电阻拉高 主机延时20usDelay_5us();Delay_5us();Delay_5us();Delay_5us();/主机设为输入 判断从机响应信号 DataPin=1;.检测到从机有低电平之后,开始延时计时,从机拉低总线一段时间后,会再次拉高总线,while(DataPin)&Count+);在此检测高电平并计时,ReadOneByte();开始读取数据,连续读取五个字节之后,拉高数据总线。Checkdata=(T_data_H_Rev+T_data_L_Rev+RH_data_H_Rev+RH_data_L_Rev); if(Checkdata=Checkdata_Rev) RH_data_H=RH_data_H_Rev; T_data_H=T_data_H_Rev; 进行数据校验,校验正确之后,取温湿度的整数部分。 接下来说一下读取一个字节的过程,代码如下:void ReadOneByte(void)u8 i;for(i=0;i8;i+) Count=2;while(!DataPin)&Count+);Delay_5us();Delay_5us();Delay_5us();Delay_5us();Delay_5us();Delay_5us();Checkdata=0;if(DataPin)Checkdata=1;Count=2;while(DataPin)&Count+);/超时则跳出for循环 if(Count=1)break;/判断数据位是0还是1 / 如果高电平高过预定0高电平值则数据位为 1 ByteData=1;ByteData|=Checkdata; /forfor循环8次,读取一个字节的8位,检测数据总线是否是低电平,因为从机响应是一个拉低,再拉高的过程,当数据总线再次被从机拉低是表示开始数据传输,然后就是一个数据1和数据0的判断,每一位数据由一个低电平时间加上一个高电平时间来表示,低电平间隙约为50us,高电平为70us时则为数据1,高电平时间为26-28us则为数据0,所以我们可以在数据过了低电平间隙之后,高电平来的时候开始延时35us再来判断现在电平是否还是高电平,如果是则说明已经大于26-28us这个0数据对应的高电平的时间了,则此时为数据1,否则为数据0 ,然后等待数据总线再次拉低进入下一位数据的传输,在此期间先进行数据移位并取数据的1/0。然后写主函数。 HardWareInit();硬件初始化。 Delay_500Us(2000);延时1秒,传感器规格书上有说明,在上电之后,要等待1秒以越过传感器不稳定状态,在此期间也无需发送任何指令给传感器。 /读取一次数据。While(1)EA=0;DH11ReaData();EA=1;.然后发送数据UART_SendH(0x02); /数据标志位UART_SendH(T_data_H); /发送温度数据UART_SendH(RH_data_H); / 发送湿度数据/发送完成后清空数据,并且延时4秒,手册上有说明采用周期最少在2秒以上。 .T_data_H=0;RH_data_H=0;Delay_500Us(8000);3.3.3 GY30光照传感器GY30光照传感器如图所示:图3.3.1 gy30光照传感器Gy30的引脚定义如下图所示:图3.3.2 gy30引脚定义Gy30的驱动程序和DH11大同小异,有所不同的是,GY30模块通过SDA/SCL的I2C总线传输信息。从GY30读取数据的操作格式用代码可以描述成:uchar readadd(uchar address)Uchar data;Start();Writedata(0xa0);Respons();writeData(address);Respons();Data=readdata();Stop();Return data;Void start()Sda=1;Delay();Scl=1;Delay();Sda=0;Delay();Void stop()Sda=0;Delay();Scl=1;Delay();Sda=1;Delay();Void respons()Uchar i;Scl=1;Delay();While(sda=1)&(i125)i+;Scl=0;Delay();3.3.4 土壤传感器土壤湿度传感器模块包括一个土壤湿度传感器和一个比较器,可以通过调教比较器上的电位器调节相应的阈值来监测土壤湿度。比较器上的数字输出DO与单片机相连以此来测量土壤湿度。当土壤湿度高于阈值时,DO端口输出高电平,但土壤湿度低于阈值时,DO端口输出低电平。3.4 控制模块3.4.1控制模块概述在现代农业中,如果环境不能满足农作物的生长条件,就可以通过人为的方式改变农业环境来满足农作物的生长需要,控制模块的作用就是根据用户的要求在核心模块的控制下通过控制模块来改变农作物的生长环境。本系统中主要对农业环境的控制系统进行模拟,控制模块主要可以通过LED等来增加农作物生长环境的光照,通过进步电机模拟水泵来为农作物施水。使用的控件如下表所示:控件种类控件型号步进电机28BYJ-48LED灯WS28123.4.2 28BYJ-48步进电机步进电机是一种将单片机的电脉冲信号转化为角位移的硬件,本系统中,用步进电机来模拟水泵工作给农作物洒水。图3.4.1 步进电机接下来我们需要思考一下步进电机的速度该怎么来控制,步进电机是靠脉冲来运动的,脉冲来得块,就运转的快,脉冲来得慢,就转得慢,换而言之,每个脉冲的间隔时间决定了电机的运动快慢,也就是说电机走完一步之后我们的延时长短决定了它走的快慢。给步进电机的定子绕组(我们说的相)通电,转子就运转到那里的绕组,转子和定子各有若干小齿,每次走一步就是转动一个小齿,顺时针依次给每相通电,电机就顺时针转,逆时针给每相依次通电,电机就逆时针转,若相领两相同时通电,则运动到两相之间,即A、AB、B、BC、C、CD、D、DA,板子的电机四线接到P2口高四位,所以我们把高位按照八拍的顺序依次赋值,哪相通电就是给哪个IO高电平,其余IO给低电平,我们现在依次给P2的高四位按顺序给电平即:0001 1111,0011 1111,0010 1111,0110 1111,0100 1111,1100 1111,1000 1111,1001 1111,然后接下又是0001 1111一轮的循环,低位我们不使用就可以直接赋值1。这样我们就得到了下面这个数组。/四相五线八拍u8 code P_Move8=0x1F,0x3F,0x2F,0x6F,0x4F,0xCF,0x8F,0x9F; /反转u8 code N_Move8=0x9F,0x8F,0xCF,0x4F,0x6F,0x2F,0x3F,0x1F; /反转然后写电机的转动函数void Motor_P(void)u8 i=0;for (i=0; i8; i+) /步进电机完成八拍 P2 = P_Movei; /取数据 Delay_500Us(4); /转速选择 要让电机停止只需要设置P2=0xff就可以了。3.4.3 LED照明模块LED模块集成 8 个 WS2812 全彩 LED 和 51 型 STC15W204S 单片机WS2812 是驱动器和发光二极管一体式 LED,所以板上无需 LED 驱动器,只需用 MCU 就可以直接控制 LED 的颜色、亮度。可实现 256(R)x256(G)x256(B)色显示。采用单线串行接口驱动,支持多片级联。 因此只需一个单片机 IO 口。 STC15W204S 是增强型 51 内核单片机,与 AT89S51 使用方法完全相同。其内部集成时钟电路,支持最 高 35MHZ 的时钟频率。指令执行速度是传统 51 单片机的十几倍。当内部时钟设置为 33MHZ 时,单条指 令执行时间约为 60ns。 图3.4.3 LED模块3.4.4 自动控制方案当农业监控系统处于无人状态时,系统应该能对农业环境实现自动控制。在本系统中模拟两种在无人条件下系统进行自动控制的情况。第一种是在土壤湿度过低时,进步电机自动启动,模拟水泵工作为土壤施水。第二种是通过LED照明设备调节农业环境的光照情况。设定判断条件为当光照小于100lx时,照明设备LED模块自动打开。 3.5 WIFI模块Wifi模块的主要作用是作为服务器创建一个wifi网络,然后将核心模块处理后的数据发送到连接到了服务器的客户端上。同时也接收客户端发送过来的指令并发给核心模块处理。如图3.5所示,HX-M02 WiFi无线透传模块是一款高性能、高性价比的单面邮票孔式嵌入式 WiFi模块产品。HX-M02 WiFi最大的特点是配置简单、启动速度快,最快启动速度小于1 秒。 HX-M02 WiFi是基于Uart与Spi接口的符合WiFi无线网络标准的嵌入式模 块,内置无线网络协议 IEEE802.11 协议栈以及TCP/IP协议栈,能够实现用户嵌入式设备数据到无线网络之间的转换。通过 HX-M02 WiFi模块,传统的嵌入式设备也能轻松接入无线 WiFi网络。图3.5 M02 WIFI无线透传模块/发送数据到客户端void UART_SendH(u8 data_buf)SBUF = data_buf;while(!TI);/等待发送完成 TI=0;/清除发送中断标志 客户端发送的数据保存在定义的数组BUF 中。3.6 总结本章主要介绍了服务器端的构建方案以及集体介绍了采集模块、控制模块、核心模块和wifi模块的构建过程。第四章 安卓终端软件设计4.1安卓开发环境的搭建4.1.1所需准备的工具在本系统中,Android的程序主要通过java语言编写,因此在搭建安卓开发环境时还需要搭建好java运行环境。搭建Android开发环境需要的工具有:JDK 包含了java语言的软件开发工具包。Android SDK 由谷歌提供的开发工具包,在开发Android程序时,需要通过引入该工具包来使用相关的API。AndroidStudio 谷歌提供的Android开发IDE。和之前普遍使用的Eclipse相比,AndroidStudio的专业性更强,在AndroidStudio中开发安卓程序不再像在Eclipse中那样,通过安卓ADT插件的形式来开发安卓程序,极大的提高了我们的开发效率。4.1.2 搭建开发环境Java的运行环境的搭建只需要完成JAVA SDK的安装即可,Java SDK的资源在网上很好找,无论实在官网或者软件网站上都可以很容易的找到Java SDK,下载完成后,按照提示进行安装即可,安装完成后需要进行环境变量的设置。在计算机系统变量设置中新建一个名为JAVA_HOME的变量,变量值为JavaSdk的安装路径。再修改变量Path,变量值增加一个%Java_home%bin,用分号与前面的值隔开;然后新建变量CLASS_PATH,设置值为“.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtoos.jar。”环境变量就配置好了。图 4.1.2 java环境变量的配置AndroidSdk可以和AndroidStudio IDE的搭建放在一起进行,谷歌为了简化开发的流程,将需要用到的工具都帮我们集成好了。可以在谷歌的官网下载到AndroidStudio的安装包,在安装过程中就会让我们选择AndroidSdk的安装和选择地址。安装过程中基本上一直选择Next就好了。安装完成后就会进入AndroidStudio的欢迎界面。选择Start a new android studio project就可以创建一个新的安卓工程。4.1.3 安卓模拟器的使用安卓模拟器主要用于安卓程序的调试,通过模拟器或者usb调试实现,这里因为本人自己的手机就是安卓手机,所以对安卓的调试主要通过usb调试实现。但是因为在调试SQLite数据库时手机没有root导致不能adb shell调试数据库,所以也用到了虚模拟器调试。在使用模拟器调试时,AndroidStudio提供了很多设备供我们选择,我选择了Nexus 5X来作为模拟器,用最新的Android 7.0作为系统。点击工具栏上的Run按钮,程序就会在模拟器中运行了。图4.1.3.12 创建安卓模拟器 在模拟器中运行安卓程序在使用usb调试时,需要先在手机设置中在开发者选项中打开允许使用usb调试。然后可以直接用usb线连接手机和电脑,AndroidStudio会自动找到你的手机设备,当你点击run按钮时,可以在select deployment target中选中你的设备作为模拟器调试,然后程序就会直接运行在你的手机上了。4.1.4 第三方开源库的导入导入开源库的方法有很多种,这里我主要是通过了两种方法导入开源库的,第一种是下载开源库的jar包,保存到 项目名/app/src/libs目录下,然后右键add to加入到项目中。第二种方式是在配置文件app/build.gradle中声明我们要加入的开源库,只要开源项目把版本提交到了jcenter上,那么IDE就会帮助我们导入这个开源库。图4.1.4 在build.gradle中声明引用的开源库4.2 创建一个Android Studio 工程4.2.1创建一个新的Android Studio工程打开AndroidStudio,如果之前没有创建过工程就会进入欢迎界面,选择Start a new android studio project,创建一个新的安卓工程。输入项目名和包名选择app运行的环境为phone and table(手机或者平板),并选择最小SDK为API 16:Android 4.1。下面的提示告诉我们API的级别越低,app就能在更多的操作系统的版本上运行,但能使用的功能也就越少。IDE推荐我们使用API 16:Android 4.1,这可以保证我们的app可以在96.7%的安卓设备上运行。选择一个初始的Activity,这里我选择了空Activity。最后是Activity和布局文件的命名。图 4.2.1 创建一个新的安卓工程4.2.2 Android Studio目录结构那么一个工程就创建好了,展开项目,我们会看到IDE帮我们默认选择了Android模式的项目结构,把项目结构切换为project就可以看到真实的目录结构了。app中有我们项目中几乎所有的代码资源内容。而其他文件和目录都是自动生成的,也不需要我们进行修改,因此,app目录下的内容才是项目的重点内容。下面对app目录下的内容进行分析。build包含一些编译时自动生成的文件,但不需要我们关心和修改。libs中包含了我之前介绍的导入第三方开源库第三方jar包的存放目录,目录下的包都会被自动添加到构建路径中去。androidTest用于编写AndroidTest测试用例,可以对羡慕进行一些自动化测试。java 用于存放我们的java代码res存放了我们在项目中使用到的所有图片,布局,字符串等资源。AndroidMannifest.Xml 是Android项目的配置文件,在程序中定义的所有四大组件都需要在这个文件里注册。图4.2.2 安卓工程的目录结构4.3 安卓终端设计4.3.1主界面设计监测环境数据显示界面的主要功能是显示服务端采集到的数据,同时,也是安卓程序的主界面,除了显示采集到的数据,还要有菜单的功能,可以跳转到其它界面。界面设计主要通过xml语言实现,找到app/src/main/res/layout下的activity_main.xml。在这个文件中编写界面布局。界面布局方式为LinearLayout,即线性布局,布局方向为水平。布局下内嵌两个子布局。一个是left_layout,是一个左侧侧滑菜单,显示菜单选项。还一个布局是一个LinearLayout子布局。在LinearLayout子布局中再内嵌7个RelativeLayout相对布局。在第一个RelativeLayout中创建了一个标题栏,标题栏中有一个Button控件和一个TextView控件,前者用于打开和关闭侧滑菜单,后者显示程序的标题“农业远程监控系统”。后面5个RelativeLayout布局的功能大同小异,分别显示了温度、湿度、光照、二氧化碳浓度和连接状态。最后一个控件为继电器开关,用来启动水泵。开关按钮为一个Button,默认状态是关闭的,当点击是,图片变为开。要实现显示数据的功能,需要在app/src/main/java/activity下的MainActivity.class中编写Java程序,来实现功能。在MainActivity的顶部声明所用到的对象,包括按钮控件对象Button,文本控件对象TextView等。图4.3.1.2 声明对象在onCreat()中加载布局setContentView()函数前用req

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论