版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Zigbee无线传感网技术与应用ZigBee无线控制音乐盒0501了解BasicRF点对点工作机制03熟悉无线发送和接收函数05理解串口读写函数04理解发送地址和接收地址、PAN_ID、RF_CHANNEL等概念02掌握蜂鸣器驱动方法学习目标Learningobjectives任务三:用电脑弹音乐任务要求要求读者通过上位机软件与zigbee开发板连接,无线控制另外一块zigbee开发板实现远程无线弹奏音乐。任务目标Missionobjectives01掌握ZigBee点对点通信的方法03实现多点无线音乐盒的调试02掌握上位机软件通信协议原理储备知识为了实现在同一范围内多点间通信,必须考虑防止数据包在空气中的传输时相互碰撞,为了建立可靠的无线传输通路,必须采用各种方法。例如TDMA/FDMA/CSMA等都是无线通讯中常用的办法。1.ZigBee多点原理和方法点对多点的通信方法什么是FDMAFDMA是数据通信中的一种技术,即不同的用户分配在时隙相同而频率不同的信道上。按照这种技术,把在频分多路传输系统中集中控制的频段根据要求分配给用户。同固定分配系统相比,频分多址使通道容量可根据要求动态地进行交换。储备知识在FDMA系统中,分配给用户一个信道,即一对频谱,一个频谱用作前向信道即基站向移动台方向的信道,另一个则用作反向信道即移动台向基站方向的信道。这种通信系统的基站必须同时发射和接收多个不同频率的信号,任意两个移动用户之间进行通信都必须经过基站的中转,因而必须同时占用2个信道(2对频谱)才能实现双工通信。以往的模拟通信系统一律采用FDMA。频分多址(FDMA)是采用调频的多址技术。业务信道在不同的频段分配给不同的用户。如TACS系统、AMPS系统等。频分多址是把通信系统的总频段划分成若干个等间隔的频道(也称信道)分配给不同的用户使用。这些频道互不交叠,其宽度应能传输一路数字话音信息,而在相邻频道之间无明显的串扰。频分多址(FDMA)技术将可用的频率带宽拆分为具有较窄带宽的子信道。这样每个子信道均独立于其它子信道,从而可被分配给单个发送器。其优点是软件控制上比较简单,其缺陷是子信道之间必须间隔一定距离以防止干扰,频带利用率不高。1.ZigBee多点原理和方法储备知识FDMA是一个多频率的通信方式,在实验中信道的改变是必要的,我们将频段设置在2.4GHz上,要改变信道的方法是改变寄存器channel,在改变信道的时候,只需要改变channel的值,在下面的代码中给出了两个设备,选择不同信道的方法。在实验使用三个CC2530无线通讯模块,两个发送模块Tx1和Tx2,一个接收模块Rx。模块Tx1和模块Tx2在编程时,被强制固定在不同的子频道上,模块Tx1和模块Tx2同时向Rx模块发送数据包(因为在不同的子频道上发射,所以在空气中,这些数据包不会发射碰撞,不会出现数据包的传输错误)。而Rx模块时时刻刻地扫描监视空气中不同子频道,发现有合格的数据包,就会自动进行接收。这就实现了点(Rx模块)对多点(模块Tx1和模块Tx2)的可靠无线数据通讯。1.ZigBee多点原理和方法FDMA程序实现储备知识通常上位机指的是PC,下位机指的是单片机或者带微处理器的系统。下位机一般是将模拟信号经过AD采集将模拟量转换为数字量,下位机再经过数字信号处理以后将数字信号通过串口发送到上位机,相反上位机可以给下位机发送一些指令或者信息。常见的通信串口包括RS232、RS485、RS422等。这些串口只是在电平特性有所不同,在上位机与下位机进行数据通信时可以不考虑电平特性,而且现在在硬件上有各种转接接口,使用起来也很方便。当然在通常做简单的串口UART实验时我们可以使用各种各样的串口助手小软件,但是这些串口小工具有时候并不能很好满足需求。2.用电脑弹音乐上位机与下位机图:上位机储备知识现教材制作了一套上位机软件,用来模拟钢琴按键,使用串口与电脑通信,软件使用波特率57600、无奇偶校验位、默认COM连接COM10接口(需要手动设置COM口为COM10)。其具体通信协议如下表所示。指令部分0xff表示为启始符、0xfe表示终止符、中间为判断的数据。2.用电脑弹音乐钢琴小程序功能指令触发条件0xFF0x010xFE按下键盘“数字健1”响起音符re0xFF0x020xFE按下键盘“数字健2”响起音符mi0xFF0x030xFE按下键盘“数字健3”响起音符fa0xFF0x040xFE按下键盘“数字健4”响起音符so0xFF0x050xFE按下键盘“数字健5”响起音符la0xFF0x060xFE按下键盘“数字健6”0xFF0x070xFE按下键盘“数字健7”0xFF0x100xFE按下键盘“数字健8”响起音符高音re0xFF0x200xFE按下键盘“数字健9”响起音符高音mi0xFF0x300xFE按下键盘“数字健0”表:上位机通信指令集合3.串行收发本任务所需软件已安装至电脑可直接使用。本任务所需硬件:下载器、ZigBee开发板、5V电源适配器、USB下载线、串口线、天线蜂鸣器模块。环境准备任务实施任务实施
接收串口多个数据,将数据放入缓存数组中;
判断数据,同时输出结果给电脑如“响起do”、“响起re”、“响起mi”等。任务要求编写代码步骤1:新建工程->工程名称为“串行收发”->保存->main.c文件名称为“main.c”->设置Opion->编写最简单的代码,代码如下所示。(新建工程具体步骤,不再重复介绍)#include"iocc2530.h"voidmain(){
while(1){
}}3.串行收发任务实施步骤2:编写串口使能函数,开启设置I/O外设、串口接收中断、57600波特率等、代码如下所示。3.串行收发voidUartInit(){P0SEL|=0x0c;//设置外设PERCFG=0x00;//设置I/O位置U0CSR|=0xc0;//设置UART模式U0BAUD=216;//设置波特率为57600U0GCR=10;//设置波特率为57600URX0IE=1;//开启串口接收中断EA=1;//开启总中断}任务实施步骤3:编写中断接收函数,代码如下所示。3.串行收发charCommand[3];unsigned
charuart_count=0;#pragmavector=URX0_VECTOR__interruptvoidUART(){Command[uart_count++]=U0DBUF;//接收缓存数据到dataURX0IF=0;//清中断标志
if(uart_count==3){uart_count=2;}}任务实施代码小贴士:代码:charCommand[3];说明:接收缓存数组,通过表?得到指令共3位,故申明一个3位的数组接收数据。代码:Command[uart_count++]=U0DBUF;说明:将串口数据写入缓存数组中,写完一个字节后,数组计数变量累加1,表示指向下一位接收。3.串行收发任务实施代码小贴士:代码:if(uart_count==3){uart_count=2;}说明:防止数组计数器,累加溢出数组限界范围,故累加至3后停止接收,直到接收到停止指令为止。3.串行收发任务实施步骤4:在主函数中调用串口中断函数,由于工程后续作为BasicRF使用所以需要将时钟提前至为32MHZ使用,代码如下所示。3.串行收发voidmain(){CLKCONCMD=0x80;UartInit();//调用串口初始化函数
while(1){
}}任务实施步骤5:编写发送串口字符串函数、与发送单字符函数,代码如下所示。3.串行收发voidsend(unsigned
chars){U0DBUF=s;//发送a
while(!UTX0IF);UTX0IF=0;}voidsendstr(unsigned
char*s,unsigned
charlen){
intcount=0;
while(len--){send(*(s+count));count++;}}任务实施步骤5:编写发送串口字符串函数、与发送单字符函数,代码如下所示。3.串行收发voidmain(){CLKCONCMD=0x80;UartInit();
while(1){
if(Command[2]==0xfe){
switch(Command[1]){
case
0x01:sendstr("响起“do”\n",11);
break;
case
0x02:sendstr("响起“re”\n",11);
任务实施3.串行收发
break;
case
0x03:sendstr("响起“mi”\n",11);
break;
……//代码基本逻辑一致,为了篇幅省略}Command[0]=0;Command[1]=0;Command[2]=0;uart_count=0;}
}}任务实施代码小贴士:代码:if(Command[2]==0xfe)…说明:判断数据接收缓存的最后一位是否为上位机的指令最后一位0xfe,如果正确则开始判断数据位。3.串行收发任务实施代码小贴士:switch(Command[1]){case0x01:sendstr("响起“do”\n",11);break;case0x02:sendstr("响起“re”\n",11);break;…}说明:使用switch语句判断第2位数据,是否为指定的数值0x01,如果满足则发送给电脑这是响起“do”的数据。同理下面使用…表示代码基本一致。3.串行收发任务实施代码小贴士:代码:Command[0]=0;Command[1]=0;Command[2]=0;uart_count=0;说明:如果接收到数据0xfe则表示接收指令结束,则必须将数据位请0,为后续指令接收。uart_count计数器也将清0。3.串行收发任务实施步骤7:代码完成编写后,先使用串口调试助手模拟上位机软件指令发送,注意串口调试助手使用16进制发送,格式为:ff01fe,数据中间加空格间隔如图所示。3.串行收发图:发送16进制数据任务实施步骤8:设置断点接收数据,观看数据是否与发送一致。3.串行收发图:查看接收数据任务实施步骤9:全速执行代码查看串口调试助手接收情况。3.串行收发图:电脑接收到的数据任务实施一、修改代码,将switch语句修改为if语句,并说明两者的区别。二、若将接收缓存变为10即charCommand[10],那么代码将如何修改。技能拓展3.串行收发4.开始无线弹音乐本任务所需软件已安装至电脑可直接使用。本任务所需硬件:下载器、ZigBee开发板、5V电源适配器、USB下载线、串口线、天线蜂鸣器模块。环境准备任务实施任务实施
将工程1工程改为BasicRF无线工程;
将使能蜂鸣器代码,添加至工程中;
修改代码使之与电脑正常连接通信。任务要求编写代码步骤1:复制工程1代码为工程2,将工程修改为BasicRF工程,修改Option属性->复制BasicRF库“CC2530_lib”至工程上级目录下->编写添加头文件->添加调用BasicRF初始化函数。接收电脑的串口数据,“发送板”负责串口发送弹奏的音符给接收板,主函数代码如下所示。4.开始无线弹音乐任务实施4.开始无线弹音乐voidmain(){halBoardInit();//初始化模块相关寄存器ConfigRf_Init();//无线收发参数配置UartInit();
while(1){
if(Command[2]==0xfe){
switch(Command[1]){
case
0x01:sendstr("响起“do”\n",11);
break;
case
0x02:sendstr("响起“re”\n",11);
break;
任务实施4.开始无线弹音乐
case
0x03:sendstr("响起“mi”\n",11);
break;
……}Command[0]=0;Command[1]=0;Command[2]=0;uart_count=0;}}}任务实施步骤3:发送端代码已编写完成,接下来继续编写接收板代码。接收板代码为响起音乐代码,复制发送端代码,删除部分代码保留下BasicRF代码部分,添加蜂鸣器代码。代码如下所示。4.开始无线弹音乐voidmain(){
unsigned
chartmp;P2DIR|=0x01;P1DIR&=~(0x03);
/******代码添加部分*****/halBoardInit();//初始化模块相关寄存器ConfigRf_Init();
/*********************/systemInit();timerInit();
while(1){
任务实施4.开始无线弹音乐
if(basicRfPacketIsReady()){basicRfReceive(&tmp,1,NULL);
//接收数据
switch(tmp){
case
'1':T3CC0=FREQ[1];flag=1;
break;
case
'2':
T3CC0=FREQ[2];flag=1;
break;
……}}
if(flag){delay_ms(500);flag=0;}}}任务实施代码小贴士:4.开始无线弹音乐T3CC0=FREQ[1];flag=1;break;case'2':T3CC0=FREQ[2];flag=1;break;…}说明:当接收到数据后,判断数据的数据给定时器发出对应频率的声音。代码:if(b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社工机构协议书
- 补种复绿协议书
- 教写打架协议书
- 车库预定协议书
- 抵押置换协议书
- 签订返租协议书
- 职业教育协议书
- 餐厅合伙作协议书
- 补助经费协议书
- 考考驾校协议书
- 《斯大林格勒保卫战》课件
- 清华大学《工程伦理》网课习题及期末考试答案
- 个人借款合同个人借款协议
- 生物科技股份有限公司GMP质量手册(完整版)资料
- 2023年运动康复期末复习-体适能理论与训练(运动康复专业)考试上岸题库历年考点含答案
- 中国纪录片发展历程
- 2023年德语专业四级考试真题
- 班组工程进度款申请表
- 四年级阅读训练概括文章主要内容(完美)
- JJG 1033-2007电磁流量计
- GB/T 6541-1986石油产品油对水界面张力测定法(圆环法)
评论
0/150
提交评论