1、摘要采用物联网技术对农业生产环节中农作物的生长环境监控,实现一个轻量级别的辅助管理系统。基于传感网络采集的温度、湿度、光照等相关数据达到对当前实时环境的远程监控并做出实际的机械操作。整个系统是通过传感器将基本的监控数据利用 ZigBee 技术传送到局域网路由器,基于 C/S 模式,服务器对传感网络收集的数据进行容错筛选,再存储。管理者通过移动终端向服务器发出请求命令,服务器收到请求解析并做出相应的反应,从而达到对系统环境状况的实时监察调度。本文从当前物联网出发,结合农艺技术,提出了物联网农业系统结构的总体框架,为用户实时监控农田并进行生产决策提供了数据支持,真正实现了农业管理的智能化,符合现代
2、农业的发展。Using Internet technology to agricultural production in crop growth environment monitor引言:物联网是新一代信息技术的重要组成部分, 物联网就是 “物物相连的互联网” , 这有两层意思: 物联网的核心和基础仍然是互联网, 是在互联网基础上 的延伸和扩展的网络;其用户端延伸和扩展到了任何物体与物体之间,进行信息交换和通信。 因此物联网的定义是: 通过射频识别 (RFID) 、 各种传感器、 全球定位系统、 激光扫描器等信息传感设备, 按约定的协议, 把任何物体与互联网相连接, 进行信息交换和通信,以
3、实现对物体的智能化识别、定位、跟踪、监控和管理的一种网络。物联网技术是新生事物,是多学科技术的集成10。10 顿文涛, 赵玉成,朱伟,等.物联网在现代化农业中的应用 J.农 业网络信息,2013,(12):5-8随着嵌入式技术与无线传感技术的发展,物联网发展迅速。今天的物联网无论是从概念上还是实际的应用领域都远远超越了 1999 年 Ashton 教授和 2005 年 ITU 报告所指的范围。物联网不是中国首次提出的,却是在当前背景下发展最为全面的,而从实际的角度上讲,先驱意味着前行,意味着时间与金钱上无限的投入。2009 年美国的“圆桌会议”上,肯定了在基于物联网基础提出的“智慧地球”概念,
4、并在全球经济下行压力极大的情况下,将之协同新能源战略视为振兴经济的两大重点。今天,“智慧地球”战略更被美国人认为与之当年的“信息高速公路” 可比拟的战略产业!是美国 21 世纪把握全球科技动脉的钥匙。在后互联网时代 这是确立竞争优势的关键战略。该战略能否掀起如当年互联网革命一样的科技和经济浪潮,不仅为美国关注,更为世界所关注。http:/ 2003 年就在不断的加大农业生产上的补助与扶持,从国家政策层面上来讲,我国已经在农业发展上出台了多个国家级文件。但是我国的传统农业的发展也仅仅是缓慢的发展。物联网农业的成熟应用主要集中在农畜牧业发展比较强大的西方国家,这不是偶然却存在着必然!农业的发展是一
5、个积累的过程,对于中国这样一个传统的农业大国来说,农业发展是的不平衡性将是长期的。一时的大手笔绝对不是方法,一味的放置偏颇更是不可取,在技术与资金上的积极引导才是正道,国家层面的示范建设是标杆,企业及个人的投入是补充,主体与局部的结合才是物联网农业在中国当前的实际技术与地理环境上的真正选择!本文研究的是小型化的农业生产环节的环境监控的设计。主要就是建立一个核心在局域网的小型农田监控系统,主要是对中、近距离数据传输与监控。整个设计分为三个模块:服务器模块,数据采集模块,应用层模块。服务器端采用 Cortex-A9 芯片,数据采集模块采用的是芯片 Cortex-M0,应用层是移动终端通过访问本地路
6、由器建立与通信。在 M0 模块将实现光照监控,温度监控。还有简单的模拟开关灯,模拟开关风扇。在服务器 A9 端实现数据的处理存储,同时是通过有线与本地路由器进行连接,服务器 A9 与 M0 模块是通过 ZigBee 模块进行通信的。用户可以通过手机、平板等移动终端通过 WIFI 与路由器进行通信,从而访问服务器。针对现实学习需求与知识技能的储备,本文仅仅是有选择有裁剪的模拟实现了环境检测的简单框架。本文第一章简要介绍了智能家居实现监控的基本逻辑框架与思路,因为物联网农业监控与智能家居在起点与数据处理阶段同宗同源,同时详细说明本设计的框架。第二章对整个系统的模块细分并说明各自的功能与实现逻辑。第
7、三章为硬件设计部分。第四章为软件设计部分。第五章是单元测试以及系统集成测试。第六章指出该系统的特色与反思以及对物联网农业的展望。3 李合青 ,来智勇,张鑫. 基于 ZigBee 的温室智能灌溉执行子系统 的设计与实现J.农机化研究,2014,(1):95-107.第一章 基于物联网的农田环境监控系统的设计框架1.1 智能家居系统中的环境监控解决思路这里首先介绍下当前物联网框架下的智能家居系统的模式与基本实现解决思路。物联网农业是基于物联网发展而来的,是物联网应用向农业的触及,但是从当前的大环境上来讲,物联网在农畜牧业的发展也仅仅停留在大田示范园的阶段,而物联网在适宜人居环境的应用、推广与投入是
8、比较成功也是比较大的。这种现象其实很好找到原因,作为一个商业性的发展,利益驱动才是根本,很明显投资物联网农业在成本上与市场回报上周期都是很长的,而研发成本以及硬件成本是很高的,而做出的产品在市场的普及上又是未知的,利益小风险大,所以说这个领域的成熟的参考是较少的。但是智能家居与物联网农业在模块化的数据采集与数据的传输阶段又是相通的,我们基于“用已知去探求未知,化抽象为具体”的解决思想,从当前智能家居的模式与问题解决方案来找到灵感,打趣的说我们是站在巨人的肩膀上看待物联网农业前景的!在智能家居领域与以往的产品竞争不同,面对智能家居这片蓝海,更多的企业选择抢夺智能家居入口,通过借助智能家居控制平台
9、来打造自己的常青树。智能硬件企业:手机+ 智能单品模式。今天当我们谈及智能硬件企业,各大国产手机厂商当属其中的主要力量。小米发布了小米路由器和一系列的智能家居配件,中兴主打安全牌进军智能家居,华为也借助路由器探路智能家居。总的来说智能硬件企业纷纷采用了手机+智能小配件来搭建自己的智能家居平台。利用智能路由器等产品作为智能家居产品的网络入口和控制入口,并开放了相应的开放平台,对于手机制造厂家来说轻车熟路更易于成功,所要解决的问题主要是“点”的定位,而不完全受制于一个完整的平台约束,扩展性很强,在网络接入和产品控制上,变得更容易!互联网企业:用解决方案做顶级的智能家居。传统互联网大佬的触角有多长,
10、从BAT 一系列的收购行为以及对 P2P 与 O2O 平台的投入便可看出。对于智能家居,当然不肯错过。百度搭建硬件平台并推出了百度云服务和整套的免费解决方案,腾讯的智能家居入口则是以微信为突破口,阿里则借助电视盒子和云 OS 作为智能家居平台的入口,京东欲通过 APP 的概念,将京东平台上的合作伙伴“一网打尽” 。互联网公司优势是其巨大的流量、用户数据、软件等,结合当前的云存储与云计算,为智能家居的提供一个顶层设计。但是到目前为止也仅仅是百度做出了点成效。不得不承认互联网公司对大小家电产品理解不够深入,解决方案的涉及比较单一相较之小米这样强劲的产品研发势头,它们在短时间内难以覆盖到智能家居的各
11、个领域,由此可见当前市场上小产品激增主流价值产品缺席的趋势就不足为怪了!但是没有主流产品布局的智能家居入口显然是不完整的。传统家电企业:产业联盟式入口模式。最先察觉到智能家居趋势的恐怕还是传统的家电企业,物联网本身就是一个技术驱动的产业,凭借传统电商的营销老路子是走不通的,曾经大批家电企业在轰轰烈烈的进军 PC 产业的教训是痛在他们心里的,加之技术和策略的限制传统家电企业在智能家居上的作为显得十分有限。当物联网的浪潮全面袭来的时候,主流的家电公司纷纷选择用联盟来打造智能家居入口。比如海尔的 U-home 系统为平台,凭借 E 家佳联盟标准达到了多产品的兼容。传统家电企业对家用电子设备是真正理解
12、,凭借自己在行业内的威望,拉拢一批小型智能家居制造商,从而搭建统一的开放平台,提供相应的技术支持,智能家居的入口级战略也就水到渠成。1.2 基于物联网的农田环境监控系统这里我主要关注的是小米家的解决模式。手机+智能单品的模式下,小米绝对是独树一帜的前行者,小米的产品的营销模式虽广受诟病,但是小米产品还算是成功的。回看以智能手机为核心的等一批便携式的智能硬件的发展轨迹,4 年来,有的企业倒了,有的市场在不断萎缩。小米在壮大中,正如小米的技术总监孙鹏说的,智能家居的思路想法谁都有,能做出使用的产品在说!在小米的智能家居梦里,路由器是中心,智能插座是入口。各种米系列的产品通过无线或者有线链接到路由器
13、,米路由器从功能上来说,除了基本路由器常有的网关、Wi-Fi 热点功能之外,还支持小米设备快连、可扩展功能的插件模式、DLNA 方式共享文件、支持 LAMP 功能。我的设计就是基于本地路由访问方式实现数据收集与监控的!整个设计是模式探索型的设计,基于这种定位整个系统的模块是很简单的,在功能上也进行了相关的裁剪和功能的模拟转移。这种定位是对实际技术与成本进行相关考量后做出决定的。作为一个毕业设计受制于个人知识与眼界,我仅仅能做我能胜任的部分,同时当前可以学习参考的模型是有的,但都不是开源的资料,对于当前物联网来说一切都是在起步上下功夫,一切都是商业!虽然小米曾承诺将相关协议开放,就是 BAT 也
14、成说将平台开放,但是实际对于个体用户的测试学习还是很困难的。本设计主要分为三个模块,服务器模块,数据采集模块,移动控制端模块。服务器端选择的是三星以 ARM 的 cortex-A9 系列为核心开发的 Exynos 4412。这款芯片采用了三星最新的 32nm HKMG 工艺,主频最高为 1.4GHGz,是三星的第一款四核处理器。因为采用了新的工艺实现相同性能的同时功耗控制更加出色。此外,三星 Exynos 4412 支持双通道LPDDR2 1066 内存,这款芯片在同期同层次的芯片中算是最优的,特别在很多媒体的测试中,搭载了这款芯片的移动设备的跑分都是很高的。数据采集模块采用的以 Cortex
15、-M0 为核心板的 LPC11C14 芯片。数据传输模块用的是 ZigBee 技术。LPC11C14 集成了温湿度度传感器,光照传感器,可调速小风扇等小模块,通过这些模块 对周围环境的温湿度,光照强度数据进行收集,然后通过组合的 ZigBee 模块将数据传输到 Exynos 4412 服务器端,服务器端对数据容错,存储。服务器一端通过 ZigBee 与LPC11C14 模块通信,另一端通过有线与本地路由器进行链接通信。当用户通过设置固定 IP访问本地路由器的移动端向服务器发出服务请求,服务器端对相关请求进行解析,做出开关灯、风扇的逻辑操作。约定:以下 Cortex-A9 表示服务器,简称 A9
16、;以下 Cortex-M0 表示数据采集模块,简称 M0;以下 APP 表示智能家居 Android 客户端应用程序。第二章 硬件环境的搭建2.1 硬件环境组成框图本设计主要分为三个大模块,服务器模块,数据采集模块,移动控制端模块,服务器模块与数据采集都集成了数据传输模块。服务器端选择的是三星公司开发的 Exynos 4412。这是一款性价比很高的一个嵌入式开发芯片。数据采集模块采用的 LPC11C14 芯片。数据传输模块用的是 ZigBee 技术。LPC11C14 集成了温湿度度传感器,光照传感器,可调速小风扇等小模块,这些模块获得的数据通过组合的 ZigBee 模块传输到 Exynos 4
17、412 服务器端,服务器端对数据容错,存储。服务器一端通过 ZigBee 与 LPC11C14 模块通信,另一端通过有线与本地路由器进行链接通信。用户通过设置固定 IP 访问本地路由器,服务器端对相关请求进行解析,做出及时响应。整体系统组成框图如图 2-1:图 2-1 整体系统组成框图2.2 服务器端环境搭建2.2.1 开发与调试工具包安装对于整个系统来讲环境的配置是至关重要的,整个系统将会把大把的时间花在硬件的调试,以期获得一个稳定的性能,(1 )安装 gcc 编译工具:yagarto-bu-2.21_gcc-4.6.2-c-c+_nl-1.19.0_gdb-7.3.1_eabi_20111
18、119.exe。(2 )安装 tools 工具:yagarto-tools-20100703-setup.exe 。(3 )安装 FS-JTAG 工具:(4 )安装 JTAG 驱动:把 JTAG 接入计算机 USB 口,会提示发现新硬件,选择从列表或指定位置安装。 (这个过程需要安装 3 次)2.2.2 开发板开发与调试环境配置服务器 A9 中跑的不是裸机是一个裁剪了小型化的 Linux 内核,下边就是往开发板上配置相关环境。我们板子上跑的是 Linux 系统所以我们开发调试阶段也要在这样一个环境中进行,所以开发的阶段必须在 Linux 虚拟机上通过调试工具建立一个相关联的环境。模拟一个同板子
19、环境相似的环境。在产品开发并测试完成后在将板子与虚拟机环境彻底分离。Exynos 4412 开发板如图:图 2-2 Exynos 4412整个 A9 模块开发的过程分为两个三个阶段:阶段一进行相关环境的配置,主要是对开发环境与开发板环境的配置;阶段二进行软件层次的设计,诸如服务器端的数据库的设计;阶段三将进行 A9 单个模块的调试以及整体组合后的调试,这个过程是最为关键的,关乎整个系统的稳定性能,同是也是复杂程度最高的模块。在阶段一,我们将开发环境与开发板环境分别称为 Host 端开发与 Target 端开发,在 Host 端开发我们要安装一系列的开发调试工具包,并且配置 Host 与 Tar
20、get 开发的服务器环境。在 Target 端我们主要是对目标机环境简单设置,同是进行相关功能的实验。当三个阶段做好之后将做好的 Boot Loader和 Kernel 还有 Roofs 烧写到开发板上,至此一个裁剪的嵌入式小型数据处理服务器做好了!嵌入式 Linux 开发模式如图 2-3:图 2-3 嵌入式 Linux 开发模式开发板调试模式如图 2-4:图 2-4 开发板调试模式这里将 X86 机器作为开发服务器机器,开发板作为目标机或者调试机。tftp 服务器配置:TFTP(Trivial File Transfer Protocol,简单文件传输协议)是 TCP/IP 协议族中的一个用
21、来在客户机与服务器之间进行简单文件传输的协议,提供开销不大且不复杂的文件传输服务。端口号为 69。TFTP 是一个传输文件的简单协议,它基于 UDP 协议而实现。在调试开发阶段我们使用 tftp 服务器目的就是可以将我们在 Host 机中编译开发好的内核高速的下载到 Target 中。对于产品的快速开发调试是至关重要的。Tftp 服务器的具体配置如图 2-5:图 2-5 tftp 服务器配置Nfs 服务器配置:nfs 是 Network File System 的缩写,即网络文件系统。一种使用于分散式文件系统的协定,它的最大的功能就是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,
22、它的基本原则是“容许不同的客户端及服务端通过一组 RPC 分享相同的文件系统” ,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。也正是 nfs 简单实现但功能相对健壮的特点。利用这个工具可以直接利用服务器上面的文件,而不用先下载到本地,给调试程序和文件系统带来极大的便利。具体搭建过程详见图 2-6:图 2-6 nfs 服务器配置整个过程必须保证完整且正确,在实际的配置的过程会出现很多调试配置上的问题,一定要克服解决!做好 A9 开发和调试后环境后就是具体的内核移植的过程了。内核移植主要工作就是 U-Image 的制作,这个制作过程在第三章讲解,下边大体介绍整个开发板的启动
23、流程如图 2-7:图 2-7 开发板的启动流程2.3 数据采集端环境配置2.3.1 硬件资源概览数据采集模块采用的是基于 LPC11C14 微控制器 (ARM Cortex-M0 内核),集成多种传感器、RFID、ZigBee、OLED 显示模块等的一款芯片。配套有开放的 CoLink 仿真器,使用者可以在不另外配置 U-LINK2 仿真器的情况下进入开发。本设计中我选择了温湿度传感模块、光照传感模块、ZigBee 数据传输模块。LPC11C14 芯片整体框架如图 2-8:图 2-8 LPC11C14 芯片整体框架本套架构设计是用于 Exynos 4412 服务器端与 LPC11C14 之间的
24、程序设计的整体框架和数据的处理过程。Exynos 4412 通过发送操作请求数据包到 LPC11C14 来完成相应的用户希望得到的操作与数据,同时 LPC11C14 给 Exynos 4412 回复相应的确认包,表示 LPC11C14已经完成了这项操作。这样就可以完成一次交互。LPC11C14 的实物展示如图 2-9:图 2-9 LPC11C14 芯片实物展示2.3.2 模块芯片的选择温湿度传感器 DHT11 的基本原理:DHT11 是一款有校准数字信号输出的温湿度传感器。精度湿度+-5%RH ,温度+-2,量程湿度 20-90%RH,温度 050。它采用的是简化的单总线通信,系统中的数据交换
25、、控制均由单总线完成。DATA 用于微处理器与 DHT11 之间的通讯和同步,采用单总线数据格式,一次传送 40 位数据,高位先出。数据格式: 8bit 湿度整数数据 + 8bit 湿 度小数数据+8bit 温度整数数据 + 8bit 温度小数数据+8bit 校验位。原理图如图 2-10:图 2-10光照感应器 ISL29003 的基本原理:ISL29003 内部有两个光电管。光电管 1 对可见光和红外光都是敏感的,光电管 2 主要是对红外光敏感的。这两个的光谱反应是独立的。两个光电管将光信息转换为电流,然后通过二极管的电流输出会被一个 16 位的 A/D 转换为数字信号。原理图如图 2-11
26、:图 2-102.3.3 开发与调试工具包安装在这个阶段开发环境是 Keil Real View MDK,是 ARM 公司目前最新推出的对各种嵌入式处理器的软件开发工具。Real View MDK 集成了业内最领先的技术,包括 Vision4 集成开发环境与 Real View 编译器,支持 ARM7、ARM9 和最新的 Cortex-M0、Cortex-M1、Cortex-M3 和 Cortex-M4 核处理器,自动配置启动代码,集成 Flash 烧写模块,强大的 Simulation 设备模拟,性能分析等功能。产品有以下模块组成: Vision4 IDE;启动代码生成向导;设备模拟器 性能
27、分析器;Real View 编译器;MircoLib; RL-ARM(可选) ;U-LINK2 仿真器以及其他仿真器。在 LPC11C14 开发过程我们同样需要调试工具,这里我们选用的是 CoLink 仿真器,该仿真器上有 Colink 固件,此固件在有新版本时可以升级。升级前先把 CoLink 板上的波动开关 SW1 拨到 ISP-On 一端(开启在线编程功能) ,然后把 CoLink 板通过 USB 线与电脑连接。连接后电脑上会显示有一个新的 U 盘,U 盘名为 CRP DISABLD,如果未出现新 U 盘,可以把 CoLink 板上的 Reset 按住一小段时间,然后松开。尝试按键一次不
28、行,可以间隔一段时间后第二次按 Reset 键。CoLink 上的文件是 firmware.bin,就是仿真器的驱动固件。把此文件删除,然后再拷入 ColinkEx_firmware_Vx.x.bin,就完成了对 CoLink 固件的升级。CoLink 仿真器本身安装的固件版本是 V0.3,不必把此版本及以下版本固件重新安装。升级后把 USB 线拔掉,并将 CoLink 板上 SW1 拨至 Off 端(关闭在线编程,进入仿真器状态) 。Colin 实物展示如图 2-12:图 2-12 Colin 实物展示Colin 的安装调试如图 2-13:图 2-13 Colin 的安装调试第三章 软件设计
29、整个系统的软件设计部分主要有四个部分:服务器端,数据采集端,数据传输模块,APP 模块,在服务器端主要的工作将集中在对 Linux 系统移植和数据传输阶段,前者是一些固化的操作,仅仅是在驱动的实现阶段有点难度,相较之后者要比较麻烦要不断的进行测试才可以稳定的数据传输通信。数据采集端主要实现的是数据通信与光照传感器与温湿度传感器的驱动,这个过程都算可以,还是传输数据的阶段最为反复。在移动 APP 设计,用的是 Android 进行开发的,主要解决的问题是数据的展示与请求命令的解析处理。在服务器端采用的是 Json 格式数据进行存储的。整个系统的软件框架如图 3-1:图 3-1 系统的软件框架3.
30、1 服务器端的软件设计3.1.1 Linux 内核移植内核移植是这个模块的核心工作,也同样是嵌入式产品的核心,我们是在一个固定的框架下做东西,是在开源代码的基础上裁剪出自己需要的模块,在根据自己实际的需求,去实现相应的模块的驱动,这个过程在这里不详细说明,这个过程的框架流程如图 3-2:图 3-2 Linux 内核移植3.1.2 SQLite 数据库SQLite,是一款关系型数据库管理系统,它的设计目标是嵌入式的,目前在嵌入式领域绝对是二选择。这个数据库占用资源非常的低,很符合嵌入式内存有限的基本现状。它能够支持 Windows/Linux/Unix 等等主流的操作系统,同时能够跟很多程序语言
31、相结合,这里使用 SQLite3 来对 M0 传输来的数据进行存储。3.1.3 Json 文件的格式实现这里数据通信中的数据格式都是采用的 Json,这是一种轻量级的数据交换格式,它采的是用完全独立于语言的文本格式,但同时又保留了类 C 的习惯。也正是这些特性使它成为比较理想的数据交换语言。易于人编写和阅读,同时也易于快速的解析和生成。3.1.4 服务器端的通信协议的设置服务器 A9 的通信主要是与客户端通信、M0 进行通信,双方之间通信通过 TCP 协议通信,在应用层指定自己的数据包格式,并且带有确认机制,这个模块讲解说明的是Android 的 APP 与服务器 A9 进行通信。这里根据实际
32、的功能需求进行了通信协议的设置如表 3-1,表 3-2:userName 用 户 名oldPassword 旧 密 码newPassword 新 密 码password 密 码phoneNumber 手 机 号userToken 用 户 身 份 识 别 码randomCode 验 证 码 ( 6 位 大 小 写 字 母 和数 字 组 成 )stateCode 状 态 值 ( int)temperature 温 度humidity 湿 度light 光 照deviceNumber 设 备 号deviceCode 设 备 操 作 码deviceState 设 备 状 态 码videoList 获
33、取 视 频 文 件 列 表JSON格 式 的 KEY值 如 下 :stateCode : 0 客 户 端 请 求 成 功stateCode : 1 客 户 端 请 求 失 败stateCode : 2 客 户 端 用 户 名 错 误stateCode : 3 客 户 端 密 码 错 误stateCode : 4 客 户 端 手 机 号 错 误stateCode : 5 客 户 端 验 证 码 错 误stateCode : 6 客 户 端 userToken 错 误stateCode : 7 客 户 端 userToken 过 期deviceState:0 设 备 处 于 打 开 状 态devi
34、ceState:1 设 备 处 于 关 闭 状 态deviceState:2 设 备 处 于 故 障 状 态deviceCode:0 请 求 打 开 设 备deviceCode:1 请 求 关 闭 设 备deciceCode:2 请 求 获 取 当 前 设 备 的 状 态服 务 器 返 回 给 客 户 端 的 状 态 码 :服 务 器 返 回 给 客 户 端 的 设 备 状 态 :客 户 端 请 求 设 备 操 作 码 :表 3-1报 文 类 型 功 能 号 数 据 长 度 数 据 内 容 数 据 包 格 式 如 下 :(3)数 据 长 度 :数 据 包 携 带 大 小 为 2byteJSON
35、格式 的 数 据( 4) 数 据 内 容 : JSON格 式 的 字 符 串 数 据 包0x090x0a0x0b0x0c请 求 获 取 温 度请 求 获 取 湿请 求 获 取 光 照 请 求 获 取 三 轴 数 据 打 开 关 闭 灯 打 开 关 闭 风 扇 打 开 关 闭 门 得 到 视 频 文 件 获 取 设 备 状 态0x040x050x060x070x08用 户 注 册 用 户 登 陆 忘 记 密 码 发 送 用 户 原 密 码 修 改 密 码 0x000x010x020x210x03用 户 操 作 表 示 谁 跟 谁 通 信 报 文 类 型 AndroidAPPA9A9Android
36、APP 0xaa 0xff(1)报 文 类 型 : 表 示 谁 跟 谁 通 信 ,大 小 为 1byte数 据 包 格 式 的 详 细 说 明(2)功 能 号 : 表 示 要 干 什 么 事 情 ,大 小 为 1byte 功 能 号 (大 小 为 1byte)表 3-23.2 数据采集端软件设计3.2.1 总体设计概述本套架构设计是用于的 Exynos 4412(Cortex-A9)与 LPC11C14(Cortex-M0)之间的程序设计的整体框架和数据的处理过程。这里采用的是“三次握手”的机制进行可靠传输的,首先 A9 通过发送操作请求数据包到 M0 完成相应的用户希望得到的操作,同时 M0
37、 给 A9回复相应的确认包,表示 M0 已经完成了这项操作,这样就可以完成一次交互。具体实现如图 3-3:图 3-3 M0 与 A9 通信的框架模型图一 :(1 )设计思路:A9 与 M0 之间是用 ZigBee 来进行数据的传输, ZigBee 有两个模块,一个是协调器,它与 A9 是通过串口相连接。另一个是终端,它与 M0 也是通过串口相连接。所以我们通过读和写串口的函数接口就可以得到我们想要的数据包。(2 )设计讲解:在图中分别有发出的数据包和获得数据包两种包,这里的包是由之前我们自己定义的通信协议来决定的。图中标为浅蓝色的字体,数据包是从 M0 发送到 A9。红色字体说明处理的是温湿度
38、的数据包,当 A9 请求 M0 发送温湿度或者是光照的时候,M0 采集到温湿度或光照的信息之后,通过写串口函数接口把数据写入 ZigBee 的写缓冲区中,终端 ZigBee 再通过从电磁波上分离出的数据包发送到协调器 ZigBee,此时的协调器将数据包搬移到串口的读缓冲区,A9 通过读串口的函数接口获取到希望得到的传感器数值。图二 (1 )设计思路:M0 中程序的执行逻辑,因为数据都是通过串口来发送和获取的,所以我们可以采用轮询的方式来查询终端 ZigBee 的读缓冲区是否有 A9 数据包请求。如果有,则解析这个数据包,从而做出客户想要得到的操作效果;如果没有,则需要温度的数据实时(1ms )
39、的写入终端 ZigBee 的写缓冲区中,目的是为了客户可以随时获取和感知家里的温度信息。(2 )设计讲解:在图中的第一个分支,当检测到终端 ZigBee 的读缓冲区中有数据,表 明客户希望操作家里的硬件设备(风扇、灯)或者是获取当前家里的温湿度、光照信息。在这时 M0 就要解析这些从 A9 发来的数据包,完成客户的操作后返回一个确认包,表明已经完成此项操作。当检测到终端 ZigBee 的读缓冲区中没有数据,表明客户没有操作请求,需要 M0 实时的将信息发送到终端 ZigBee 的写缓冲区,再通过 ZigBee 把数据包发送到A9,实时的对周围环境行监控。M0 模块对数据发送与请求命令的解析过程
40、如图 3-4:图 3-43.2.2 数据采集端 M0 与服务器端 A9 通信协议设置这里的协议是涉及的是 M0 与 A9 进行通信的,这些协议是根据实际的硬件需要建立的比较简单的一个协议。如图 表 3-4:报 文 类 型 功 能 号 设 备 编 号 数 据 内 容 报 文 类 型 源 端 ( 发 送 端 ) 目 标 端 ( 接 收 端 ) 0xdd Exynos4412( cortex-A9) LPC11C14( cortex-M0)功 能 号0x04 0x05 0x06 数 据 大 小温 度 ( 1byte) 湿 度 ( 1byte) 光 照 ( 2byte) 7byte 1byte 1by
41、te1byte 报 文 类 型 功 能 号 设 备 编 号 数 据 内 容 报 文 类 型 源 端 ( 发 送 端 ) 目 标 端 ( 接 收 端 ) 0xcc LPC11C14( cortex-M0) Exynos4412cortex-A9)功 能 号 ( 1byte) 0x000x010x020x030x040x050x06状 态 0x000x010x000x010x000x01 风 扇 打 开 风 扇 关 闭 (4)状 态 : 成 功 还 是 失 败 , 占 用 1 个 字 节 。 说 明门 打 开 门 关 闭 灯 打 开 灯 关 闭 LPC11C14 响 应 光 照 数 据 到 Exy
42、nos4412LPC11C14 响 应 三 轴 数 值 到 Exynos4412LPC11C14 响 应 灯 状 态 到 Exynos4412请 求 LPC11C14 响 应 风 扇 状 态 Exynos4412请 求 LPC11C14 响 应 门 的 状 态 Exynos4412(3)设 备 编 号 : 区 分 同 类 的 每 个 设 备 , 大 小 为 1byte。 如 LED1: 0x00;LED2: 0x012.应 答 数 据 包 格 式 如 下(1)报 文 类 型 : 确 认 包 ,报 文 类 型 固 定 为 0xcc,占 用 1 个 字 节 。(2)功 能 号 : 确 认 的 是
43、什 么 事 情 。 功 能 说 明LPC11C14 响 应 温 度 数 据 到 Exynos4412LPC11C14 响 应 湿 度 数 据 到 Exynos4412 FS4412 请 求 LPC11C14 控 制 门(3)设 备 编 号 : 区 分 同 类 的 每 个 设 备 , 大 小 为 1byte。 如 LED1: 0x00;LED2: 0x01(4)数 据 内 容 :门 禁 状 态 ( 1byte) : 0x00 表 示 打 开 0x01 表 示 关 闭 灯 光 状 态 ( 1byte) : 0x00 表 示 打 开 0x01 表 示 关 闭 风 扇 状 态 ( 1byte) : 0
44、x00 表 示 打 开 0x01 表 示 关 闭 (1)报 文 类 型 : 表 示 谁 跟 谁 通 信 , 大 小 为 1byte。 (2)功 能 号 : 表 示 要 干 什 么 事 情 , 大 小 为 1byte。 1.请 求 数 据 包 格 式 如 下功 能 说 明FS4412 请 求 LPC11C14 控 制 灯FS4412 请 求 LPC11C14 控 制 风 扇表 3-43.3 Android 客户端软件设计如图 3-5:所示,这个是整个客户端软件的功能展示与通信流程:图 3-5 Android 客户端软件模块设计图 3-6 是整个客户端执行流程:图 3-6 Android 客户端执
45、行流程第四章 系统实验与调试4.1 服务器 A9 模块的数据接/发调试的相关过程展示依据前面对服务器与客户端约定的协议进行通信测试:发 送 数 据 包 数 据 流 向 报 文 类 型 功 能 号 数 据 长 度 数 据 内 容 0xaa 0x00 APP 那 边 发 送 的JSON长 度 用 户 名 , 密 码 ,手机 号发 送 数 据 包 数 据 流 向 报 文 类 型 功 能 号 数 据 长 度 数 据 内 容 0xff 0x00 2byte 状 态 的 JSON格 式字 符 串数 据 内 容 : “stateCode” : 1 失 败注 册 APP向 服 务 器 A9发 送 注 册 数
46、据 包APP A9A9向 服 务 器 APP发 送 注 册 数 据 包A9 APP数 据 内 容 : “stateCode” : 0 成 功 表 4-1 注册数据包收发格式:图 4-1 服务器端注册测试:发 送 数 据 包 数 据 流 向 报 文 类 型 功 能 号 数 据 长 度 数 据 内 容 0xaa 0x01 2byte userToken( 唯 一标 识 符 号 )+状 态数 据 内 容 : “userToken”:“null”,“stateCode”: 2-用户 名 错 误数 据 内 容 : “userToken”:“null”,“stateCode”: 3-密码 错 误登 录 A
47、PP向 服 务 器 A9发 送 注 册 数 据 包APP A9注 意 :登 陆 成 功 后 , 服 务 器 端 需 要 给 客 户 端 返 回 一 个 ID(唯 一 身 份识 别 码 )。 客 户 端 去 解 析 。 userToken 为 JSON 格 式 的 字 符 串 。数 据 长 度 为 JSON 格 式 的 数 据 内 容 长 度 .数 据 内 容 : “userToken”:”Qrt3T4”,“stateCode”: 0-登 录 成 功 。表 4-2 登录时数据包格式图 4-2 服务器端登录时测试发 送 数 据 包 数 据 流 向 报 文 类 型 功 能 号 数 据 长 度 数 据 内 容 0xaa 0x02 APP那 边 发 送 的JSON长 度 用 户 名 , 手 机 号 码APP 给 服 务 端 发 送 用 户 名 和 手 机 号 , 服 务 端 会 通 过 用 户 名 和 手 机 号生 成 一 个 唯 一 验 证 码 并 将 其 与 此 用 户 名 对 应 起 来 。服 务 器 会 对