技术文档

cc2530单片机 物联网无线通信之 ZigBee TI CC2530串口通信调试

小编 2024-11-24 技术文档 23 0

物联网无线通信之 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转串口模块,也就是把串口...

猜你喜欢