APP下载

基于arduino和enc28j60的温湿度监控系统设计

2014-12-25范钦武

科技视界 2014年23期
关键词:服务器端温湿度数据包

范钦武

(中国民用航空汕头空中交通管理站 气象台,广东 汕头 515041)

0 概述

20 世纪以来我国民用航空事业飞速发展,空管的保障压力也与日俱增,越来越多的导航台站和雷达台站的投入使用。对于这类事关航空安全的重要外部台站,对这类精密设备的运行环境有着更加严格的要求,实时准确的监控机房温湿度,保证设备在一个稳定的空气环境中运行对提高设备的可靠运行和延长设备的工作寿命有着重要的意义。本文主要是介绍如何利用开源硬件arduino 和enc28j60 来快速搭建一个温湿度监控系统。

1 系统主要结构

系统主要分为硬件部分和软件部分。硬件部分主要有arduino 控制板,以太网模块enc28j60 和温湿度传感器sht15。通过arduino 控制板控制温湿度传感器实时测量周围环境的温湿度数据,通过以太网模块将采集到的温湿度分发到交换机中。软件上主要是采用C/S 模式的结构,各个传感器测量到的数据通过udp 传输到服务器端,在服务器端用html 和javascript 开发部署一个web 站点。值班人员过web 页面就能实时监控到各个外台站的机房环境。系统的整体框图如下所示。

图1

2 系统的硬件结构及工作原理

2.1 arduino 硬件结构及工作原理

本次系统中采用的arduino 控制板型号主要是arduino uno。UNO的处理器核心是ATmega328,包括了片上32KB Flash,其中0.5KB 用于Bootloader。同时还有2KB SRAM 和1KB EEPROM。同时具有14 路数字输入/输出口(其中6 路可作为PWM 输出),6 路模拟输入,一个16MHz 晶体振荡器,一个USB 口,一个电源插座,一个ICSP header 和一个复位按钮。同时还提供了一路串口信号RX(0号)、TX(1号):与内部ATmega8U2 USB-to-TTL 芯片相连,提供TTL 电压水平的串口接收信号。USB 口附近有一个可重置的保险丝,对电路起到保护作用。当电流超过500mA 是会断开USB 连接。UNO 已经发布到第三版,与前两版相比有以下新的特点:在AREF 处增加了两个管脚SDA 和SCL,支持I2C 接口;增加IOREF 和一个预留管脚,将来扩展板将能兼容5V 和3.3V 核心板。改进了复位电路设计。USB 接口芯片由ATmega16U2 替代了ATmega8U2。控制器上还可以通过片上的DC-DC产生一个3.3V 和5V 的电压。

2.2 enc28j60 硬件结构及工作原理

enc28j60 是带有行业标准串行外设接口SPI 的独立以太网控制器。它可作为任何配备有SPI 的控制器的以太网接口。

enc28j60 符合IEEE 802.3 的全部规范,采用了一系列包过滤机制以对传入数据包进行限制。它还提供了一个内部DMA 模块,以实现快速数据吞吐和硬件支持的IP 校验和计算。与主控制器的通信通过两个中断引脚和SPI 实现,数据传输速率高达10Mb/s。

enc28j60 由七个主要功能模块组成:

(1)SPI 接口—充当主控制器和enc28j60 之间通信通道。(2)控制寄存器—用于控制和监视enc28j60。

(3)双端口RAM 缓冲器—用于接收和发送数据包。

(4)判优器—当DMA、发送和接收模块发出请求时对RAM 缓冲器的访问进行控制。

(5)总线接口—对通过SPI 接收的数据和命令进行解析。

(6)MAC 模块——实现符合IEEE 802.3 标准的MAC 逻辑。

(7)PHY(物理层)模块——对双绞线上的模拟数据进行编码和译码。

在本系统设计中,主要是用SPI 接口和arduino 进行通信,其对应管脚如下所示

表1

要能正常的使用enc28j60 还需要库文件的支持,支持的第三方库有非常多,其中以GitHub 上的EtherCard 库和UIPEthernet 库最为广泛使用,但是笔者在使用EtherCard 库的时候,发现如果接入交换机或者路由器的话,服务器端就没有办法正确的接收到客户端发来的数据,所以本次系统设计中使用的是UIPEthernet 库。将下载好的库文件放入到对应的库文件夹中就可以正常的调用了。本次实例中我们主要调用到的是库里面的udp.beginPacket()和udp.write()函数。

