基于nRF905的低功耗温湿度无线测量系统
SHT11的应用电路如图5所示,VDD与GND间通过0.1μF的去耦电容相连,且其I2C接口的 SCK,DATA直接与ATmega16L的两线串行接口通过4.7 kΩ上拉电阻SCL与SDA相连,用于数据的传输交换。
2.5上位机接口电路
为了便于监控,引入上位机功能,并加入串口通信模块。3.3 V到RS 232电平(±12 V)的专用转换芯片MAX3232的外围电路如图6所示,其中五个电容均取0.1 μF的典型值。串口DB9只用三根线,5端公共端接系统的地,2,3端分别是接收和发送端。DB9接口通过交叉串口线连到PC机上,这样就可以完成硬件串行通信。
3系统软件设计
系统软件设计包括温湿度测量和无线收发两个部分。
3.1温湿度测量
对于温度和湿度,它们并非是急剧变化的物理量,温湿度的变化往往是缓慢进行的,因此针对这个特点对于温湿度的测量采集并非需要时时刻刻都在进行。而是每隔T时间(T根据实际需要而定,本系统选用1 s)采集一次,其余时间由于低功耗的要求使得MCU处于休眠状态。其程序流程如图7所示。其中Atmega16L进入休眠状态是通过对SE编程休眠使能,并且对SM 2.0编程后进入相应的省电模式状态,然后通过定时器的计时中断将Atmega16L唤醒,再进行测量以及数据传输。
3.2无线收发
对于无线发送而言,在测量发送数据以后,应考虑到数据传输的可靠性,因此加上校验功能,并且为防止偶然的发送失败带来的不良后果,采取定时等待,超时后重发,收到接收主机命令后才进入休眠的模式。具体流程图如图8所示。
对于接收端而言,所完成的任务是时刻检测无线接收模块,对于收到的数据进行校验,如果正确收到数据则无线发送相关指令告知接收端,使其能够尽快进入休眠省电模式,并且通过上位机显示温湿度;而接收到错误数据后不做任何处理,等待接收端再次发送数据。
相应的初始化程序如下:
unsigned char RFConf[11]=
{
Ox00, //配置命令//
0x6C, //CH_NO,配置频段在433.2 MHz
OxOC,//输出功率为10 dB,不重发,节电为正常模式
0x44, //地址宽度设置,为4 B
0x02,0x02, //接收发送有效数据长度为3 B
0xE0,0xE0,0xE0,0xE0, //接收地址
0x1E, //CRC充许,16位CRC校验,外部时钟信号使能,16 MHz晶振
};
for(unsigned char i="0";i<11;i++)
SPDR="RFConf"[i];
//SPDR是Atmegal-16L的SPI数据寄存器,相应配置见数据手册;
而实际操作过程中通过对nRF905发送与接收实现是通过以下命令实现:
写发射数据命令:20H;
读发射数据命令:21H;
写发射地址命令:22H;
读发射地址命令:23H;
读接收数据命令:24H。
4结语
该系统采用AVR系列低功耗单片机ATmega16L作为控制芯片,低功耗芯片NRF905作为无线收发模块,设计并实现了基于数字温湿度传感器SHT11的温湿度无线测量系统,这些低功耗产品使得该系统耗电量小,并且又特别适合将该系统小型化,智能化,仪表化。无线发射功能又代替了人工抄表的繁琐,使得本系统有着广泛的应用前景。
发布者:小宇
- 基于nRF905的无线加速度测量系统设计(09-12)
- 基于nRF905的无线温度采集系统设计与实现(01-21)
- 基于LabVIEW的热舒适测试系统(03-04)
- 全数字温湿度仪的设计与实现(01-22)
- 基于SHT11传感器的温湿度测量系统设计(07-08)
- 选购温湿度检测仪表应该考虑的几个问题(03-23)