|
1 引言 牧场是由土、草、畜、人等基础设施需要系统的社会、经济、生态复合系统,气候变化对其作用的方式是通过影响牧草生长,牲畜健康这些要素来体现。有研究表明,近40年来内蒙古气候变化显著,温度升高,气象干旱程度不断加剧,影响植被密度降低及草地生产能力。 针对我国草原牧区恶劣的自然条件,实现对大气温湿度、土壤温湿度、风速、风向、气压、光照、PM2.5九个气象要素进行全天候实时自动采集、处理,以便牧民科学放牧。 大型自动化气象站设备的价格普遍较高,不利普及和使用。针对牧场的开阔地域,采用便于传输电子气象站来满足获取气象数据的需求。文中提出了一种基于CC3200的小型电子气象站的设计方案,完成了系统的硬件设计和软件设计。满足采集要求的同时,对数据进行记录,传输提供解决途径,以便相关人员查阅、参考和分析。 2 系统设计方案中采用物联网技术实现总体设计,CC3200作为气象数据采集节点及客户端,本地Web服务器以LAMP (Linux+Apache+MySQL+PHP)为架构,实现搭建动态气象数据库及网站。 物联网技术的发展为牧场环境数据监测提供了感知、传输的技术手段,系统设计如图1所示。 系统功能要求:(1)实时采集牧场大气温湿度、土壤温湿度、大气压、风速、风向、光照强度、PM2.5等气象信息;(2)采集节点同时作为HTTP客户端,在无线AP下通过HTTP通道向局域网内本地Web服务器传递牧场气象数据,远距离可用无线中继实现路由信号放大;(3)服务器端以REST API接收气象数据并存入数据库,用户通过网页观察数据;(4)采用工业级WLAN,可实现将气象站采集节点放置于工作站几公里外实现与服务器的无线通信,并在间隔两小时间服务器上传一次数据。 3 客户端设计3.1 客户端硬件设计CC3200芯片由应用MCU子系统、Wi-Fi网络处理器子系统及电源管理子系统三大块组成,使得气象站的采集与传输能够使用单芯片来完成开发。应用MCU子系统可实现气象数据采集任务,Wi-Fi网络处理器可连接无线AP并实现无线数据传送。 3.1.1 采集硬件设计该芯片包含多种外设接口。硬件设计框图如图2所示。选择已校准数字信号的数字温湿度复合传感器DHT22作为大气温湿度和土壤温湿度采集设备,以单总线与主控制器通信。CC3200的GPIO口通过漏极开路与温湿度传感器通信,以允许设备在不发送数据时能够释放总线。YGC-FS风速传感器与YGC-FX风向传感器检测风速和风向,以ADC方式输出风速风向。选择压力传感器BMP180作为大气压采集设备,单片测光芯片BH1750FVI作为光照采集设备,均以I2C方式输出。灰尘传感器DSM501A作为PM2.5检测设备,以PWM方式输出。 3.1.2 无线MCU模块MCU模块按功能又可分为嵌入式网络协议部分和嵌入式Wi-Fi部分。无线MCU模块框图如图3所示。 嵌入式网络协议包括嵌入式TCP/IP及多个互联网协议,支持安全互联网连接,使其成为高度集成化、针对物联网应用的芯片。嵌入式Wi-Fi使能部分包含802.11b/g/n射频、基带和具有强大加密引擎的MAC,支持基站、访问点模式。本文方案中将CC3200器件默认为基站模式,通过连接无线AP,实现与Web服务器通信。 3.2 客户端软件设计客户端服务器风格在网络应用的架构风格中最为常见。方案中本地Web服务器组件提供了一组气象数据服务,并监听对这些服务的请求。CC3200客户端组件通过服务器端80端口将请求发送至服务器,希望执行一个服务。服务器可以拒绝这个请求,也可以执行这个请求并将响应发送回客户端。客户端总体流程图如图4所示。 客户端软件设计可参考TI提供的CC3200 SDK软件开发包,其中ADC、I2C等支持气象数据采集处理,HTTPclient库支持实现客户端与Web服务器通信。 方案中的无线AP自动给客户端及服务器分配IP地址。客户端程序中需配置目标无线AP的路由参数,并使CC3200的Wi-Fi网络处理器处于基站模式。ConnectToAP()函数可实现连接至无线AP。函数中首先判断设备是否处于基站模式,若不是用ConfigureSimpleLink-ToDefaultState()函数对其配置并重启连接任务。客户端通过ConnectToHTTPServer()函数自动连接服务器,调用已预先配置的服务器名称和80端口。配置服务器名称目的在于客户端对服务器的寻址,服务器端打开80口则是客户端与服务器端数据交互通道,无需通过防火墙。HTTP连接流程如图5所示。 HTTP请求是HTTP协议的核心部分,本方案可实现客户端的POST、DELETE、PUT、GET请求。通过客户端及服务器端程序实现HTTP请求如表1所示。 HTTP连接建立后,客户端调用已配置服务器端REST API URI网址,使用POST方法将气象数据发送到气象站Web服务器。HTTPClientRequest()函数发送HTTP请求,HTTPClientField()函数用于检测HTTP报头是否发送完成。若成功则继续执行HTTPClientRequestBody()函数,向服务器端发送JSON(Javascript Object Notation)格式的气象数据。数据传输完成后,readResponse()函数接收服务器发送来的响应状态码及响应主体,ParseJSONData()函数对响应JSON主体进行解析。客户端POST请求模式流程图如图6所示。 4 服务器及REST API设计服务器端采用Linux操作系统的Centos版本,并安装开源软件Apache、MySQL及PHP,并在此基础上采用ThinkPHP框架,实现REST API设计与动态网站搭建。收场气象站服务器端搭建如图7所示。 本文中的MySQL数据库存储有4GB数据,若工程需要,可采用大型数据库完成系统的搭建,并加强对数据库的优化。 REST (Representational State Transfer)是一种架构风格。相对基于RPC(Remote Procedure Call Protocol)风格的SOAP(Simple Object Access Protocol)协议的扩展性不足,复杂度高等弱点,它把服务器抽象为一组离散的资源,每个资源均对应唯一的URI,客户端使用HTTP协议标准的GET、PUT、POST、DELETE等方法对资源进行操作。REST架构更加适合Web应用,特点如下:(1)网络上的所有事物都被抽象为资源;(2)每个资源对应唯一的资源标识;(3)通过REST接口对资源进行操作;(4)对资源的各种操作不会改变资源标识;(5)所有的操作都是无状态的。 REST API应用程序设计的提出,改善了用户接口跨多个平台的可移植性,通过分离用户接口和数据存储,使得不同用户终端与单一服务器数据交互成为了可能。方案中,CC3200作为HTTP客户端,以气象站REST API实现与服务器端无线数据交互。 本方案气象站REST接口设计中,将有四个重点需要关注:(1)服务器端API路由实现;(2)JSON数据格式的良好支持;(3)HTTP请求与响应;(4)用户验证授权机制。 4.1 路由实现路径又称“终点”,表示API的具体网址。每个网址代表一种资源,所以网址中不能有访问,只能有名词,而且所用的名词往往与数据库的表格名对应(如表2)。本设计中,主要涉及客户端POST方式上传JSON数据。 ThinkPHP框架下,定义Info控制器下的inpost作为服务器接收客户端POST数据的路径。路由定义规则如下所示: return array(
'URL_ROUTE_RULES'=> array(
'api/1.0/weather'=>'Info/inpost')
) 4.2 JSON数据格式的良好支持如果API真正稳定,能够唤醒出请求的内容类型(例如:application/json或application/xml)。本方案中,应用的数据封装格式为JSON格式。服务器端,对参数做如下配置: return array(
'REST_DEFAULT_TYPE'=> 'json',
'REST_OUTPUT_TYPE'=> array(
'json'=> 'application/json',
),
) 通过该配置,服务器默认接收的请求数据类型和响应类型,均为JSON格式数据。气象站接口接收数据格式如下所示: ('DQtemp':8,'DQdamp':28%,"TRtemp":7,"TRdamp":22%,"Press":1034.4,"Light":34,"PM2.5",33,"FS":3.2,"FX":northwest') 4.3 HTTP请求与响应因方案需要,主要采用默认POST为请求方式,实现气象数据采集客户端服务器交互,服务器端参数设计如下: return array(
'REST_METHOD_LIST'=>'get.post.put.delete',
'REST_DEFAULT_METHOD'=>'post',
) 实现JSON数据解析后将数据存入数据库代码如下: $arr=json_decode($inpost,true);
M('weather')->data($arr)->add(); 实现接收并处理请求后,服务器端需向客户端发送响应部分。服务器端实际需要的是发送正确状态码200,以及JSON格式主体。服务器端响应函数如下: protected function response($data, $type=json', $code=200)
{
$this->sendHttpStatus($code);
exit($this->encodeData($data, strtolower($type)));
} 客户端可通过readResponse()函数接收响应状态码及响应主体,ParseJSONData()函数对响应JSON主体进行解析。 4.4 用户验证授权气象站客户端对气象站REST API访问的验证与授权采用IETF(The Internet Engineering Task Force)标准的OAuth2.0协议,它已经被海量、腾讯等大部分开放平台所采用。其验证授权权限可概括为:第三方客户端不保存用户的账号和密码,它将用户输入的账号密码提交开放平台进行认证;认证通过后服务器端客户端分配一个令牌,令牌包含了接口授权信息,气象站客户端使用这个令牌访问授权的接口,保证气象数据的准确性。 MySQL数据库中weather数据表单的存储天气数据格式如表3所示;监控中心可实现远程对气象数据实时监测,页面设计如图8所示。 图9所示为气象数据采集节点实物。 5 结束语介绍了基于CC3200芯片的牧场气象站数据采集与通信系统,通过对相关硬件实现方法加以分析以及实验测试,证实本设计能够达到预期的效果。本文设计的小型电子气象站不仅仅适用于牧场环境数据采集,根据不同的应用场合,只要对硬件和软件制作修改即可完成不同的采集监测任务。本文方案在数据采集系统领域具有一定的借鉴价值。 参考文献: [1]李琦,徐阳,梁丽.基于CC3200的气象数据采集与远程通信系统[J].计算机工程与应用,2017,53(13):235-239. 声明:本文所用图片、文字均为转载,如有涉及作品版权问题,请第一时间告知,我们将根据您提供的证明材料确认并立即删除内容。本文内容系作者个人观点,不代表物联网123观点或立场。
特别提醒:物联网专业交流群欢迎物联网行业相关的人群加入,同时群内欢迎各路社牛、大咖、前辈加入,群内除了不能发敏感内容、色情内容,以及不太建议多次发送推广内容,其他内容皆可畅聊~——交流QQ群724511126,进群的朋友请备注:姓名-单位-研究方向(无备注请恕不通过),由编辑审核后邀请入群!
|