物联网无线通信之 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是一款真正的片上系统解决方案,是由TI公司生产的用于2.4GHzIEEE802.15.4、ZigBee和RF4CE的单片机。它集成了51单片机内核,具有经济实惠、功耗低等优点...
cc2530 主要技术指标?CC2530(无线片上系统单片机)是用于IEEE802.15.4,ZigBee和RF4CE应用的一个真正的片上系统解决方案,它能够以非常低的成本建立起一个强大的无线网络。并且CC53...
cc2530单片机 中常见的触发类型有哪两类?常见的触发类型有上升沿触发和下降沿触发两类。常见的触发类型有上升沿触发和下降沿触发两类。
cc2530 f256 单片机 的sram是多少?SRAM的容量大小与地址空间大小有关,比如51,如果直接扩展的话,有64K大小,但通过一些特殊方法,可以扩到几兆也是可以的,只不过需要占用其他IO口而已。其他...
cc2530 开发板如何清除程序?如果单片机有ISP功能,那么可以直接利用串口,写一些全部为00H或FFH的数据到单片机,覆盖全部地址就可以擦除了。如果单片机没有ISP功能,那么只能取下单片机,...
cc2530 看门狗定时器的特性?看门狗实际上是一个计数器,一般给看门狗一个大数,程序开始运行后看门狗开始倒计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数...
物联网 单片机 哪个最好?如果要在物联网单片机最好公司可选择CC2530芯片,它是一个增强性的8051芯片CPU加上一个2.4GHz的802.15.4射频模块。如果要在物联网单片机最好公司可选择CC2530...
问一下,zigbee上的串口是联接什么的,如果接温度传感器怎么...串口是用来连接单片机与单片机或者是单片机与计算机的,但现在串口用的比较少了,笔记本上基本就没有串口了。CC2530单片机已经集成了usb转串口模块,也就是把串口...