首页 > 代码库 > 基于Android平台的i-jetty网站智能农业监控系统
基于Android平台的i-jetty网站智能农业监控系统
基于android平台i-jetty网站的智能农业监控系统
摘要:传统的监控系统,一般是基于PC的有线通信传输,其有很多不足之处,如功耗较高、布线成本高、难度大,适应性差,可扩展性不强,增加新的通信线路需要再次布线施工,而且维护起来也比较麻烦,一旦线路出问题,需要繁琐的检查。而嵌入式Web监控系统是基于物联网技术,其无线通信技术具有成本低廉、适应性强、扩展性强、信息安全、使用维护简单等优点。
智能农业中,种植大棚是通过大棚内安装温湿度以及光照传感器,来对农作物的环境参数进行实时采集,由Web监控服务器处理、保存和发布,客户端操作电脑、手机,借助网络和无线通讯技术,实时观察采集温室大棚内的数据以及网络及无线远程启动大棚内的相关设备,从而实现农业无线蓝牙智能调控,该相关技术亦可应用于智能医疗设备和智能家居等。
本项目采用凌阳61系列SPCE061A单片机、温湿度传感器DHT11以及BOLUTEK公司的BLK—MD—BCO4一B蓝牙模块构成的下位机智能仪表硬件系统,它采集温湿度数据,然后通过蓝牙串口模块将温度、湿度发送给安卓手机端的智能农业监控服务器,智能农业监控服务器通过蓝牙设备接收数据并对数据进行验证、保存、处理,并通过i-jetty以B/S模式把数据发布到智能农业监控网站上,供相关的农业专家进行远程查看、远程指导和决策,进而作出对应控制操作,该操作命令又通过蓝牙反馈给下位机。
关键词:嵌入式单片机;i-jetty;蓝牙技术;B/S模式;智能农业;数据采集
目 录
1. 绪论 1
1.1 国内智能农业发展概述 1
1.2 物联网技术在智能农业的应用概况 2
1.3 采用i-jetty轻量级网站的概述 2
1.4 数据采集与蓝牙技术概况 3
1.5采用B/S模式的智能农业监控系统的前景 4
2. 功能需求说明书 5
2.1 系统开发目标 5
2.2 基本功能 5
2.3 系统流程图 6
2.4 运行环境 6
3. 概要设计说明书 7
3.1 系统的硬件概要设计 7
3.1.1 硬件原理框图 7
3.1.2 电路中各个模块的设计 7
3.2 系统的软件概要设计 12
3.2.1 软件原理概要设计 12
4. 详细设计说明书 15
4.1下位机程序设计详细说明 17
4.1.1 主模块 17
4.1.2 温湿度信号采集 17
4.1.3 设备控制 18
4.2 上位机程序设计详细说明 19
4.2.1 Android手机蓝牙设备操作模块 19
4.2.2 监控系统数据接收模块 24
4.2.3 监控系统服务控制模块 26
4.2.4 监控系统数据处理模块 27
4.2.5 监控系统标定模块 29
4.2.6 监控系统的i-jetty服务器模块 31
4.3 智能农业监控网站程序设计详细说明 31
4.3.1 用户管理模块的设计 31
4.3.2数据查询及控制处理模块的设计 33
4.3.3 视频监控模块的设计 35
4.3.4 指示灯控制模块的设计 36
4.3.5 系统标定模块的设计 36
4.3.6 蓝牙管理模块的设计 37
5. 系统的数据库设计 39
5.1 数据库详细设计说明 39
5.2 数据库E-R图设计 41
5.3 数据库的实现 41
6. 用户使用手册 43
6.1 手机端监控系统的安装 43
6.2 手机端监控web网站系统的安装 43
6.3 监控服务器系统的功能详解 43
6.4 基于web浏览器监控系统的使用 44
参考文献 51
1. 绪论
1.1 国内智能农业发展概述
物联网是新一代信息技术的重要组成部分。物联网的英文名称叫“The Internet of things”。顾名思义,物联网就是“物物相连的互联网”。这有两层意思:第一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络;第二,其用户端延伸和扩展到了任何物体与物体之间,进行信息交换和通信(M2M:Machine to Machine)。因此,物联网的定义是:通过射频识别(RFID)、红外感应器、全球定位系统、激光扫描器等信息传感设备,按约定的协议,把任何物体与互联网相连接,进行信息交换和通信,以实现对物体的智能化识别、定位、跟踪、监控和管理的一种网络。
基于物联网技术的智能农业(Precision Agriculture ) 是当今世界农业发展的新潮流。传统农业的模式已远不能适应农业可持续发展的需要,农产品质量问题、资源严重不足且普遍浪费、环境污染、产品种类需求多样化等诸多问题使农业的发展陷入恶性循环,而智能农业为现代农业的发展提供了一条光明之路,智能农业与传统农业相比最大的特点是以高新技术和科学管理换取对资源的最大节约。它是由信息技术支持的根据空间变异、定位、定时、定量地实施一整套现代化农事操作技术与管理的系统,其基本涵义是根据作物生长的土壤性状,调节对作物的投入,即一方面查清田块内部的土壤性状与生产力空间变异,另一方面确定农作物的生产目标,进行定位的“系统诊断、优化配方、技术组装、科学管理”,调动土壤生产力,以最少的或最节省的投入达到同等收入或更高的收入,并改善环境,高效地利用各类农业资源,以获得最佳经济效益和环境效益。
在实现智能农业的道路上,现有的基于有线的智能农业系统依然存在着诸多问题,随着物联网技术的发展,基于无线传感网的物联网智能农业系统将智能农业从概念化转化为产业化,无线网络具有较高的传输带宽、抗干扰能力强、安全保密性好,而且功率谱密度低。利用上述特点,可组建针对农田信息采集和管理目的的无线网络,实现农田信息的无线、实时传输。同时,可以给用户提供更多的决策信息和技术支持,用户可随时随地通过电脑和手机等终端进行查询、实现整个系统的远程管理。
综上所述,智能农业取代传统农业是农业发展的必然,更是符合我国国情的选择,智能精确农业可以促进农业发展方式的转变,可以实现高效利用各类农业资源和改善环境这一可持续发展目标,不但可以最大限度提高农业现实生产力,而且是实现优质、高产、低耗和环保的可持续发展农业的有效途径。
1.2 物联网技术在智能农业的应用概况
物联网技术在智能农业监控系统中的应用包括两方面:一方面可以利用物联网技术中各种功能的传感器和控制器,对农业生产环境进行数据采集和监控,并控制相应终端的动作;另一方面,利用物联网M2M特性将这些终端连接到互联网中,而互联网又拥有无所不到的通达性,可以让人们在任何有网络的地方实时获取物联网检测信息,以便实现实时控制。
物联网由嵌入式微处理器和有线或无线网络组成,使被监测的对象能够自主感知周围环境,与其他对象通信,以及与基于互联网的服务和基于云的应用进行交互。物联网倾向于使用高度集成的组件,也并不需要可扩展的存储。所以一个集所有功能于一身的微控制器对物联网具有很重要的意义。而ARM(Advanced RISC Machines)嵌入式处理器正好符合物联网技术的需求。ARM 的技术设计能够使当今与未来的物联网应用和服务遍布每一个角落,并具备真正的智能。
ARM嵌入式处理器是一种32位高性能、低功耗的RISC芯片,由英国ARM公司设计。ARM微处理器一般都具有体积小、功耗低、成本低、性能高、速度快的特点,而这些特点也正是物联网技术所需要的,这就为物联网技术提供了良好的硬件环境。为了满足物联网发展的需求,ARM的设计已经为增强连接性和安全性做了一些调整,增加了灵活的处理能力,并为物联网开发者提供了能让他们从一个弹片封装芯片上构建微型计算机设备的所有的开发工具。今天的ARM低功耗处理器也能在微控制器的配置下进行工作,而且非常适合小型化的设备。
1.3 采用i-jetty轻量级网站的概述
jetty是一个完全由Java实现的、开源的HTTP服务器和servlet容器,它不仅仅作为一个独立服务软件(如Tomcat)被使用,而且其优良的组件设计、高内聚低耦合、高扩展性等特性使得jetty非常易于作为嵌入式工具使用。总之,jetty具有的优点包括:
1)配置使用简单;
2)设计模块化,代码简练易懂;
3)Tomcat的应用移植到jetty基本不用修改;
4)非常适合嵌入式产品,可扩展性好;
i-jetty是一个可运行在Android移动设备平台上的jetty。
i-jetty是Android系统下的轻量级Web服务器,它将开源Web服务器Jetty移植到Android设备可提供Web服务,是一个完全由Java实现的、开源的HTTP服务器和Servlet容器。在性能方面,i-jetty主打小、快、轻,可以迅速为一些独立运行的Java应用提供网络和Web链接功能。它可以直接运行在Android系统上,为Servlet提供运行环境,这就让动态网页实现和后台操作(例如数据库操作)成为可能。同时,i-jetty可以使用Android的接口,这就降低了开发的难度和复杂度。i-jetty与其他主流的服务器一样,只要将已经做好的Web项目发布到服务器的Webapps目录下,就能实现网站的正常运行,十分的方便。
相比于常见的Linux平台下的boa、thttpd、mini_httpd、shttpd、lighttpd等嵌入式Web服务器,i-jetty具有以下优点:
(1)由于Android支持Java虚拟机,因此i-jetty支持采用面向对象思想和多线程技术构建的功能强大的Web服务程序。
(2)支持Servlet技术。Java Servlet是采用Java技术的CGI程序,相比于其他嵌入式Web服务器的传统CGI技术,Servlet能够更简洁、更高效地生成动态Web页面。
i-jetty是Google的开源项目,可以从Google官网下载APK安装包直接安装到Android系统上。
1.4 数据采集与蓝牙技术概况
在测量与控制系统中,传感器作为信息采集中必不可少的前端装置,当前在大多数测量与控制系统中,传感器和上位机是拿线连接的,有时候线线连接会造成很大不便,诸如,布线复杂,或有些地方不能布线等。在有线连接不便的情况下可以采用无线连接,随着现在无线技术(如蓝牙技术)的大力发展以及其蓝牙芯片价格的低成本,无线方式在很多场合都得到应用以取代原有的有线接口方式。
蓝牙(Bluetooth)是现代无线通信领域技术的一种,常用于替代数字设备间的电缆连接,和解决现代网络的最后10-100米的无线通讯。蓝牙技术具有功耗低、体积小等突出的优点,因此蓝牙技术特别适合集成到计算机外围设备等数字设备中,具有实际的应用前景。
蓝牙技术是近年来发展比较迅速的短距离无线通信技术手段,可以用来替代数字设备间短距离的有线电缆连接。利用蓝牙技术设计的数据采集无线传输模块,与传统的电线或红外方式传输测控数据相比,在测控领域应用蓝牙技术的优点主要有:
1.在测量与采集数据时常常会遇到干扰,而蓝牙技术采用了跳频扩频技术,可以提高数据在传输中的抗干扰能力和安全性。
2.在工作的时候不要用线连接上下位机(尤其是不方便用线路连接的地方)方便采集数据。
蓝牙连接可以从各个角度进行测控数据的传输,省去导线连接的烦恼,可以实现多个测控仪器设备间的连网,便于进行集中监测与控制。
1.5采用B/S模式的智能农业监控系统的前景
B/S(Browser/Server,浏览器/服务器)模式下的智能农业监控系统是以Web作为通信平台的监控系统,采用浏览器作为统一的客户端。基于B/S模式的结构将Web与数据库相结合,形成的基于数据库的Web计算模式,并将该模型应用到Internet/Intranet中,最终形成了三层客户机/服务器应用结构,三层结构将应用系统的三个功能层面进行了明确的分割,使其在逻辑上各自独立。B/S的三层体系结构包括表示层、业务逻辑层和数据层,它们被分割成三个相对独立的单元。
表示层:即Web浏览器,包含系统的显示逻辑,它位于客户端,用来生成在客户浏览器中显示的用户界面。
业务逻辑层:包括一个或者多个组件服务,它们应用业务规则实现应用程序逻辑并完成应用程序运行所需要的数据处理。
数据层:即数据库服务器,包含数据存储和与它交互的组件或服务。数据层为业务逻辑层提供服务,根据业务逻辑层的要求从数据库中提取数据或者修改数据库中的数据。
相对于传统的C/S(客户/服务器)模式,基于B/S模式的智能农业监控系统具有以下优点:
1)客户端不再负责数据的存取和复杂数据计算等任务,只需要进行显示,大大降低了对客户端的要求,降低了投资和使用成本。
2)易于维护和升级,软件安装简易。由于客户端没有专用的软件,维护人员只需要把主要精力放在功能服务器上;要对网络应用进行升级时,也只需要更新服务器端的软件。这就减轻了系统维护与升级的成本与工作量。
3)用户操作使用简便。B/S模式的客户端只是提供友好界面的浏览器,用户界面一致、友好,用户使用起来非常方便,利于推广。
4)易于实现跨平台的应用,解决了不同系统的兼容问题。
综上所述,B/S模式使用的是基于Internet的Web技术,结合传统的控制原理,拓展了传统的监控应用功能,更适合时代的发展,是技术发展的大势所趋。
2. 功能需求说明书
2.1 系统开发目标
本监控系统主要采用凌阳61系列SPCE061A单片机、温湿度传感器DHT11以及BOLUTEK公司的BLK—MD—BCO4一B蓝牙模块构成的硬件系统采集温湿度数据,然后通过蓝牙串口模块将温度、湿度发送给安卓手机端的监控系统,监控系统接收数据后对数据进行验证、保存、处理,以B/S模式通过i-jetty进行数据的发布,给相关的农业专家的远程指导、方案决策提供数据依据,进而作出对应控制操作,该操作命令又通过蓝牙反馈给下位机。
2.2 基本功能
本监控系统主要拥有以下基本功能:
1. 凌阳61单片机硬件系统实现温湿度传感器数据采集。
2. 凌阳61单片机硬件系统实现蓝牙模块与手机蓝牙设备的链接与通讯。
3. 智能农业监控服务器可以控制本手机的蓝牙状态,如打开、关闭、可见、搜索周围的蓝牙设备。
4. 智能农业监控服务器统可以进行系统温湿度数据标定、定时服务的开启等参数的设置。
5. 智能农业监控服务器可以按照以分钟、小时、天、月、年为相应的周期进行数据平均等处理。
6.智能农业监控服务器网站实现用户名与密码的验证登陆。
7. 可以通过浏览器远程查看实时数据和历史数据,并可对数据进行条件检索、删除等操作。
8. 支持通过浏览器来查看远程视频。
9. 对下位机系统发送控制命令,打开或者关闭设备,被控制设备可以是阀门、灯、风扇等。
2.3 系统流程图
本监控系统由上位机的监控系统、下位机的数据采集系统以及网络客户端浏览器组成,上、下位机的具体的流程图见图2-1和图2-2。
图2-1 Android智能手机监控系统流程图 图2-2 智能仪表软件系统流程图
2.4 运行环境
满足以下条件的安卓手机。
- 操作系统为4.0版本及以上。
- 存在蓝牙设备。
- 含有SQLite数据库。
4. 手机内存1G及以上。
5. 外部存储(SD卡)至少为1G。
3. 概要设计说明书
3.1 系统的硬件概要设计
3.1.1 硬件原理框图
本文所设计的嵌入式无线数据采集控制终端,是基于SPCE061凌阳单片机对实时的温、湿度数据的采集,并通过UART接口与蓝牙模块相连,从而通过蓝牙对所采集的信号进行无线传输至安卓手机Web服务器端保存,再通过手机或PC客户端浏览器显示出来。这就是本文的中心思想和基本思路,具体方案通过框图3-1展现出来。
图3-1 硬件方案原理框图
3.1.2 电路中各个模块的设计
由图3-1系统原理图可知,系统中用到了4个模块。它们分别是SPCE061A凌阳单片机,BLK-MD-BC04-B蓝牙模块,DTH11温湿度传感器以及所需的电源模块。下面就其它模块进行逐一简述。
3.1.2.1 凌阳单片机SPCE061A
凌阳单片机的引脚有84个,在系统硬件电路中,只用了一部分引脚。所以,SPCE061A模块的硬件设计如图3-2所示。
图3-2 系统中凌阳单片机硬件电路
硬件电路的4个主要功能说明如下:
1.单片机工作环境
电路中使用的是SPCE061A单片机的最小系统,还有许多引脚因未用到,所以就没有在电路图中标出来。值得注意的是在电路中,SPCE061A上加了个LED指示灯,用于查询电路中单片机是否正常工作。在复位引脚XRESB端接了个按键复位电路。该电路除了具有上电复位功能外,若要复位,只需按图中的开关S,因XRESB是低电平有效的,就可达到复位的功能。
2. DTH11温湿度传感器与单片机的连接
图中温度传感器使一根总线与凌阳单片机相连,本系统使用的是IOA0引脚。通过这一根总线复用,将温度传感器采集的温度信号转变成电压信号再传送到凌阳单片机中。
3.喷淋加湿、升温控制等设备与单片机的连接
系统中使用一根开关控制线来代表系统的温度、湿度控制设备的控制,本系统使用的是IOA1引脚来模拟。通过这一根总线连接一个LED灯,由其的亮与灭来代表温度控制或其他控制。
- BLK-MD-BC04-B蓝牙模块与单片机的连接
而当凌阳单片机采集到温湿度数据后,由内部UART串口连接图中的IOB10和IOB7引脚后让其分别连接到蓝牙模块的UART_RX和UART_TX引脚。实现数据传输。
3.1.2.2 BOLUTEK公司的BLK—MD—BCO4—B蓝牙模块
本系统选用的蓝牙模块为BOLUTEK公司的BLK—MD—BCO4一B蓝牙模块 ,外观如图3-3。BLK—MD-BC04-B蓝牙模块是BOLUTEK公司专为智能无线数据传输而打造,采用英国CSR公BlueCore4一Ext芯片,遵循V2.1+EDR蓝牙规范。模块支持UART,USB,SPI,PCM,SPDIF等接口,并支持SPP蓝牙串口协议,具有成本低,体积小、功耗低、收发灵敏性高等优点,只需配备少许的外围元件就能实现其强大功能。
图3-3 BLK—MD—BCO4一B蓝牙模块
BOLUTEK公司的BLK—MD—BCO4一B蓝牙模块为智能型蓝牙无线数据传输元件,本产品标准型支持:4800bps~1382400bps等多种接口的波特率,支持主模式更加支持从模式,支持64通道蓝牙可以替代串口的接线。BLK—MD—BCO4一B蓝牙模块采用了全球领先的蓝牙芯片供应商CSR的BlueCore2-External作为芯片,完全符合蓝牙V1.1标准,最大发射功率设计为2.5mW(4dbm),工作电压为3.3V,该模块为11.5mm×11.5mm的正方形,厚度仅为1.8mm,对于本文所设计的便携式终端设备来说极为适合。硬件支持数据和语音传输,最高可支持3M调制模式。语音接口支持PCM协议。BLK—MD—BCO4一B蓝牙模块高灵敏性接收,低成本,体积小巧,低功耗,用于蓝牙的数据传输领域。可以方便的和手机端的监控系统相连,也可以两个模块之间的数据互通。避免繁琐的线缆连接,能直接替代现有的有线通讯。BOLUTEK公司的BLK—MD—BCO4一B蓝牙模块的结构图如图3-4所示,系统引脚原理图见图3-5所示。
图3-4 BLK—MD—BCO4一B蓝牙模块蓝牙模块结构
图3-5 BLK—MD—BCO4一B蓝牙模块蓝牙模块结构引脚图
上图中,UART_TX和UART_RX分别接凌阳单片机的IOB7和IOB10端口,提供了数据的传输和接收。
本设计是通过UART接口进行传输数据,UART接口上可达最大460kbit/s的数据传输速率,模块的缺省设置为57.6kbit/s。模块中的UART支持的波特率位:300,600,900,1200,1800,2400,4800,9600,19200,38400,57600,115200,230400,460800bit/s,有一个128字节的FIFO先进先出队列。UART接口提供四根信号线,TXD与RXD是输入输出数据线;RTS与CTS是控制线,可用来进行流量控制,避免临时的UART缓冲区溢出。凌阳单片机通过TXD与RXD两根信号线将实时数据输入到蓝牙模块的。安卓手机蓝牙设备与串口蓝牙模块之间的通信必须要通过蓝牙传输协议来实现。本系统要完成的任务是凌阳单片机通过UART接口控制蓝牙模块,最终实现BLK—MD—BCO4一B蓝牙模块将采集的数据传送至安卓手机蓝牙设备并提交给智能手机的监控系统处理。
3.1.2.3 温湿度传感器DHT11模块
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式存在OTP内存中,传感器内部在检测型号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,使其成为该类应用甚至最为苛刻的应用场合的最佳选择。产品为4针单排引脚封装,连接方便。DHT11外观如图3-6所示,引脚说明如下表3-1。
图3-6 DHT11的外观
DHT11技术参数如下:
供电电压: 3.3~5.5V DC
输 出: 单总线数字信号
测量范围: 湿度20-90%RH, 温度0~50℃
测量精度: 湿度+-5%RH, 温度+-2℃
分 辨 率: 湿度1%RH, 温度1℃
互 换 性: 可完全互换
长期稳定性: <±1%RH/年
表3-1 引脚说明
pin | 名称 | 注释 |
1 | VDD | 供电 3-5.5VDC |
2 | DATA | 串行数据,单总线 |
3 | NC | 空脚,请悬空 |
4 | GND | 接地,电源负极 |
DTH11与SPCE061A单片机的接口电路如图3-7所示,由于DS18B20传感器支持“一线总线”接口,因此只需将DTH11信号线接到单片机的1位I/O线上即可,而且在1跟I/O线上可以挂接多个传感器实现多点温度测量。为了提高抗干扰性能,采用外加电源方式对传感器供电。
图3-7 DTH11与SPCE061A接口电路
3.2 系统的软件概要设计
3.2.1 软件原理概要设计
本监控系统软件的设计在凌阳61单片机和安卓手机端监控系统均有涉及,下面就一一介绍设计原理框图,总原理框图如图3-8所示。
1) 61单片机的主程序初始化硬件设备,设置4hz中断和通信中断,然后等待发生中断,进而由中断服务进行数据的采集与发送、或通过串口接受蓝牙模块传来的控制命令进行控制操作。
图3-8 基于凌阳61单片机蓝牙嵌入式监控系统软件设计原理框图
2) 智能农业监控系统软件由智能农业监控服务器和智能农业监控网站构成。智能农业监控服务器包括蓝牙通讯组件、Sqlite数据库服务组件、系统标定模块、手机定时服务控制组件、配置管理组件以及i-jetty网站服务器等六大部分,数据库服务组件包括小时数据处理、日数据处理、月数据处理和年数据处理。智能农业监控器网站基于servlet+Sqlite开发,包括用户管理模块、用户登陆模块、数据查询控制模块等三大部分。其中安卓手机端功能操作设计原理和智能农业监控网站功能操作设计原理分别如图3-9和图3-10所示。
图3-9 智能农业监控服务器操作功能方案原理框图
图3-10 智能农业监控器网站操作功能设计原理图
4. 详细设计说明书
在概要设计中,我们对凌阳单片机SPCE061A 、BLK—MD—BCO4一B蓝牙模块以及温湿度传感器DHT11模块已经做了详细的介绍,对凌阳单片机SPCE061A与BLK—MD—BCO4一B蓝牙模块和凌阳单片机SPCE061A与温湿度传感器DHT11模块的电路连线也做了详细的介绍。下面是对蓝牙数据采集和传输系统和手机端的监控系统设计的详细介绍,如图4-1为凌阳SPCE061A单片机、BLK—MD—BCO4一B蓝牙模块、温湿度传感器DHT11模块以及安卓手机正确连线后的实物图。
图4-1 具有温湿度传感器和蓝牙的凌阳单片机系统与手机构成的实物图
在上位机监控系统的详细设计中,我们用四个包来完成相应类的描述,com.bzc.bean包中用来描述所有的实体类,实体类的属性与数据库的字段名保持一致。com.zsj.blutetoothreceiver包用来描述所用蓝牙模,com.bzc.receiver包描述实体业务类、提供相应的业务方法。com.bzc.dao包是一个工具包,用来描述数据库连接工具类,其余为i-jetty服务包。上位机监控系统程序目录结构如图4-2,图4-3为所有包的UML图。
图4-2 上位机监控系统JAR包设计
图4-3 org.mortbay.ijetty包、com.zsj.receiver包、com.bzc.dao包、org.morbay.view包、com.bzc.receiver包、com.zsj.blurtoothreceiver包、com.bzc.bean包UML图
4.1下位机程序设计详细说明
该部分单片机系统主要有主函数、中断函数、串口数据接收函数等。
4.1.1 主模块
主模块函数设计详细说明如表4-1,主模块流程图见4-4。
表4-1 主模块函数设计详细说明
函数名 | 备注 |
void Delay_10us(void) | 延时10us |
void Delay(unsigned k) | 延时ms级 |
void Init_Clock(void) | 初始化时钟 |
void Init_Uart() | UART初始化 |
Main() | 主函数 |
图4-4 主模块流程图
4.1.2 温湿度信号采集
温湿度信号采集模块函数设计详细说明如表4-2,温湿度信号采集模块流程图见4-5。
表4-2 温湿度信号采集模块函数设计详细说明
函数名 | 备注 |
void Send_Byte(unsigned char data) | 发送一个字节数据 |
void Send_N_Byte(unsigned char table[], int n) | 发送多个字节数据 |
void Send_String(unsigned char *p) | 发送一个字符串数据 |
void SetDataPinIN(void) | 设置数据引脚为输入 |
void SetDataPinOUT(void) | 设置数据引脚为输出 |
unsigned char Read_DHT11(void) | 从DHT11温湿度传感器读取数据,成功返回1,否则返回0 |
void Get_Send_Temp_Humidity() | 获取温度湿度数据并发送 |
图4-5 温湿度信号采集模块流程图
4.1.3 设备控制
设备控制模块函数设计详细说明如表4-3,设备控制模块流程图见4-6。
表4-3 设备控制模块函数设计详细说明
函数名 | 备注 |
void IRQ7(void) | 串口中断函数 |
void IRQ5(void) | 定时采集数据中断函数 |
图4-6 设备控制模块流程图
具体源代码见附录单片机初始化程序。
4.2 上位机程序设计详细说明
安卓手机端软件设计共有六个模块,分别为Android手机蓝牙设备操作模块、监控系统数据接收模、监控系统服务控制模、监控系统数据处理模、监控系统标定模块、监控系统的i-jetty服务器模块。
4.2.1 Android手机蓝牙设备操作模块
蓝牙设备操作模块主要完成对本机蓝牙的一些基本操作,如打开本机蓝牙、关闭本机蓝牙、使本机蓝牙可见、搜索周围的蓝牙设备。当搜索到周围的蓝牙设备后判断是否存在以前配对信息,若果存在配对信息则直接建立链接,如果存在配对信息先配对后建立链接,图4-9是Android手机蓝牙设备操作模块的流程图。
android.bluetooth 提供了皆如扫描设备、连接设备以及对设备间的数据传输进行管理的类,这些类对蓝牙设备进行功能性管理。蓝牙模块API 提供的应用包括了扫描其它蓝牙设备、通过查询本地蓝牙适配器来匹配蓝牙设备、建立RFCOMM(无线射频通信协议)的通道/端口、从其他的蓝牙设备中连接到指定的端口、传输数据到其他设备,或者从其他设备中接收数据。
图4-9 Android手机蓝牙设备操作模块流程图
以下就是操作本机蓝牙的一些API。
BluetoothAdapter 代表本地的蓝牙适配器设备BluetoothAdapter类让用户能执行基本的蓝牙任务。例如:初始化设备的搜索,查询可匹配的设备集,使用一个已知的MAC地址来初始化一个BluetoothDevice,创建一个BluetoothServerSocket类以监听其它设备对本机的连接请求等。
BluetoothClass 代表一个描述了设备通用特性和功能的蓝牙类 比如,一个蓝牙类会指定皆如电话、计算机或耳机的通用设备类型,可以提供皆如音频或者电话的服务。
BluetoothClass.Device 定义了所有设备类的常量
BluetoothClass.Device.Major 定义了所有主要设备类的常量
BluetoothClass.Service 定义了所有服务类的常量
BluetoothDevice 代表一个远程蓝牙设备。让你创建一个带有各自设备的BluetoothDevice或者查询其皆如名称、地址、类和连接状态等信息。
BluetoothServerSocket 一个蓝牙监听端口,蓝牙端口监听接口和TCP端口类似:Socket和ServerSocket类。在服务器端,使用BluetoothServerSocket类来创建一个监听服务端口。当一个连接被BluetoothServerSocket所接受,它会返回一个新的BluetoothSocket来管理该连接。在客户端,使用一个单独的BluetoothSocket类去初始化一个外接连接和管理该连接。
BluetoothSocket 一个双向连接的蓝牙端口,蓝牙端口监听接口和TCP端口类似:Socket和ServerSocket类。在服务器端,使用BluetoothServerSocket类来创建一个监听服务端口。当一个连接被BluetoothServerSocket所接受,它会返回一个新的BluetoothSocket来管理该连接。在客户端,使用一个单独的BluetoothSocket类去初始化一个外接连接和管理该连接。
在Android手机蓝牙设备操作模块中,共用6个类相互调用完成对本机的蓝牙操作,分别为bluetooth_receiver、opne_bluetoothreceiver、search_bluetoothreceiver、search_finalreceiver、acceptreceiver、send_messagereceiver、addBluetoothActivity、bluetoohBean、bluetoothDao 。类的详细说明见表4-5,图4-10为它们之间的关系类图。
表4-5 Android手机蓝牙设备操作模块相关类设计详细说明
类 名 | 方 法 | 成员变量 | 备注 |
bluetooth_Receiver(蓝牙设备操作处理类) | onReceive(Context arg0, Intent arg1)(广播接收处理方法) | BluetoothAdapter adapter(蓝牙适配器对象) |
|
open_bluetoothreceive(开启蓝牙处理类) | onReceive(Context context, Intent intent)(广播接收处理方法)bluetooth_receiver.adapter.enable(); | 启动蓝牙 |
|
search_bluetoothreceiver(搜索蓝牙设备处理类) | onReceive(Context context, Intent intent)(广播接收处理方法) | BluetoothAdapter adapter(蓝牙适配器对象) |
|
search_finalreceiver(获得最终蓝牙设备处理类) | onReceive(Context context, Intent intent)(广播接收处理方法) | public static List<String> devicelist_re;(蓝牙设备列表) |
|
Acceptreceiver (建立蓝牙通信通道类) | onReceive(Context context, Intent intent)(广播接收处理方法) | public static List<String> devicelist_re=new ArrayList<String>();(蓝牙设备列表) private BluetoothAdapter adapter;(蓝牙适配器对象) public static BluetoothSocket btSocket;(蓝牙通信套接字) |
|
send_messagereceiver(发送采集数据类) | onReceive(Context context, Intent intent)(广播接收处理方法) | public boolean isRecording = true;// 线程控制标记 byte result1,result2; BluetoothSocket socket; private byte[] t_second=new byte[8]; private byte[] h_second=new byte[8]; private double t_second_av = 0.0,h_second_av = 0.0; private int pi=0,pii=0; private Context myContext; |
|
addBluetoothActivity(添加蓝牙设备类) | onCreate(Bundle savedInstanceState) void initview() void onClick(View v) | EditText et_blue_name; private EditText et_blue_mac; private ImageView blue_back; private Button confirm_btn; |
|
bluetoohBean (蓝牙实体类) | String getBule_name() void setBule_name(String bule_name) String getBlue_mac setBlue_mac(String blue_mac) bluetoohBean(String bule_name, String blue_mac) (有参构造方法) bluetoohBean()(无参构造方法) | String bule_name;(蓝牙设备名称) String blue_mac(蓝牙设备地址) |
|
bluetoothDao (蓝牙设备业务处理类) | blutetoothBean getById(Stringid):string save(blutetoothBean bean):void |
|
|
图4-10 Android手机蓝牙设备操作模块类图
图4-11 蓝牙添加类图
4.2.2 监控系统数据接收模块
监控系统数据接收是本系统的重中之重,在这个模块中要完成下位机蓝牙模块传输过来的数据的验证、处理、以及存储。图4-12是监控系统数据接收模块的模块图。
在监控系统数据接收模块中,共用一下几个包中的类相互调用完成对本机的蓝牙数据接收与存储操作,分别为com.bzc.dao、com.bzc.bean、。其中类的详细说明见表4-6,图4-13为它们之间的关系类图。
表4-6 监控系统数据接收模块相关类设计详细说明
类 名 | 方 法 | 成员变量 | 备 注 |
MininfoBean | MininfoBean(String temperature, String humidity, String second)(有参构造方法) MininfoBean(){}(无参构造方法) | String temperature(温度) String humidity(湿度) String second(当前时间) | 分钟数据实体类 |
minServer | find(Context context, String second)(查询全部) findall(Context context)(按条件查找) save(Context context,MininfoBean bean)(保存) delete (Context context)(删除全部) | MininfoBean bean (分钟数据实体类) List<MininfoBean> mininfo (分钟数据实体类列表)
| 分钟数据处理业务类 |
dbDao | SQLiteDatabase getconn()(连接数据库) |
| 数据库工具类 |
图4-12 监控系统数据接收模块的模块流程图
图4-13 监控系统数据接收模块类图
4.2.3 监控系统服务控制模块
监控系统服务控制模块包括启动(关闭)小时数据监控服务、启动(关闭)日据监控服务、启动(关闭)月数据监控服务三个事件。其中这三个事件的处理流程都是类似的,所以本文就以启动(关闭)小时数据监控服务做一个概要介绍。
1. 获取服务启动后一小时的0分0秒的时间。
2. 设定重复运行的时间3600S。
3. 将启动小时数据监控服务添加到AlarmManager中。
4. 通过setRepeating()让服务重复运行。
5. 通过Toast提示用户服务已启动。
6. 通过cancel()关闭服务。
7. 通过Toast提示用户服务已关闭。
在所有监控系统服务控制模块有两个类相互调用来完成对数据的监控功能。完成小时数据监控服务的类有settingActivity、hourReceiver。类的详细说明见表4-7,图4-14是小时监控系统服务控制模块类图。
表4-7 监控系统服务控制模块相关类设计详细说明
类 名 | 方 法 | 成员变量 | 备 注 |
settingActivity | onCreate(Bundle savedInstanceState)(Activity创建调用函数) onCheckedChanged(CompoundButton buttonView, boolean isChecked) | CheckSwitchButton min_cs_button, hour_cs_button, day_cs_button, month_cs_button, close_blue_button; ImageView view; Calendar calendar; BluetoothSocket btSocket; | 系统调度页面处理类 |
hourReceiver | onReceive(Context context, Intent intent)(广播接收处理方法) | List<HourinfoBean> hourinfos(小时实体类对象列表) DayinfoBean daybean(日实体类对象) | 小时数据监控服务业务类 |
图4-14 小时监控系统服务控制模块类图
4.2.4 监控系统数据处理模块
本模块包括当小时数据处理、当天数据处理、本月数据处理以及本年数据处理四个事件,其中这四个事件的处理流程都是类似的,所以本文就以日数据处理过程做一个概要介绍如图4-15是监控系统日数据处理流程图。
首先判断小时数据监控服务是否开启,若开启则以小时为单位处理数据。处理数据的过程为:当用户每次查看主页面的数据变化时系统就会自动的把当前的数据存入数据库中的小时数据表(hour)中,当下个小时刚开始时系统自动的把小时数据表(hour)中的数据读取并求平均值放入当天数据表(day)存储(若在小时数据表(hour)中无数据则不求平均值,在当天数据表(day)的插入0.000作为默认值)并生成相应的数据变化曲线。
若关闭或未开启服务则用户每次查看主页面的数据变化时系统就会自动
把当前的数据存入数据库中的小时数据表(hour)中。
在监控系统数据处理模块中以下几个类完成数据的处理,具体完成数据处理的类有minReceiver、hourReceiver、myReceiver、monthReceiver;类的详细说明见表4-8,图4-16为监控系统日数据处理类图。
表4-8 监控系统数据处理模块相关类设计详细说明
类 名 | 方 法 | 成员变量 | 备 注 |
minReceiver | onReceive(Context context, Intent intent)(广播接收处理方法) | List<MininfoBean> mininfos;(分钟实体对象列表) HourinfoBean; Hourbean;(小时实体对象) | 分钟数据处理类 |
hourReceiver | onReceive(Context context, Intent intent)(广播接收处理方法) | List<HourinfoBean> hourinfos;(小时实体对象列表) DayinfoBean daybean(当天实体对象) | 小时数据处理类 |
myReceiver | onReceive(Context context, Intent intent)(广播接收处理方法) | List<DayinfoBean> dayinfos(当天实体对象列表) MonthinfoBean monthbean(月实体对象) | 当天数据处理类 |
monthReceiver | onReceive(Context context, Intent intent)(广播接收处理方法) | List<MonthinfoBean> monthinfos(月实体对象列表) YearinfoBean yearbean(年实体对象) | 月数据处理类 |
图4-15 监控系统日数据处理的流程图
图4-16 监控系统日数据处理类图
4.2.5 监控系统标定模块
数学模型进行标定。其标定的过程为:用安卓手机端监控系统随机获取3组数据,然后再用标准的温湿度计测量3组真实的数据,然后带入数学公式求出A、B、C三个系数保存到文件中。
在监控系统标定模块中共有两个类相互调用完成A、B、C三个系数的保存工作,具体的类为settingActivity、minReceiver,类的详细说明见表4-9,图4-17为监控系统标定模块类图。
表4-9 监控系统标定模块相关类设计详细说明
类 名 | 方 法 | 成员变量 | 备注 |
send_messagereceiver(发送采集数据类) | onReceive(Context context, Intent intent)(广播接收处理方法) | List<bdBean>mbdInfo(标定实体集合) |
|
bdBean(标定实体类) | 基本set get 方法 bdBean();(无参构造方法) bdBean(String t_a, String t_b, String t_c, String h_a, String h_b, String h_c, );(有参构造方法) | String t_a String t_b String t_c String h_a String h_b String h_c (温湿度标定参数) |
|
bdDao(标定数据库操作类) | List<bdBean> getAll()(获得标定参数实体集合) | List<bdBean>bdinfo (标定实体集合) |
|
dbDao(数据库工具类) | SQLietDatabase getconn()(建立数据库连接) |
|
|
图4-17 监控系统标定模块类图
4.2.6 监控系统的i-jetty服务器模块
i-jetty服务器模块是通过web项目发布数据的轻量级嵌入式服务器模块,我们通过servlet连接Android软件端数据库,在这里我们利用了其servlet容器的属性作为服务器使用,下面我们进行模块运行流程的简要介绍:
(1)启动i-jetty服务器模块同时将绑定的监控系统启动。
(2)i-jetty服务启动,将位于webapp文件夹中的dex文件解析成HTML 网页。
(3)在服务上发布网页,同时连接监控系统的数据库。
(4)访问网页,发布数据。
其中Web项目开发动态html,采用dx命令将web项目编译成Android虚拟机识别的字节码文件,然后将文件置于i-jetty服务器目录下的webapp文件夹下。i-jetty软件设计架构如图4-18所示。
图4-18 i-jetty软件设计架构
4.3 智能农业监控网站程序设计详细说明
智能农业监控网站程序设计共有五个模块,分别为用户管理模块、数据显示处理模块(包括分钟数据显示处理、小时数据显示处理、当天数据显示处理、本月数据显示处理和本年数据显示处理)、视频监控模块、指示灯控制模块、系统标定模块。
4.3.1 用户管理模块的设计
在监控登陆页面有用户名与密码的输入框,当用户输入用户名与密码点击登陆按钮后调用用户登录的业务类(LoginServelet)的相关方法来验证,如果用户信息合法则进入调度页面进行相关的操作,若验证出错则显示出错页面提示用户。图4-19是监控网站用户管理模块的流程图。
在监控系统用户管理模块中有五个类分别调用完成用户管理功能,分别是dbDao(数据库业务类)、loginServelet(用户登陆页面处理类)、userServelet(用户信息显示类),deleteServelet(用户信息删除类),insertServelet(用户信息添加类),详细说明见表4-10。
表4-10 监控网站用户管理模块相关类设计详细说明
类 名 | 方 法 | 成员变量 | 备 注 |
loginServlet | doPost()(从浏览器发送的post请求进行处理,验证用户登录信息的准确性) doGet()(从浏览器发送的get请求进行处理,验证用户登录信息的准确性) | SQLiteDatabase database(数据库对象) dbDao dao(数据库业务操作对象) | 登陆页面处理类 |
dbDao | SQLiteDatabase getconn() (无参构造方法) | SQLiteDatabase db(数据库对象) | 数据库业务类 |
userServlet | doPost()(从浏览器发送的post请求进行处理,显示用户信息) doGet()(从浏览器发送的get请求进行处理,显示用户信息) | SQLiteDatabase database(数据库对象) dbDao dao(数据库业务操作对象) | 用户登录信息显示类 |
deleteServlet | doPost()(从浏览器发送的post请求进行处理,删除显示用户信息) doGet()(从浏览器发送的get请求进行处理,删除显示用户信息) | SQLiteDatabase database(数据库对象) dbDao dao(数据库业务操作对象) | 用户信息删除类 |
insertServlet | doPost()(从浏览器发送的post请求进行处理,删除显示用户信息) doGet()(从浏览器发送的get请求进行处理,删除显示用户信息) | SQLiteDatabase database(数据库对象) dbDao dao(数据库业务操作对象 | 用户信息添加类 |
图4-19 监控网站用户管理模块流程图
4.3.2数据查询及控制处理模块的设计
本模块包括当分钟数据处理小时、数据处理、当天数据处理、本月数据处理以及本年数据处理五个事件,其中这五个事件的处理流程都是类似的,所以本文就以日数据处理过程做一个概要介绍如图4-20是监控系统日数据处理流程图。
首先判断小时数据监控服务是否开启,若开启则以小时为单位处理数据。处理数据的过程为:当用户每次查看主页面的数据变化时系统就会自动的把当前的数据存入数据库中的小时数据表(hour)中,当下个小时刚开始时系统自动的把小时数据表(hour)中的数据读取并求平均值放入当天数据表(day)存储(若在小时数据表(hour)中无数据则不求平均值,在当天数据表(day)的插入0.000作为默认值)。
若关闭或未开启服务则用户每次查看主页面的数据变化时系统就会自动的把当前的数据存入数据库中的小时数据表(hour)中。
在监控网站数据显示处理模块中由五个类完成显示数据功能,分别是minServlet(分钟处理数据类)、hourServlet(小时处理数据类)、dayServlet(本日处理数据类)、monthServlet(当月处理数据类)、yearServlet(本年处理数据类),详细说明见表4-11。
表4-11 监控网站数据处理模块相关类设计详细说明
类 名 | 方 法 | 成员变量 | 备 注 |
minServlet | doPost()(从浏览器发送的post请求进行处理,显示数据信息) doGet()(从浏览器发送的get请求进行处理,显示数据信息) | SQLiteDatabase database(数据库对象) dbDao dao(数据库业务操作对象 | 分钟数据显示处理类 |
hourServlet | doPost()(从浏览器发送的post请求进行处理,显示数据信息) doGet()(从浏览器发送的get请求进行处理,显示数据信息。) | SQLiteDatabase database(数据库对象) dbDao dao(数据库业务操作对象 | 小时数据显示处理类 |
dayServlet | doPost()(从浏览器发送的post请求进行处理,显示数据信息) doGet()(从浏览器发送的get请求进行处理,显示数据信息) | SQLiteDatabase database(数据库对象) dbDao dao(数据库业务操作对象 | 当天数据显示处理类 |
monthServlet | doPost()(从浏览器发送的post请求进行处理,显示数据信息) doGet()(从浏览器发送的get请求进行处理,显示数据信息) | SQLiteDatabase database(数据库对象) dbDao dao(数据库业务操作对象 | 当月数据显示处理类 |
yearServlet | doPost()(浏览器发送的post请求进行处理,显示数据信息) doGet()(从浏览器发送的get请求进行处理,显示数据信息) | SQLiteDatabase database(数据库对象) dbDao dao(数据库业务操作对象 | 本年数据显示处理类 |
图4-20 监控网站日数据处理的流程图
4.3.3 视频监控模块的设计
采取网络实时传输的视频监控系统。一个完善的网络视频 监控系统,在保证系统功能的前提下,要尽量保证视频流在网络上以较少的数据量传输尽可能多的数据信息,达到在客户端能够以较清晰的画面把视频图像显示出来。根据实际使用功能及安全防范管理的要求,对安防监控的场所进行实时有效的视频监视。到用户不论何时何地只要有一台 IP 主机就能观看其安装摄像头所监控的一端。 设计中使用流媒体视频编码技术,运用编码工具将摄像机采集 到的音视频信号进行压缩编码,转换成流格式。采用流媒体发布平台完成流媒体的发布。在监控网站视频监控模块中rstpServelet类完成视频监控功能,详细说明见表4-12。
表4-12 监控系统日数据处理模块相关类设计详细说明
类 名 | 方 法 | 成员变量 | 备 注 |
rstpServelet | doPost()(从浏览器发送的post请求进行处理,显示视频) doGet()(从浏览器发送的get请求进行处理,显示视频) | SQLiteDatabase database(数据库对象) dbDao dao(数据库业务操作对象) | 视频监控类 |
4.3.4 指示灯控制模块的设计
指示灯控制页面有打开指示灯和关闭指示灯两个选项。用户选择后并点击发送控制命令,则提交给cmdmanageServelet进行处理,发送失败则显示提示页面。
在指示灯控制模块中有三个类分别调用完成指示灯控制功能,分别是cmdDao(数据库业务类)、cmdmanageServelet(指示灯控制处理类)、cmdBean(实体类),详细说明见表4-13。
表4-13 指示灯控制模块相关类设计详细说明
类 名 | 方 法 | 成员变量 | 备 注 |
CmdmanageServlet | doPost()(从浏览器发送的post请求进行处理,判定指令的类型) doGet()(从浏览器发送的get请求进行处理,判定指令的类型) | cmdDao dao(数据库业务操作对象) cmdBean bean(实体) | 指令控制处理类 |
cmdDao | insert(cmdBean bean)(插入数据库) delete(从数据库删除) cmdBean getValue(从数据库取值) | SQLiteDatabase database(数据库对象) dbDao dao(数据库业务操作对象 | 数据库业务类 |
cmdBean | getTime()(返回时间) setTime(String time)(设置时间) getCmd()(返回命令) setCmd(String cmd)(设置命令) cmdBean(String time, String cmd)(得到时间和命令) init(ServletConfig config)(Servlet配置) | String time(时间) String cmd(控制命令) | 实体类 |
4.3.5 系统标定模块的设计
系统标定页面包括两部分的设定:温度系数A,B,C;湿度系数A,B,C。用户分别设定A,B,C的值之后调用到bdServlet(标定管理类)进行操作:若原A,B,C为空,则将其添加到数据库;反之则替换到数据库。
在系统标定模块中有两个类分别调用完成系统标定功能分别是dbDao(数据库业务类)、bdcmdmanageServelet(系统标定类),详细说明见表4-14。
表4-14 系统标定模块相关类设计详细说明
类 名 | 方 法 | 成员变量 | 备 注 |
bdServlet | doPost()(从浏览器发送的post请求进行处理,进行数据库相关操作) doGet()(从浏览器发送的get请求进行处理,进行数据库相关操作) | SQLiteDatabase database(数据库对象) bdBean bean(数据库业务操作对象) | 系统标定类 |
bdDao | save(bdBean bean)(温度系数和湿度系数写入数据库) | SQLiteDatabase db(数据库对象) dbDao dao(数据库业务操作对象 | 数据库业务类 |
bdBean | gett_a() gett_b() gett_c() (返回温度系数A,B,C) geth_a() geth_b() geth_c() (返回湿度系数A,B,C) sett_a() sett_b() sett_c() (设置温度系数A,B,C) seth_a() seth_b() seth_c() (设置湿度系数A,B,C) | double t_a(温度系数A) double t_b(温度系数B) double t_c(温度系数C) double h_a(湿度系数A) double h_b(湿度系数B) double h_c(湿度系数C) | 实体类 |
4.3.6 蓝牙管理模块的设计
蓝牙管理页面有输入蓝牙设备名和蓝牙MAC地址的输入框,当用户输入相应的蓝牙设备名及MAC地址,点击提交,系统将调用addblueServlet(添加蓝牙类)来完成相应操作。
在蓝牙管理模块中有三个类分别调用完成蓝牙管理模块功能,分别是bluetoothDao(数据库业务类)、addbluetoothcmdServelet(添加蓝牙类)、bluetoothBean(实体类),详细说明见表4-15。
表4-15 监控网站蓝牙管理模块相关类设计详细说明
类 名 | 方 法 | 成员变量 | 备 注 |
addbluetoothServlet | doPost()(从浏览器发送的post请求进行处理,判定指令的类型) doGet()(从浏览器发送的get请求进行处理,判定指令的类型) | bluetoothDao dao(数据库业务操作对象) bluetoothBean bean(数据库业务操作对象) | 添加蓝牙类 |
bluetoothDao | getById(String blue_mac)(对数据库进行判定) save(bluetoohBean bean)(将蓝牙设备名和MAC地址写入数据库) | SQLiteDatabase database (数据库对象) dbDao dao(数据库业务操作对象 | 数据库业务类 |
bluetoothBean | getBule_name()(返回蓝牙设备名) setBule_name(String bule_name)(设置蓝牙设备名) getBlue_mac()(返回蓝牙MAC地址) setBlue_mac(String blue_mac)(设置蓝牙MAC地址) bluetoohBean(String bule_name, String blue_mac)(得到蓝牙设备名和MAC地址) | String blue_name(蓝牙设备名) String blue_mac(蓝牙MAC地址) | 实体类 |
5. 系统的数据库设计
5.1 数据库详细设计说明
本系统所有的数据都用数据库(Blutetooh)来存储,其实利用五个数据表来存储不同时期的数据,分别是小时数据表(hour)、日数据表(day)、月数据表(month)、年数据表(year)、用户登陆表(login)、系统标定表(bd)、开关灯指令表(cmd)以及wifi连接数据表(wifi)。表5-1、5-2、5-3、5-4、5-5、5-6、5-7、5-8是对数据表的具体说明。
表5-1 小时数据表(hour)
字段 | 类型 | 是否为空 | 主键 | 备注 |
min | Varchar(20) | 否 | 是 | 当前时间 |
temperature | Varchar(20) | 是 | 否 | 实时温度 |
humidity | Varchar(20) | 是 | 否 | 实时湿度 |
表5-2 日数据表(day)
字段 | 类型 | 是否为空 | 主键 | 备注 |
hour | Varchar(20) | 否 | 是 | 当前时间 |
temperature | Varchar(20) | 是 | 否 | 小时平均温度 |
humidity | Varchar(20) | 是 | 否 | 小时平均湿度 |
表5-3 月数据表(month)
字段 | 类型 | 是否为空 | 主键 | 备注 |
day | Varchar(20) | 否 | 是 | 当前时间 |
temperature | Varchar(20) | 是 | 否 | 日平均温度 |
humidity | Varchar(20) | 是 | 否 | 日平均湿度 |
表5-4 年数据表(year)
字段 | 类型 | 是否为空 | 主键 | 备注 |
month | Varchar(20) | 否 | 是 | 当前时间 |
temperature | Varchar(20) | 是 | 否 | 月平均温度 |
humidity | Varchar(20) | 是 | 否 | 月平均湿度 |
表5-5 用户登陆表(login)
字段 | 类型 | 是否为空 | 主键 | 备注 |
username | Varchar(20) | 否 | 是 | 用户名 |
password | Varchar(20) | 否 | 否 | 登录密码 |
表5-6 系统标定表(bd)
字段 | 类型 | 是否为空 | 主键 | 备注 |
t_a | Varchar(20) | 否 | 否 | 温度标定系数a |
t_b | Varchar(20) | 否 | 否 | 温度标定系数b |
t_c | Varchar(20) | 否 | 否 | 温度标定系数c |
h_a | Varchar(20) | 否 | 否 | 湿度标定系数a |
h_b | Varchar(20) | 否 | 否 | 湿度标定系数b |
h_c | Varchar(20) | 否 | 否 | 湿度标定系数c |
表5-7 开关灯指令表(cmd)
字段 | 类型 | 是否为空 | 主键 | 备注 |
cmd_time | Varchar(23) | 否 | 是 | 指令发送时间 |
cmd_values | Varchar(2) | 否 | 否 | 指令的值 |
表5-8 wifi连接数据表(wifi)
字段 | 类型 | 是否为空 | 主键 | 备注 |
id | Varchar(20) | 否 | 是 | 编号 |
message | Varchar(50) | 否 | 否 | 信息 |
5.2 数据库E-R图设计
数据库E-R图如图5-1所示。
图5-1 数据库E-R图
5.3 数据库的实现
对于本系统所使用的数据库(Blutetooh)、小时数据表(hour)、日数据表(day)、月数据表(month)、年数据表(year)、用户登陆表(login)、系统标定表(bd)、开关灯指令表(cmd)以及wifi连接数据表(wifi)的创建用SQLiteExpertPro(IDE)工具来完成,数据库与数据表的创建如图5-2。
图5-2 数据库与数据表的创建
6. 用户使用手册
6.1 手机端监控系统的安装
用户可以在我们参赛作品可执行源码文件中找到i-jetty-xs.apk,然后安装到自己的安卓手机上。具体的安装过程在这里就不在细说了。图6-1为可安装的APK文件。
图6-1 监控系统APK安装包
6.2 手机端监控web网站系统的安装
用户得到Web项目压缩包jetty_bluetooth.war文件,将文件放入jetty/webapps即可。如图6-2所示。
图6-2安装路径和Web项目压缩包
6.3 监控服务器系统的功能详解
用户正确安装监控系统后,手机屏幕会显示相应的图标如图6-3,点击图标就可以进入监控系统主页面如图6-4,按下菜单键就可以进入监控系统的菜单页面如图6-4,操作选项包括系统配置、添加蓝牙设备、打开指示灯、关闭指示灯和查看日志信息。点击系统配置,就可以进入到监控系统服务控制页面如如图6-5。监控系统服务控制页面包括分钟定时服务、小时定时服务、一日定时服务、一月定时服务和断开蓝牙连接。在菜单页面点击添加蓝牙设备按钮则进入到监控系统蓝牙添加页面如图6-6所示。
图6-3 监控系统图标
图6-4 监控系统主页面和监控系统菜单页面
图6-5监控系统服务控制页面 图6-6 监控系统蓝牙添加页面
6.4 基于web浏览器监控系统的使用
1. 用户登录和注册
在浏览器网址栏输入安卓端IP地址加上8080端口号再加上Web项目名jetty_bluetooth进入智能农业监控系统网站首页。访问格式如下:安卓手机端IP地址:192.168.31.170加上8080端口号加上Web项目名jetty_bluetooth,如http://192.168.31.170:8080/jetty_bluetooth。智能农业监控系统网站首页面如图6-7。
图6-7 智能农业监控系统网站首页
在网站首页上点击登录按钮,进入登录页面如图6-8,在用户名和密码框中输入admin和admin后点击提交按钮,进入功能操作首页如图6-9。用户也可以点击注册按钮注册新用户,如图6-10。
图6-8 网站登录页面
图6-9 功能操作首页
6-10 用户注册页面
2. 用户管理
在功能操作页面点击菜单下的用户管理可以进入用户管理页面如图6-11,可以对已注册的的用户进行删除操作,也可以添加用户。
图6-11 用户管理页面
3. 系统标定
点击系统标定按钮就会进入系统标定管理页面如图6-12,在这个页面中有六个参数编辑框。当我们用Y=AX2+BX+C的数学模型算出温湿度标定参数A、B、C后点击保存按钮会保存在文件中。点击重置按钮就会制空,此时用户可以再次输入参数来完成保存操作。
图6-12 系统标定管理页面
- 视频管理
点击视频管理按钮进入视频管理页面如图6-13,可以点击查看视频查看监控视频。
6-13 视频管理页面
5. 蓝牙管理
点击蓝牙管理进入蓝牙管理页面如图6-14,在蓝牙设备名和蓝牙设备MAC地址框输入安卓手机端的蓝牙名和MAC地址,可以把输入的蓝牙名和MAC地址存入数据库。
6-14 蓝牙管理页面
6. 指令控制
点击指令控制按钮进入指令控制页面如图6-15,可以控制61单片机上LED指示灯的亮和灭。
6-15 指令控制页面
7. 数据管理
点击数据管理下的分钟管理进入分钟数据管理页面如图6-16,查看温湿度传感器采集到的该分钟内的实时温湿度数据。
6-16 分钟数据管理页面
在安卓手机端打开分钟定时服务,手机端软件对分钟数据进行平均处理存入小时数据中。点击小时管理进入小时数据管理页面如图6-17,可以查看该小时的实时温湿度数据。
6-17 小时数据管理页面
在安卓手机端打开小时定时服务、一日定时服务和一月定时服务,数据库可分别对小时数据、当天数据和本月数据进行平均处理,并存入相应的表中。用户可点击当天管理、本月管理和本年管理查看相应的温湿度数据。
参考文献
[1]侯媛彬,袁益民霍汉平.凌阳单片机原理及其毕业设计精选[M].北京:科学出版社,2006.
[2]薛钧义,张彦斌,等.凌阳十六位单片机原理及应用[M].北京:航空航天大学出版社,2003.
[3]沙占友,等.单片机外围电路设计[M].北京:电子工业出版社,2003.
[4]马建仓,罗亚军,赵玉亭.蓝牙核心技术及应用[M].北京:科学出版社,2003.
[5]金纯,许光辰,孙睿.蓝牙技术[M].北京:电子工业出版社,2001.
[6]David Kammer,Gordon McNut,Brian Senese.《蓝牙应用开发指南:近程互联
解决方案/(美)》[M]李静,奉继辉等译.科学出版社,2003.
[7]张禄林,雷春娟,朗晓虹.蓝牙协议及其实现[M]人民邮电出版社,2001.
[8]唐震洲,张朝阳.基于UART传输层的蓝牙主机控制接口的实现[J]。无线通信技术,2003.
[9]Android A Programmer’s Guide . Jerome (J.F.) DiMarzio DOI:10.1036、0071599886.
[10]林城.Android 2.3 应用开发实战[J].机械工业出版社,2011.
[11]韩超.Android经典应用程序开发[J].人力资源出版社,2011.
[12](美)Cay S. Horstmann,Gary Cornell.Java核心技术[J].机械工业出版社,2008.
[13]何玉洁.数据库原理与应用教程[M].机械工业出版社,2005.
基于Android平台的i-jetty网站智能农业监控系统