物联网无线通信之 ZigBee TI CC2530串口通信调试
[本文属原创,转载请附上原文出处链接。]
刚接触ZigBee无线通信技术,熟悉一下ZStack协议栈。先从调试串口开始,再慢慢开始协议栈代码调试。串口模式是全双工的异步串行通信,串口的通信就是对串口相关寄存器的操作,比如控制和状态寄存器、通用控制寄存器、数据缓冲寄存器及波特率控制寄存器等。下面程序已实现TI CC2530单片机的发送和接收数据,用的是CC Debugge仿真器和ZigBee最小系统,使用串口还得接个USB转串口设备,我用的是USB转TTL串口,下面来进行实现代码讲解:
头文件和系统变量声明部分:
#include <ioCC2530.h>
#include <string.h>
char Temp;
uchar data = 0;
#define maxfile 100
char readdata[maxfile];
static char datatext[]="串口调试\n";
主函数部分:
void main(void)
{
CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ晶振
while(CLKCONSTA & 0x40); //等待晶振稳定为32M
CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHZ
InitUART(); //串口初始化
Uart_SendString(datatext,strlen(datatext));
while(1)
{
if( Temp != 0)
{
if((Temp!=' ')&&(data<maxfile))
readdata[data++] = Temp;
else
{
U0CSR &= ~0x40; //禁止接收
Uart_SendString(readdata,data); //发送已记录的字符串。
U0CSR |= 0x40; //允许接收
data = 0;
}
Temp = 0;
}
}
}
普通延时函数:
void delay(unsigned int i)
{
unsigned int j;
for(i=i;i>0;i--)
for(j=0;j<0x3000;j++);
}
串口初始化函数:
void InitUART(void)
{
PERCFG = 0x00; //位置1 P0口
P0SEL = 0x0c; //P0_2,P0_3用作串口(外部设备功能)
P2DIR &= ~0XC0; //P0优先作为UART0
U0CSR |= 0x80; //设置为UART方式
U0GCR |= 8;
U0BAUD |= 59; //波特率设为9600
UTX0IF = 0; //UART0 TX中断标志初始置位0
U0CSR |= 0X40; //允许接收
IEN0 |= 0x84; // 开总中断,接收中断
}
上面串口初始化程序串口的波特率设置为9600,在32MHz系统时钟下常用的波特率设置参考如下图:
数据发送函数:
void Uart_SendString(char *Data,int length)
{
int j;
for(j=0;j<length;j++)
{
U0DBUF = *Data++;
while(UTX0IF == 0);
UTX0IF = 0;
}
}
中断服务程序:
#if 1
#pragma vector = URX0_VECTOR
__interrupt void UART0_ISR(void)
{
URX0IF = 0; // 清中断标志
Temp = U0DBUF;
}
#endif
基于CC2530的无线土壤水分传感器节点设计
摘 要 : 土壤含水量的准确测定是实现节水灌溉和精准农业的基础。为实现土壤水分的自动测量和无线传输,基于FDR和CC2530芯片设计了无线土壤水分传感器节点。FDR实现了快速、精确的土壤含水量测量,CC2530完成模数转换、数字信号处理和射频信号的发送等工作。讨论了节点的低功耗问题,最后对节点进行了丢包率测试。试验结果表明:所设计开发的基于CC2530的传感器节点具有丢包率低、运行稳定可靠的特点,能够满足土壤水分的无线数据采集的要求。
0 引言
采用自动灌溉系统可以根据土壤的水分含量确定浇灌的时间和次数,有效地减少水资源的浪费,提高作物产量。能否实现对土壤含水量的精确测量,是设计自动灌溉系统的关键。土壤水分含量的测量方法,目前主要为采用烘干称重、张力计、中子水分计和时域反射仪(TDR)、频域发射仪(FDR)等测量方法[1]。目前广泛采用的测量土壤含水量的方法是使用TDR或FDR测量土壤的介电常数,并利用介电常数与含水率之间存在的关系转化为土壤含水量。
灌溉自动化的建设迫切需要自动化的土壤水分传感器,以获取实时、精确的土壤水分数据。FDR法因其获取数据方便、直观、快捷并可实现持续观测等特点,得到了较快的发展应用[2-3]。目前大多数土壤水分检测设备是以有线的方式进行数据传输,在土壤墒情监测中,通常需要大范围测量土壤水分,需铺设长距离的通信线路,导致成本高、维护困难、工作效率低等问题。无线网络技术的发展为设计无线土壤传感器提供了可能。无线传感器节点具有部署方便、传输距离远、数据安全可靠等特点。国内外也相续开展了一些这方面的研究,大多是使用GPRS技术或分离的单片机和射频模块来构建无线通信系统。
本文提出了一种使用FDR土壤水分传感器和CC2530单片机设计的土壤含水量检测节点,具有快速、便携的特点,可以与其他节点组成无线传感器网络,在更大的范围内实现对区域土壤含水量的测量。
1 系统的硬件设计
土壤水分传感器节点的组成如图1所示。它由电源电路、土壤水分传感器、信号调理电路、CC2530模块等组成。节点可以实现土壤水分的检测、数据的变换、射频的发送等功能。节点采用锂电池供电。土壤水分传感器获取与介电常数成正比的电压,信号调理电路对来自传感器的数据进行电源监测、数据取样,最后由CC2530模块对数据进行AD转换、矫正和融合,然后将数据射频发送到网关。
土壤水分传感器节点也可以响应网关节点发送的查询命令,可以将单次测量的实时数据及节点的状态信息发送给网关,提高了节点的响应速度。
1.1 土壤水分传感器的选型
FDR根据特定频率的电磁波在土壤中传播来测试土壤的介电常数,FDR的一对电极组成一个电容,其间的土壤充当电介质,电极之间的水分的变化会直接影响电容的介电常数发生变化。当高频信号源加到电路上时,LC振荡器的震荡频率会发生变化,高频信号经过变换后可以得到反映介电常数变化的电压信号。由此可以通过测量土壤的介电常数获取土壤的含水量[4]。土壤含水量θ与介电常数ε的关系式为:
θ=-0.53×10-2+2.92×10-2ε-5.5×10-4ε2+4.3×10-6ε3(1)
节点使用高精度标准土壤水分传感器FDS-100。FDS-100由电源模块、变送模块、漂零及温度补偿模块、数据处理模块等组成。传感器内置信号采样及放大、漂零及温度补偿功能。量程:0~100%,测量精度:±3%,测量主频:100 MHz,工作电压:5~12 V,工作电流:21~26 mA,输出信号:0~2 VDC。FDS-100输出特征曲线如图2所示。
从输出特征曲线可以看出,当土壤水分含水量在40%以下时,输出电压与土壤含水量有很好的线性关系。
1.2 信号调理电路
调理电路完成对水分传感器的连接和控制。电路如图3所示。水分传感器的电压输出直接连接到CC2530的P1.1引脚。为了降低传感器的能耗,对传感器的供电电压加了一个开关管进行控制。当CC2530的P1.2引脚输出高电平时,开关管Q1导通,电源对传感器供电。
节点在长时间工作后,电池电压会降低,影响测试数据的准确性和无线信号的传送距离,因此需要实时监测电源供电电压。电路设计了一个电源监控输出端,传感器电源经分压后送到CC2530的A/D转换电路,微处理器可以监测电源电压值,当电源降至某一设定值后将给出提示信号。
1.3 CC2530单片机
系统采用TI公司的CC2530单片机作为主控芯片,CC2530内部集成有2.4 GHz符合IEEE 802.15.4规范的DSSS(直接序列扩频)射频收发器,具有优良的无线接收灵敏度和抗干扰性,以及一个增强型8051微控制器。CC2530具有256 KB的可编程Flash以及8 KB的RAM。芯片还集成了8通道12位ADC(模数转换器),128位AES加密解密安全协处理器,休眠模式定时器等。CC2530具有集成度高、抗干扰能力强、功耗低等特性,在无线传感器节点的设计中得到了比较广泛的应用[5-6]。
1.4 节点供电电源
电源主要为CC2530单片机、传感器等供电。CC2530的供电电压是3.3 V,传感器的最小供电电压是5 V,系统使用电压为5 V的锂电池为节点供电。由于节点各个组成部分的电压不同,需要使用电平转换电路获取多个不同电平。使用的电平转换芯片为TPS79533,输入电平为2.7~5.5 V,输出为3.3 V。节点电源模块如图4所示。
2 系统的软件设计
2.1 基于事件的任务设计
软件系统基于TI的ZigBee协议栈Z-Stack实现。Z-Stack按照分层的结构来实现软件功能,Z-Stack协议栈在结构上分为应用层、网络层、安全层、MAC层和物理层,每一层的函数都严格按照ZigBee协议栈IEEE802.15.4标准编写[7]。在协议栈内部嵌入了一个精简的操作系统,实现对任务的统一调度。操作系统向用户提供统一的接口,方便用户进行应用程序的开发。系统软件的开发通过基于事件的任务机制来实现。将系统的各个功能划分为不同的任务,每个任务都有自己的初始化和处理函数,任务之间通过事件进行通信。事件分为系统事件和用户自定义事件。在每个任务中,要实现针对用户自定义事件的处理函数。土壤水分传感器节点发送数据的流程图如图5所示。
土壤水分传感器上电后首先进行初始化工作,检测周围有无可用的ZigBee网络,如果有,就加入并获得网络地址。节点根据设定的时间间隔读取传感器的数据。在未接收到查询命令时,节点每小时采集一次土壤水分数据,连续采集10次数据后向网关发送一次数据。如果接到来自网关的查询命令,则会实时向网关节点发送数据。这样的设计方式,可以保证系统实时和降低能耗的要求。
2.2 节点通信协议
程序设计在应用层上实现,通过网络协议提供的标准函数实现数据发送。数据以数据帧的格式发送,在一帧数据中,除了传感器数据外,还要附加一些状态信息和控制信息。数据帧有两种格式,一种是完成10次测量后发送到网关的集成数据帧,其格式如表1所示;另外一种格式是接收到网关查询命令后发送到网关的实时数据帧,其格式如表2所示。
2.3 低功耗设计方法
土壤水分传感器节点的功耗主要来自两个方面:CC2530的功耗和传感器功耗。CC2530的功耗包括芯片的待机功耗、发射功耗/接收功耗和运算功耗。其中待机工作电流为0.6 mA,功耗为1.8 mW。接收数据时工作电流为21.1 mA,功耗为63.3 mW。发送数据时,节点的发送功耗与发送分组的长度和射频发送功率均有密切的关系[8],当射频发送功率为0 dBm,发送数据包中应用数据为26 B(集成数据帧)时,实测95.7 mA。如果采用每采集一次数据即发射一次的方式,这时的应用数据长度(实时数据帧)为8 B,这时发送一次的功耗是58.7 mW,连续发送10个数据的总的功耗是587 mW,远大于一次发送10 B的功耗。
传感器的工作电流为21 mA,功耗为105 mW。
土壤水分传感器节点采用锂电池供电,由于传感器的工作电流大,为延长电池的工作时间,将采集数据的时间间隔设计为每小时采集1次数据。节点只在查询时才会接收数据,且节点在正常工作时,查询操作的概率较低,这部分的能耗可以忽略。为减少发送数据的次数,每次采集数据后并不是立即发送到网关,而是完成10次测量后将数据打包发送。
3 节点性能测试
3.1 传感器土壤水分测试结果
取粘土一份,加水配置成不同含水量的待测土壤样本。在室温23℃,传感器节点与网关节点距离20 m条件下进行测试,每个样本测量10次,取其平均值,进行了5批次的测量。网关节点读取的土壤水分数据如表3所示,与之对应的测量曲线如图6所示。由图6可知,输出电压与土壤湿度保持了很好的线性度。
3.2 丢包率测试
数据包在传送过程中由于受到传输距离、节点电压、周围环境等因素的影响,会出现程度不同的丢包率。在空旷地带,CC2530距地面高度1.2 m,晴天,电池电压5.3 V,射频发送频率2.4 GHz情况下对节点的数据传输丢包率进行了测试,丢包率与距离的关系如表4所示。
从测试结果可以看出,随着距离的增加,丢包率上升。传感器节点与网关节点距离在40 m以内,无丢包,信号传输稳定可靠;当移动至50 m处时,开始出现丢包,信号出现不稳定;当节点移动至100 m时,传感器节点无法建立与网关的网络连接,数据传输失败。
当传感器数据的丢包率高于30%时,无法有效通信。
4 结论
本文设计了满足土壤水分测量需要的土壤水分传感器节点,实现了软硬件设计,特别是传感器的信号处理电路以及基于事件的任务程序设计,并对系统的低功耗设计进行了讨论。试验结果表明:系统在开阔环境下,40 m范围内能够实现良好的通信。可以从电路设计、软件编程等方面采取措施减少系统的功耗。
参考文献
[1] 王吉星,孙永远.土壤水分监测传感器的分类与应用[J].水利信息化,2010(5):37-41.
[2] 张瑞瑞,赵春江,陈立平.农田信息采集无线传感器网络节点设计[J].农业工程学报,2009,25(11):213-218.
[3] 何大伟,鲁翠萍,王儒敬.基于MSP430单片机的土壤水分测量系统开发[J].仪表技术,2015(2):14-17.
[4] GINGER B P, TIMOTHY O K. Comparison of field performance of multiple soil moisture sensors in a semi-arid rangeland[J]. Journal of the American Water Resources Association, 2008,44(1):121-135.
[5] 许东,操文元,孙茜.基于CC2530的环境监测无线传感器网络节点设计[J].计算机应用,2013,33(S2):17-20,24.
[6] 章伟聪,俞新武,李忠成.基于CC2530及ZigBee协议栈设计无线网络传感器节点[J].计算机系统应用,2011,20(7):184-187,120.
[7] 石繁荣,黄玉清,任珍文.基于ZigBee的多传感器物联网无线监测系统[J].电子技术应用,2013,39(3):96-99.
[8] 牛星,李捷,周新运.无线传感器网络节点能耗测量及分析[J].计算机科学,2012,39(2):84-87.
相关问答
CC2530 做物联网怎么样?有谁用过?还真别说真的好巧,答主的本科毕业设计用的也是CC2530,为了无线传输信号更强,还加上了CC2591功放芯片先说说CC2530的配置吧,CPU是个增强型的8051核(其实个人...
目前常用的 单片机 型号有哪些?都有什么优缺点?现在市场上的单片机型号可以说是非常多的,其中有通用型的单片机,还有专用型的单片机。专用型单片机一般我们不常见到。今天我们结合这个问题来介绍一下目前常...
gpio中断原理?GPIO(通用输入/输出)中断是一种在单片机或嵌入式系统中使用的功能,它允许系统在特定事件发生时中断正常执行的程序并进行相应的处理。GPIO中断的原理如下:1...
zigbee协议栈的绑定原理及应用?由于我们的学习平台是基于TI公司的,所以讲述的当然也是TI的Z-STACK。相信大家已经知道CC2530集成了增强型的8051内核,在这个内核中进行组网通讯时候,如果...