您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > zigbee的cc2530超声波测距
(一)ZigBee通过超声波传感器水深采集本模块主要实现通过单个zigbee终端节点驱动超声波模块采集液位深度信息回传到PC机上显示。1.CC2530介绍本创新项目使用的Zigbee芯片为CC2530,它集成了业界领先的高性能RF收发器、增强型工业标准的8051微控制器,具有接收灵敏度高和抗干扰性强的特点。CC2530根据需要有四种不同FLash版本:CC2530F32/64/128/256,本次选择Flash为256K的片子。它具有多种运行模式以及短的模式切换时间,保证了其超低功耗的特点。CC2530的结构大致可以分为三块:CPU和存储模块、电源时钟及外部设备模块、无线模块(图1-1为CC2530最小系统)。主要特点如下:(1).高性能、低功耗的8051微控制器内核;(2).适应2.4GHzIEEE802.15.4的RF收发器;(3).电源电压范围宽(2.0~3.6V);(4).看门狗、电池监视器和温度传感器;(5).具有8路输入8~14位ADC;(6).2个支持多种串行通信协议的USART,1个红外发生电路;(7).个通用的16位和2个8位定时器;(8).高级加密标准(AES)协处理器;(9).1个通用I/O引脚,2个具有20mA的电流吸收或电流供给能力;(10).小尺寸QLP-40封装,6mm×6mm。图2-1CC2530最小系统2超声波测距模块简介超声波模块使用的是US-100,本模块可实现2cm~4.5m的非接触测距功能,拥有2.4~5.5V的宽电压输入范围,静态功耗低于2mA,自带温度传感器对测距结果进行校正,同时具有GPIO,串口等多种通信方式,内带看门狗,工作稳定可靠。主要技术参数:超声波测距系统通过zigbee模块的cc2530芯片向通过串口超声波探头的引脚TX发送一个0x55的指令,超声波探头发射超声波,超声波向前传播。当超声波遇到障碍物时会反射回来,进行相关数据处理,RX引脚输出,将测得的距离的数据发送给zigbee模块。为了验证测得数据是否准确,我们通过串口将RX输出的数据进行显示(图2-1为实测图)。图2-1串口测试超声波模块本模块有两种测距方式:电平触发测距,串口触发测距。我们选择的是串口触发测距方式。在模块上电前,首先插上模式选择跳线上的跳线帽,使模块处于串口触发模式。在此模式下只需要在Trig/TX管脚输入0X55(波特率9600),系统便可发出8个40KHZ的超声波脉冲,然后检测回波信号。当检测到回波信号后,模块还要进行温度值的测量,然后根据当前温度对测距结果进行校正,将校正后的结果通过Echo/RX管脚输出。输出的距离值共两个字节,第一个字节是距离的高8位(HDate),第二个字节为距离的低8位(LData),单位为毫米。即距离值为(HData*256+LData)mm(图2-1为US-100超声波模块时序图,图2-2为超声波模块实物图)图2-1US-100超声波模块时序图图2-2超声波测距模块实物图系统的设计思路:图2-3系统框图3.实验测试代码程序#includeioCC2530.h#includestring.h#defineuintunsignedint#defineucharunsignedchar#defineRX0P0_2超声波发射超声波接收Zigbee控制器输出数据OLED显示键盘输入(待完善)#defineTX0P0_3//函数声明voidDelayms(uintxms);//延时函数voidInitUart();//初始化串口voidUartSend_String(char*Data,intlen);chartemp;charflag=0;intdata1,data2,data;charTxdata[5];//存放数据charstr[5];/****************************延时函数*****************************/voidDelayms(uintxms)//i=xms即延时i毫秒(16M晶振时候大约数,32M需要修改,系统不修改默认使用内部16M){uinti,j;for(i=xms;i0;i--)for(j=587;j0;j--);}/****************************************************************串口初始化函数***********************************************************/voidInitUart(){CLKCONCMD&=~0x40;//设置系统时钟源为32MHZ晶振while(CLKCONSTA&0x40);//等待晶振稳定CLKCONCMD&=~0x47;//设置系统主时钟频率为32MHZPERCFG=0x00;//位置1P0口P0SEL=0x3c;//P0_2,P0_3,P0_4,P0_5用作串口,第二功能P2DIR&=~0XC0;//P0优先作为UART0,优先级U0CSR|=0x80;//UART方式U0GCR|=8;//U0GCR与U0BAUD配合U0BAUD|=59;//波特率设为115200UTX0IF=0;//UART0TX中断标志初始置位1(收发时候)U0CSR|=0X40;//允许接收IEN0|=0x84;//开总中断,接收中断}/***************************//主函数***************************/voidmain(void){InitUart();while(1){U0CSR&=~0x40;//禁止接收U0DBUF=0x55;while(UTX0IF==0);//发送完成标志位UTX0IF=0;U0CSR|=0x40;//允许接收while(!flag);flag=0;//U0DBUF=temp;data1=temp*256;//while(UTX0IF==0);//发送完成标志位//UTX0IF=0;while(!flag);flag=0;//U0DBUF=temp;data2=data1+temp;//while(UTX0IF==0);//发送完成标志位//UTX0IF=0;data=(int)data2;str[0]=(char)(data/1000)+0x30;//十进制显示str[1]=(char)(data/100%10)+0x30;str[2]=(char)(data/10%10)+0x30;str[3]=(char)(data%10)+0x30;str[4]=32;strcpy(Txdata,str);//将发送内容copy到Txdata;UartSend_String(Txdata,5);//串口发送数据Delayms(1000);}}/****************************************************************串口接收一个字符:一旦有数据从串口传至CC2530,则进入中断,将接收到的数据赋值给变量temp.****************************************************************/#pragmavector=URX0_VECTOR__interruptvoidUART0_ISR(void){URX0IF=0;//清中断标志temp=U0DBUF;flag=1;}/****************************************************************串口发送字符串函数****************************************************************/voidUartSend_String(char*Data,intlen){intj;for(j=0;jlen;j++){U0DBUF=*Data++;while(UTX0IF==0);UTX0IF=0;}}下图最终的测试实物图
本文标题:zigbee的cc2530超声波测距
链接地址:https://www.777doc.com/doc-5315986 .html