udp.beginPacket()函数用以初始化服务器的ip 和udp 端口号。

success=udp.beginPacket(IPAddress(192,168,1,5),5000);

udp.write () 函数将传感器的数据通过udp 数据包发送到服务器端。

success=udp.write(senorsdata);

2.3 sht15 硬件结构及工作原理

sht15 属于Sensirion 温湿度传感器家族中的贴片封装系列。传感器将传感元件和信号处理电路集成在一块微型电路板上,输出完全标定的数字信号。传感器采用专利的CMOSens○R技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容性聚合体测湿敏感元件、一个用能隙材料制成的测温元件,并在同一芯片上,与14位的A/D 转换器以及串行接口电路实现无缝连接。因此,该产品具有品质卓越、响应迅速、抗干扰能力强、性价比高等优点。

各个引脚的定义如下图所示:

表2 SHT1x 引脚分配,NC 保持悬空

其中sht15 的供电电压范围为2.4V-5.5V,建议工作电压为3.3V。在电源引脚(VDD,GND)之间须加一个100nF 的电容,用以去耦滤波。串行时钟输入SCK 用于微处理器与SHT1x 之间的通讯同步。串行数据DATA 引脚为三态结构,用于读取传感器数据。当向传感器发送命令时,DATA 在SCK 上升沿有效且在SCK 高电平时必须保持稳定。DATA 在SCK 下降沿之后改变。为确保通讯安全,DATA 的有效时间在SCK 上升沿之前和下降沿之后应该分别延长至TSU and THO。当从传感器读取数据时,DATA TV 在SCK 变低以后有效,且维持到下一个SCK 的下降沿。为避免信号冲突,微处理器应驱动DATA 在低电平。需要一个外部的上拉电阻(例如:10kΩ)将信号提拉至高电平。

典型的应用电路如下图所示:

图2

要使用sht15 同样也是需要库文件的支持,在GitHub 上下载好SHT1x 库文件并放入库文件夹就可以调用库文件夹里已经写好的函数。本实例中主要用到的是sht1x.readTemperatureC () 和sht1x.readHumidity()。具体的例子如下所示:

2.4 系统的硬件结构图

系统整体的硬件结构图如下所示:

图3

3 系统服务器端的部署和应用

3.1 udp 监听和数据存储

各个外台站的传感器数据通过udp 的方式传输到服务器端,在服务器端,用Python 脚本编写了2 个小模块,一个是udpmonitor 模块,用来监听udp 数据包,另外一个是datacsv 模块,用于将监听到的传感器数据存入到服务器上的csv 文件中。

3.2 webserver 站点部署和应用

在服务器端可以使用IIS 或者Apache 部署web 服务器,为了能够让数据更加直观的以图表的形式显示出来,在监控页面里调用了一个叫做Highcharts 的图表库,纯javascript 编写的。为了能够引用highcharts 文件,需要将下载好的文件放入本地的js 目录中,同时还需要有jQuery 的支持,所以还要引入jQuery 文件。将下载好的文件放入js 目录中后,在自己编写的监控主页里添加如下的代码:

打开浏览器输入主页的地址后显示以下的界面(图表中的数据为测试数据)

图4

4 总结

Arduino 素来有电子积木的美称,通过这个温湿度监控系统的设计过程,我们也不难发现,只要通过引用正确的库文件和对库文件接口的简单认知,就能够将各个硬件简单快速搭建运行起来。而且正是由于开源硬件的发展,本次设计方案里所花费的总的成本不超过过60 元,如果选用arduino mini 板的话,成本可以更低至30 元左右。当然,无论采用什么方案都好,都是为了更加准确和实时的监控各种导航设备的运行环境,为保障设备稳定运行,保障航空安全提供更有力的支持。

猜你喜欢

服务器端温湿度数据包
温湿度控制器在回收砂冷却系统中的应用
Linux环境下基于Socket的数据传输软件设计
基于DSP的多路温湿度监测系统
SmartSniff
基于温湿度控制的天气预测装置
浅析异步通信层的架构在ASP.NET 程序中的应用
基于Qt的安全即时通讯软件服务器端设计
蒸发冷却温湿度独立控制空调系统的应用
视觉注意的数据包优先级排序策略研究
网页防篡改中分布式文件同步复制系统