【技能大赛真题】2019年物联网国赛任务三题1-无线通信系统
XMF393 小蜜蜂笔记 / 广东职院 欧浩源
【题目要求】:无线通信系统
Zigbee通讯拥有短距离无线通讯的能力,选用一个Zigbee节点盒(蓝色),一个Zigbee模块(黑色),实现点对点的数据传输通讯,考核选手Zigbee点对点知识的掌握,利用给定的工程实现任务。要求如下:
<1> Zigbee网络号PAN ID、信道号Channel ID请参考纸质附件给定的值。
<2> 程序开始运行Zigbee节点盒LED1、LED2灯亮,Zigbee模块D4、D3、D6、D5灯亮;
<3> 单击Zigbee节点盒SW1后,板上的LED1、LED2灯进入交替亮灭状态(如LED1亮则LED2灭,LED2亮则LED1灭);同时发送一个信息给Zigbee模块,当Zigbee模块收到这个信息后Zigbee模块板上的D4、D3、D6、D5灯进入流水灯状态。
<4> 单击Zigbee模块上的SW1后,板上的D5、D6、D3、D4灯进入流水状态;同时发送一个信息给Zigbee节点盒,当Zigbee节点盒收到这个信息后Zigbee节点盒板上的LED1、LED2进入呼吸灯状态;
<5> 单击Zigbee模块上的SW2后,重置两个Zigbee板上的灯,Zigbee模块D4、D3、D6、D5灯亮;Zigbee节点盒LED1、LED2灯亮。
<6> 能重复实现以上步骤。
<7> Zigbee节点盒要实现与PC端串口的通讯功能,以便接收PC端软件由串口发送过来的数据后,通过无线通讯转发给Zigbee模块,再由Zigbee模块将这个数据通过串口发送给Android端软件。
<8> Zigbee模块要实现与Android端串口的通讯功能,以便接收Android端软件由串口发送过来的数据后,通过无线通讯转发给Zigbee节点盒,再由节点盒将这个数据通过串口发送给PC端软件。
补充说明:
<1> 在两块Zigbee板上的小辣椒(天线)上贴上“任务三题1”标签纸,Zigbee节点盒通过USB转串口线接入开发机电脑,Zigbee模块通过公母直连串口线接入到移动互联终端,两个Zigbee板都要接上电源待裁判评判。
<2> Zigbee节点盒与PC端连接的串口为COM8、波特率为115200,Zigbee模块与移动互联终端连接的串口为COM2,波特率为115200,要求编译后的工程软件直接运行就能读取到相应的信息。
任务三题1的第<7>和<8>项功能,还是任务五题1第<3>和第<4>的实现基础,也就是说,这个RF无线数据透传功能无法实现,任务五题1的部分功能也无法得分。
任务五题1:点对点聊天系统。
<3> 当在输入消息文本框里输入相应的文本之后,点击发送按钮,将这条文本信息显示在现实文本框的最后一行,同时把这条消息通过串口发送给任务三题1提供的Zigbee模块,由模块转发给Zigbee节点盒最终由PC端接收并显示该信息。
<4> Android端接收到从Zigbee模块串口发送过来相应的信息,则直接把该信息显示在现实文本框的最后一行。
【硬件资源】Zigbee模块与Zigbee节点盒的电路对照
注:关于Zigbee模块的详细资料,可详见:XMF09B国赛ZIgbee模块资料汇总
【解题关键】:五个知识技能要点
这是一道非常优秀的BasicRF综合应用题目,仅仅掌握BasicRF点对点无线通信相关的内容是很难在一个小时左右完成题目的。这道题目的重要知识点至少包括:
<1> 基于BasicRF点对点通信的无线数据收发。
<2> 基于BasicRF点对点通信的串口数据收发。
<3> 基于BasicRF点对点通信的I/O端口控制。
<4> 呼吸灯的是程序现实。
<5> 简单通信协议的设计。
<6> 多状态切换的系统框架设计。
【解题参考思路】:大约归为七个步骤。
<1> 认真阅读题目,至少三遍以上, 把题目中的要点摘录至草稿纸上。
<2> 头脑中要初步形成总体的设计思路和清晰的实现步骤,最好能把基本的系统结构和应用逻辑勾勒过来,不然很难在短时间内完全解答该题目。
<3> 先设计一个单独的程序,实现呼吸灯的功能。呼吸灯的实现跟BasicRF点对点通信没有关系,但应该是本题的一个难点,你可以选择用定时器来实现PWM信号,也可以用普通延时函数来实现。用定时器会涉及一些寄存器的设置和中断的处理,所以,我采用了普通延时函数来实现,这也是一个比较快捷的方法。
<4> 再设计一个单独的程序,实现串口与RF无线之间的数据透传功能。也就是利用串口助手等工具在PC端通过串口向A节点发送数据,A节点收到后通过RF无线发送到B节点,B节点收到数据后,再通过串口发送给PC端并在另一个串口助手中显示出来。反之亦然。
注:看起来这里虽然多写了2个测试程序,但这是为了扫除题目中最大的两个技术障碍,使后面的应用程序开发的道路更顺畅平台。如果你对这两部分内容很熟练的话,这个2个测试程序就免了。
<5> 根据应用的具体要求和实现环境 设计点对点的通信协议。在这里我选择了32字节的数组作为无线传输的数据帧,其结构定义如下:
第0字节:系统命令字。
第1字节:数据域的有效长度。
第2字节~第31字节:数据域。
<6> 定义通信协议中系统命令字。本题选择状态机作为系统应用逻辑处理的基本思路,在这个步骤中实际上也把系统的具体切换状态确定了。 具体的命令字定义,大家可以参考后面的源码与注释。
<7> 按照系统设计思路和通信协议,设计具体的应用程序,并调试。
【其他资源】
<1> 参考代码可见:核心关键源码与注释
<2> HEX烧写代码下载:2019年国赛任务三题1-Zigbee节点盒
<3> HEX烧写代码下载:2019年国赛任务三题1-Zigbee模块