zoukankan      html  css  js  c++  java
  • 【技能大赛真题】2019年物联网国赛任务三题1-无线通信系统

    【技能大赛真题】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> 多状态切换的系统框架设计。

        <参考资料01>:基于BaiscRF点对点通信的灯光控制

        <参考资料02>:基于BaiscRF点对点通信的串口收发

        <参考资料03>:Zigbee模块XMF09B国赛兼容版资料汇总

        <参考资料04>:BasicRF点对点无线通信的应用开发核心要点

        <参考资料05>:BasicRf点对点与Z-Stack组网国赛官方提供API函数汇总

        <参考资料06>:十大传感器模块的接口电路与API函数资料汇总

    【解题参考思路】:大约归为七个步骤。

        <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模块

  • 相关阅读:
    [Effective JavaScript 笔记]第54条:将undefined看做“没有值”
    [Effective JavaScript 笔记]第53条:保持一致的约定
    UDP打洞原理介绍
    Uboot启动分析之Start.S
    MMU
    linux_shell
    SSH2配置
    线程同步
    C#线程基础
    客户端服务器通讯常用的一种方法——Marshal类
  • 原文地址:https://www.cnblogs.com/ALittleBee/p/11199572.html
Copyright © 2011-2022 走看看