基于WiFi无线通信的温湿度检测节点设计
摘要:基于AM2303温湿度传感器、STC15F104W单片机和WiFi模块设计了一种无线温湿度检测节点。介绍了AM2303及其通信协议、WiFi模块及其组网特性等,并且给出了读取AM2303数据的软件流程。经测试,该节点通信距离远,组网灵活,可很好地应用于粮库粮情检测等实际工作环境。
本文引用地址:http://www.amcfsurvey.com/article/201610/309033.htm引言
随着无线通信、嵌入式系统以及网络等技术的快速发展,无线传感器网络在军事和环境监测等领域得到了广泛的应用。它由部署在检测区域内的大量廉价的微型传感器网络节点组成,通过无线通信方式形成一个多跳的自组织网络系统,用以协作地感知、采集和处理网络覆盖区域中被感知对象的信息,并发送给观察者。
这是一种全新的信息获取技术,在无线传感器网络中常用的无线通信技术包括蓝牙、WiFi、ZigBee等。其中,蓝牙技术协议复杂、开发成本高;ZigBee通信距离较短。而WiFi技术具有传输速率高、覆盖范围广、组网成本低、与Internet网络无缝连接等优点,在通信距离等方面与其他无线通信技术相比具有显著的优势,这使得该技术在温湿度检测领域应用中具有明显优势。
本文结合无线传感器网络的设计思想,设计了一种基于WiFi技术的温湿度实时检测终端节点。
1 节点硬件设计
节点硬件电路如图1所示。硬件结构由数字温湿度传感器、WiFi通信模块和单片机三个模块组成。
1.1 AM2303温湿度传感器
本设计采用的数字温湿度传感器为广州奥松电子有限公司生产的AM2303温湿度传感器。它是一款新型单总线传感器,其内部包括一个电容式感湿元件和一个高精度测温元件。温度测量范围为-40~+80℃,精度为±0.3℃;湿度测量范围为0~99.9%RH,精度为±2%RH(25℃)。
相比市场上常见的SHT1x系列温湿度传感器,AM2303具有价格低、算法简单等优点,并且具有低功耗、自动化校准、传输距离远等特点。
1.1.1 引脚说明
AM2303引出3个引脚。其中,VDD、GND为电源引脚,供电3.5~5.5 V;SDA为数据线,用于与单片机STC15F104W进行通信。SDA引脚为三态结构,用于读、写传感器数据。
1.1.2 通信协议
AM2303具体通信时序图如图2所示。采用简化的单总线通信,节点对AM2303的控制和数据交换均由数据线完成。数据线一次传送40位温湿度数据,高位先出。
单片机向AM2303发送一次起始信号(图中粗线所示区域)后,AM2303从休眠模式转换到高速模式并发送响应信号,从数据线SDA串行送出检测到的温湿度数据,发送数据结束触发一次信息采集,采集结束传感器自动转入休眠模式,直到下一次通信来临。具体通信协议描述如下:
①单片机向AM2303发送起始信号,将数据线SDA拉低一段时间(至少800μs),然后释放数据线,侦听AM2303送出的响应信号。
②AM2303发出响应信号,将数据线SDA拉低80μs,再拉高80μs作为响应信号响应单片机。
③AM2303通过数据线SDA串行输出40位数据,高位先出,发送的数据依次为湿度高8位、湿度低8位、温度高8位、温度低8位和8位校验位。AM2303传出的湿度和温度值是实际湿度和温度值的10倍,温度最高位(位15)为符号位,置“1”表示负温度,置“0”表示正温度;温度低15位(位14~位0)表示温度值。校验位为湿度高位、湿度低位、温度高位和温度低位之和。
④AM2303的数据线SDA输出40位数据后,继续输出50μs低电平,然后转为输入状态。由于上拉电阻作用,数据线变为高电子。AM2303内部再次测量温湿度数据,并记录数据,等待单片机再次发送起始信号。
1.1.3 位数据格式
位数据“0”、位数据“1”格式信号如图3所示。AM2303发送完响应信号之后,由数据线SDA连续串行输出40位数据。位数据“0”的格式为50μs的低电平加26~28μs的高电平。位数据“1”的格式为50 μs的低电平加70us的高电平。
1.2 WiFi通信模块
本设计采用的WiFi通信模块为有人科技有限公司生产的超低功耗嵌入式WiFi模组(USR-WiFi232-G)。该模块提供了一种将用户的物理设备连接到WiFi无线网络上,并提供UART串口等接口传输数据的解决方案,提供了一体化的801.11/b/g/n WiFi的低功耗解决方案。USR-WiFi232-G是一款集成了所有WiFi功能的模块,采用表贴封装,配备有内置PCB天线、外置天线连接器。采用FCC/CE标准认证,频率范围为2.412~2.484 GHz,工作电压范围为3.6~3.1 V,在-40~85℃环境内可正常工作,使用内置天线时信号传输距离可达到150m,使用外置天线时则可达400 m。
1.2.1 WiFi无线组网
USR-WiFi232-G支持无线组网功能,既可以作为无线接入点(AP)实现无线网络的中心节点功能,也可以作为无线站点(STA)实现无线网络终端功能。
利用USR-WiFi232-G组网有基于AP的组网和基于AP+STA共存的组网两种方式。基于AP的无线组网是一种基本的组网方式,由一个AP和多个STA组成,AP处于中心地位,多个STA之间通过AP转发完成相互通信。USR-WiFi232-G支持基于AP+STA共存的组网方式,即模块可同时支持一个AP接口和一个STA接口,如图4所示。模块的STA接口可以与路由器相连,并通过TCP连接与网络中的服务器相连,由此可通过互联网实现远程通信。同时模块上的AP接口也是可用的,智能手机或PAD等可直接连接到AP接口上,控制串口设备或模块与设备进行通信。这种无线组网模式为用户的使用提供了更大的灵活性。
1.2.2 WiFi透明传输模式
USR-WiFi232-G支持串口透明传输模式,可以实现串口即插即用,从而最大程度降低用户使用的复杂度。首次使用时需要对模块进行配置,作为无线传感器网络节点使用时,需要通过PC的无线网卡连接USR-WiFi232-G,默认网络名称(SSID)为HF-A11X_AP。加入网络后,在IE浏览器地址栏输入http://10.10.100.254,在无线终端设置选项中,键入模块要连接的无线接入点的SSID和密码,并选择自动获取IP地址。
然后在模式选择选项中设置USR-WiFi232-G模块工作模式为AP+STA模式,保存后重新启动模块。打开智能手机或者PC的上位机终端,选择客户机(TCP client)模式,服务器IP地址输入自动分配给USR-WiFi232-G的地址,服务器端口号为8899,此为模块默认监听的TCP端口号,点击连接建立TCP连接,即可进行远程数据收发。
1.3 STC15F104W单片机
本设计采用宏晶科技有限公司生产的STC15F104W单片机。该单片机工作电压为3.8~5.5 V,采用增强型8051CPU内核,指令代码完全兼容传统51单片机,速度更快。片内128字节RAM,1K EEPROM,4 KB Flash程序存储器;内部高可靠复位,可彻底省掉外部复位电路;具有高精度R/C时钟,内部时钟为5~35 MHz可选。采用8引脚封装,有2个普通16位重装载定时器/计数器,共有6个通用I/O端口,可利用I/O口结合定时器实现串口功能(通常使用P3.0和P3.1端口)。该单片机价格便宜,单个售价少于2.0元,设计采用该系列单片机,完全可以满足进行温湿度检测的要求。
2 节点软件设计
2.1 读取1位数据
单片机读取一位数据流程如图5所示。由于每位数据都有约50μs的低电平时隙和其后的高电平时隙两部分,单片机将根据高电平时隙的长度确定当前位数据的取值。读取数据时,单片机持续检测数据线SDA状态,当SDA变力高电平时,利用软件延时约30 μs,然后再次检测SDA电平状态。若此耐SDA处于高电平状态,则表示当前位数据为“1”,存储当前位数据,等待SDA重新变为低电子状态时,开始读取下一位数据;若SDA处于低电子状态,则表示当前位数据为“0”,存储数据后开始读取下一位数据。
2.2 读取AM2303数据
单片机读取AM2303数据采用KEIL C51实现,流程如图6所示。AM2303上电后需等待2 s以越过不稳定状态,期间单片机不能向其发送指令。读取AM2303数据时,单片机通过I/O口向AM2303数据线SDA发送起始信号,待接收到响应信号后,依次从数据线SDA串行读取湿度高8位、湿度低8位、温度高8位、温度低8位以及8位校验位。
单片机通过判断湿度高、低8位与温度高、低8位之和是否等于校验位,来确定所接收的温湿度数据是否准确,校验正确则将温湿度数据通过串口送至WiFi模块;否则重新获取温湿度数据。由于AM2303硬件原因,读取间隔小于2 s可能导致读取温湿度数据不准确或通信不成功等情况,所以单片机连续两次读取温湿度数据时间至少间隔2 s。
结语
本文介绍的温湿度检测节点作为无线温湿度传感器网络节点可以实现灵活组网,并可针对现场温湿度信息进行实技嗖狻Mü打开路由器网络设置中的动态DHCP客户端列表,获取路由器分配给节点的IP地址。使用智能手机客户端连接节点IP,选择TCP Client模式,默认端口号8899,连接后即可接收节点数据。经测试,在无障碍物的室外环境,节点可接入约300m范围内的路由器,并可稳定地通过路由器上传温湿度数据,数据传输错误出错率很低。测试效果如图7所示。
测试表明节点用于采集环境温湿度数据,检测距离远并且运行稳定。该设计节点的通用性良好,组网方便,具有扩充能力与发展余地,并可接入互联网方便远程测控与资源共享,具有较强的实用性。
评论