无线传感网络技术与应用 项目三 Basic RF无线通信应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
l >= HAL_UART_ISR_TX_MAX - 1) { uartCfg.txTail = 0; } else { uartCfg.txTail++; } // Keep re-enabling ISR as it might be keeping up with this loop due to other ints. IEN2 |= UTX0IE; } return cnt; }
【任务实施】
第二步,下载程序。 给发射和接收模块下载程序。 1.在“light_switch.c”的主函数中找到“uint8 appMode = NONE;” 代码,并把它注释掉,在其下一行添加“uint8 appMode = SWITCH;”代码。编译程序,无误后下载到发射模块中。 2.在“light_switch.c”的主函数中找到 “uint8 appMode = SWITCH;”代码,将其修改为:“uint8 appMode = LIGHT;”。编 译程序,无误后下载到接收模块中。 第三步,测试程序功能。 每按一下发射模块中的SW1键,接收模块上的LED1灯的状态就会 改变,即LED1灯亮和灭交替变化。把两个模块隔开20m以上的距 离,进行测试。
任务3.2 无线串口通信
【任务要求】
采用ZigBee模块(节点1)、带串口的ZigBee模块(节点2) 和NEWLab平台组成一套串口通信系统,在节点1的串口调试 软件上输入“Hello!你叫什么名字?”,然后点击发送;在 节点2的串口调试软件上就显示对应信息,同时在节点2上回 复“Hello! 我叫张三,你呢?”。回复的信息要求在节点1上 能显示,像聊天软件一样收发信息,实现无线串口通信。
【任务实施】
第一步,新建工程和程序文件,添加头文件。 1.复制库文件。将CC2530_lib文件夹复制到该任务的工程文件夹内, 即“D:\zigbee\任务3.2 无线串口通信”内(可以是其他路径)。 并在该工程文件夹内新建一个Project文件夹,用于存放工程文件。 2.新建工程。在工程中新建App、basicrf、board、common、utils 等5个组,把各文件夹中的“xx.c”文件添加到对应的文件夹中。 3.新建程序文件。新建源程序文件,将其命名为uartRF.c,保存在 D:\zigbee\任务3.2 无线串口通信\Project文件夹中。并将该文件添 加到工程中的App文件夹中。 4.为工程添加头文件。点击IAR菜单中的【Project】-> 【Options…】,在弹出对话框中选择“C/C++ Compiler”,然后 选择“Preprocessor”选项卡,并在“Additional include directories:(one per line)”中输入头文件的路径,然后点击 【OK】。
【任务实施】
第一步,打开TI官网的工程。
登录TI官网,下载CC2530 BasicRF.rar,解压后双击“\CC2530 BasicRF\CC2530 BasicRF\ide\srf05_cc2530\iar”文件夹中的 “light_switch.eww”工程文件。
【任务实施】
第二步,修改程序。 ZigBee模块(网关节点)上有2个按键和4个LED,其中按键SW1和SW2 分别由P1.2和P1.6控制,LED1~LED4分别由P1.0、P1.1、P1.3和P1.4控 制,如图所示。这些接口与TI官网发布的开发平台有所差别,所以需要 修改一下。
【任务实施】
第二步,配置工程。 点击IAR菜单中的【Project】->【Options…】,分别对General Options、 Linker和Debugger三项进行配置。 1. General Options配置。选中“Target”选项卡,在Device栏内选择 “CC2530F256.i51”(路径:C:\…\8051\config\devices\Texas Instruments)。 2. Linker配置。选中“Config”选项卡,勾选“Overide default”,并在 该栏内选择“lnk51ew_CC2530F256_banked.xcl”配置文件,其路径: C:\…\8051\config\devices\Texas Instruments。 3.Debugger配置。选中“Step”选项卡,在“Driver”栏内选择“Texas Instruments”;在“Device Description file”栏内,勾选“Overide default”,并在该栏内选择“io8051.ddf”配置文件,其路径: C:\…\8051\config\devices\_generic。 第三步,编写程序。 具体程序代码见本教材资源。
【知识链接】
通过调用RecvUartData()函数来接收数据,并以数据长度来判断是否接收到数据。 uint16 RecvUartData(void) { uint16 r_UartLen = 0;
uint8 r_UartBuf[128]; uRxlen=0; r_UartLen = halUartRxLen(); //得到当前RxBuffer的长度 while(r_UartLen > 0) { r_UartLen = halUartRead(r_UartBuf, sizeof(r_UartBuf));//得到读取到的串口数据长度 MyByteCopy(uRxData, uRxlen, r_UartBuf, 0, r_UartLen); //将数据复制到串口接收缓冲区 uRxlen += r_UartLen; halMcuWaitMs(5); //延迟非常重要,串口连续读取数据时候需要有一定的时间间隔
【任务实施】
第四步,下载程序。 1.为无线模块A(节点1)下载程序。注释掉上述程序的第6和第7 行,重新编译程序无误后,下载到无线模块A中。 2.为无线模块B(节点2)下载程序。注释掉上述程序的第4和第5 行,重新编译程序无误后,下载到无线模块B中。 注意:如果有多组同学同时进行实训,每组间的RF_CHANNEL和 PAN_ID至少要有一个参数不同。如果多组间的RF_CHANNEL和 PAN_ID值都一样,则会造成信号串扰。 第五步,运行程序。 1.分别把NEWLab平台和节点2连接到PC机的串口,打开两个串口 调试软件,把串口的波特率设置为38400;再给两个模块上电。 2.在两个串口调试软件上,发送不同的信息,并能显示对方发送的 信息。
TI公司提供了基于CC253x芯片的Basic RF软件包,其包括硬件层 (Hardware layer)、硬件抽象层(Hardware Abstraction layer)、 基本无线传输层(Basic RF layer)和应用层(Application)。虽 然该软件包还没有用到Z-Stack协议栈,但是其包含了IEEE 802.15.4标准数据包的发送和接收,采用了与IEEE 802.15.4 MAC 兼容的数据包结构及ACK包结构。其功能限制如下: ◇ 不具备“多跳”、“设备扫描”功能。 ◇ 不提供多种网络设备,如协调器、路由器等。所有节点设备同 一级,只能实现点对点数据传输。 ◇ 传输时会等待信道空闲,但不按IEEE 802.15.4 CSMA-CA要求进 行两次CCA检测。 ◇ 不重传输数据。 因此,Basic RF是简单无线点对点传输协议,可用来进行Z-Stack协 议栈无线数据传输的入门学习。
项目三 Basic RF无线通信应用
2021/7/8
任务3.1 无线开关LED灯
【任务要求】
以Basic RF无线点对点传输协议为基础,将两块ZigBee模 块分别作为无线发射模块和无线接收模块,按下发射模块上 的SW1键,可以控制接收模块的LED1灯亮和灭,实现无线开 关LED灯的功能。
【知识链接】
【技能拓展】
1.在本任务中两个串口的波特率相同,如果两个串口的波特 率不相同,能进行通信吗?如果能,该如何实现? 2.如果数据在无线发送时要进行加密,接受到无线数据后进 行相应的解密,在软件上该如何实现?
任务3.3 模拟量传感器采集
【任务要求】
采用气体传感器、光敏/温度传感器模块,以及ZigBee模 块组成一个模拟量传感器采集系统,将各模块固定在 NEWLab平台上。并用导线将一块ZigBee模块连接气体传感 器模块,另一块ZigBee模块连接光敏/温度传感器模块,协调 器模块通过串口连接到电脑。把带酒精的棉签靠近气体传感 器模块,使用手机电筒照射光敏/温度传感器模块,当气体 传感器检测到不同浓度的气体时,光敏传感器检测到不同光 强的光照时,都会在电脑的串口调试软件上就显示检测到的 气体电压信息和光照电压信息。
【任务实施】
第四步,模块连接,下载程序。 1.组成光敏传感器采集系统(光敏传感器模块设备) 把ZigBee模块和光敏传感器模块固定在NEWLab平台,将光敏传感器模块的模拟量输出接口与 ZigBee模块的ADC0(P0_0)接口连接起来。在IAR软件的workspace栏内,选择“gm_sensor”模 块,选中collect.c单击右键,选择“Options”,在弹出的对话框中将“Exclude from build”复选框 中打“✓”,然后单击“OK”。重新编译程序无误后,给NEWLab平台上电,下载程序到ZigBee模 块中。 2.组成气体传感器采集系统(气体传感器模块设备) 把ZigBee模块和气体传感器模块固定在NEWLab平台,将气体传感器模块的模拟量输出接口与 ZigBee模块的ADC0接口连接起来。在IAR软件的workspace栏内,选择“qt_sensor”模块,选中 collect.c单击右键,选择“Options”,在弹出的对话框中将“Exclude from build”复选框中打 “✓”,然后单击“OK”。重新编译程序无误后, 给NEWLab平台上电,下载程序到ZigBee模块中。 3.组成模拟量集中采集系统(协调器模块设备) 在IAR软件的workspace栏内,选择“collect”模块, 选择sensor.c单击右键,选择“Options”,在弹出的 对话框中将“Exclude from build”复选框中打“✓”, 然后单击“OK”。重新编译程序无误后,将协调器模 块通过串口线连接到PC机串口或者通过USB转串口线 连接到PC机,给协调器通电,下载程序到协调器模块 中。各模块连接效果如图所示。
r_UartLen = halUartRxLen(); } return uRxlen; }
【知识链接】
通过创建一个buffer,把数据放入其中,然后再调用halUartWrite()函数发送数据到串口。 //函数功能:发送长度为len的buf到串口 uint16 halUartWrite(uint8 *buf, uint16 len) { uint16 cnt;
// Accept "all-or-none" on write request. if (HAL_UART_ISR_TX_AVAIL() < len) //判断发送数据长度 { return 0; } for (cnt = 0; cnt < len; cnt++) { uartCfg.txBuf[uartCfg.txTail] = *buf++;
【任务实施】
第一步,新建工程、配置工程相关设置。 第二步,编写程序。 具体程序代码见本教材资源。 第三步,建立与配置模块设备。 1.建立与配置光敏传感器模块设备 (1)建立模块设备 选择菜单“ProjectEdit Configurations”,弹出项目的配置对话框,如图3.10所示,系统 会检测出项目中存在的模块设备。 单击“New...”按钮,在弹出的对话框中输入模块名称为:“gm_sensor”,基于Deubg模 块进行配置,然后单击【OK】按钮完成模块设备的建立。然后在项目配置对话框中就可以 自动检测出刚才建立的模块设备“gm_sensor”。 (2)模块“Options”设置 为了给模块设备设置对应的条件编译参数,在此我们需要进行如下设置: 在项目工作组中选择“gm_sensor”模块,单击右键选择“Options”,在弹出的对话框中 选择“C/C++ Compile”类别,在右边的窗口中选择“Preprocessor”选项中的“Defined symbols:”中输入“GM_SENSOR” 。 2.建立与配置气体传感器模块设备 操作步骤与建立光敏传感器模块设备一样,只需要将模块设备名称与模块“Options”设置 分别设置为“qt_sensor”与“QT_SENSOR”,操作方法与建立光敏传感器模块设备相同。 3.建立与配置协调器模块设备 操作步骤与建立光敏传感器模块设备一样,需要将模块设备名称设置为“collect”。
【技能拓展】
1.试着改变RF_CHANNEL、PAN_ID、MY_ADDR、 AEND_ADDR的值,重新编译下载程序,同样实现无线开关 灯。 2.改变设置,使两个程序的RF_CHANNEL或PAN_ID不一致, 观察结果;使一个程序的MY_ADDR与另一个程序的 SEND_ADDR不相等,又会出现什么情况? 3.将两个程序下载到多个ZigBee模块后运行,会出现什么 情况?
相关文档
最新文档