2016-2017学年第二学期课程实验报告课程名称:无线传感网络实验名称:基于ZigBee的数据采集与无线传输实验姓名班级学号同组同学实验课表现出勤、表现得分25%25实验报告得分50%实验总分操作结果得分25%25实验目的了解ZigBee的工作原理和技术特点,利用CC2530芯片开发一个简单的ZigBee组网通信实验。实验内容以小组为单位,利用CC2530芯片部署无线传感网络实验,分别设计采集节点、汇聚节点的程序,采集节点采集温度信息,并通过无线信道传输给汇聚节点。汇聚节点再将温度数据通过串口传输给上位机(PC机)。要求自己设计通信协议,实现上位机对监控区域的定时和实时温度数据采集。实验过程中遇到的问题以及如何解决的?(可以写多条,是否认真填写将影响实验成绩)在实验过程中我遇到了1、能接收后遇到很多的噪声干扰并且不能接收自己发送的信息2、接收到自己的信息后仍然有很多的噪声干扰出现了很多的乱码第1页/共17页3、接收自己的信息也被转换成乱码4、遇到了选择性接收上的技术问题5、温度的acsii码转换错误通过.......的方式,我解决了这个问题。1、修改了接收代码并确认发送代码没毛病2、尝试修改信道3、检查到接收子程序有问题并修改了4、老师建议我们使用选择性接收5、通过组员合作研究讨论并上网查找解决没有问题的情况下,是否有创新思路(或多做哪些工作)。好像并没有实验代码如下:发送代码:/*****************************************************************************文件名:main.c*作者:Andy*修订:2013-01-08*版本:1.0*描述:设置串口调试助手波特率:115200bps8N1*串口调试助手给CC2530发字符串时,开发板会返回接收到的字符串****************************************************************************/#include#include#include#include//#defineDISABLE_ALL_INTERRUPTS()(IEN0=IEN1=IEN2=0x00)//三个charrf_rx_buf[128];voidrf_send(char*pbuf,intlen);voidrf_receive_isr();typedefunsignedcharuchar;typedefunsignedintuint;#defineUART0_RX1#defineUART0_TX2#defineSIZE51charRxBuf;charUartState;ucharcount;charRxData[SIZE];//存储发送字符串第2页/共17页voidInitClock(void){CLKCONCMD&=~0x40;//设置系统时钟源为32MHZ晶振while(CLKCONSTA&0x40);//等待晶振稳定CLKCONCMD&=~0x47;//设置系统主时钟频率为32MHZ}/*****************************************************************************名称:InitSensor()*功能:温度传感器初始化函数*入口参数:无*出口参数:无****************************************************************************/voidInitSensor(void){//DISABLE_ALL_INTERRUPTS();//关闭所有中断InitClock();//设置系统主时钟为32MTR0=0x01;//设置为1来连接温度传感器到SOC_ADCATEST=0x01;//使能温度传感}/*****************************************************************************名称:GetTemperature()*功能:获取温度传感器AD值*入口参数:无*出口参数:通过计算返回实际的温度值****************************************************************************/floatGetTemperature(void){uintvalue;ADCCON3=(0x3E);//选择1.25V为参考电压;14位分辨率;对片内温度传感器采样ADCCON1|=0x30;//选择ADC的启动模式为手动ADCCON1|=0x40;//启动AD转化while(!(ADCCON1&0x80));//等待AD转换完成value=ADCL>>4;//ADCL寄存器低2位无效value|=(((uint)ADCH)<<4);return(value-1367.5)/4.5-5;//根据AD值,计算出实际的温度,芯片手册有错,温度系数应该是4.5/℃//进行温度校正,这里减去5℃(不同芯片根据具体情况校正)第3页/共17页}/*****************************************************************************名称:DelayMS()*功能:以毫秒为单位延时*入口参数:msec延时参数,值越大,延时越久*出口参数:无****************************************************************************/voidDelayMS(uintmsec){uinti,j;for(i=0;i