[原创] 2017年物联网全国技能大赛中职国赛Zigbee点对点通信题目解析

[复制链接]
3133|31
 楼主 | 2017-12-16 18:00 | 显示全部楼层 ||阅读模式
本帖最后由 ohy3686 于 2017-12-17 12:49 编辑

2017年物联网全国技能大赛中职国赛Zigbee点对点通信题目解析

1、缘起
      昨天有位成都的学生网友跟我交流了一道2017年全国职业技能大赛中职组“物联网技术应用与维护”的任务五题目1,关于Zigbee点对点通信的。仔细看了一下,并不是那么的容易,所以在这里分享一下实现过程。如果有正在备赛的中职朋友,可以参考一下。

2、题目




3、编码实现
    在比赛中提供了一个基于BasicRF的工程代码,只要在里面补充部分代码就可以了。在工程代码中,有一个“re_set.c”的文件,这个是主节点的代码,另外一个“slave_node.c”的文件,是从节点的代码。
    主节点代码文件"“re_set.c"的实现:
  1. void main()
  2. {
  3.   Init();
  4.   RFInit();
  5.   while(1)
  6.   {
  7.     if(key1==0)
  8.     {
  9.       DelayMS(10);
  10.       if(key1==0)
  11.       {
  12.         while(key1==0);
  13.         P1=0x00;
  14.         mode[0]++;
  15.         switch(mode[0])
  16.         {
  17.          
  18.           case 0x30:   break;
  19.             P1=0x00;
  20.           //补码1001 1100的原码为:1110 0100
  21.           case 0x31:   
  22.             LED4 = 1;
  23.             LED3 = 1;
  24.             LED6 = 1;
  25.             LED5 = 0;
  26.             break;
  27.          
  28.           //补码1010 0110的原码为:1101 1010
  29.           case 0x32:   
  30.             LED4 = 1;
  31.             LED3 = 1;
  32.             LED6 = 0;
  33.             LED5 = 1;
  34.             break;
  35.          
  36.           //补码1011 0000的原码为:1101 0000
  37.           case 0x33:   
  38.             LED4 = 1;
  39.             LED3 = 1;
  40.             LED6 = 0;
  41.             LED5 = 1;
  42.             break;
  43.         }
  44.         basicRfSendPacket(0x0002, mode, 1);
  45.         if(mode[0]>=0x34)
  46.         {
  47.           mode[0]=0x30;
  48.         }
  49.       }
  50.     }
  51.   }
  52. }
  53. //↑↑↑↑↑↑↑请在选手此区域内补充代码↑↑↑↑↑↑↑</font>
复制代码

    从节点代码文件"“slave_node.c"的实现:
  1. void main()
  2. {
  3.   Init();
  4.   RFInit();
  5.   while(1)
  6.   {
  7.     if(basicRfPacketIsReady())
  8.     {
  9.       uint8 Rx[5]=0x00;
  10.       //basicRfReceive(Rx,5,NULL);
  11.       basicRfReceive(Rx,1,NULL);
  12.       P1=0x00;
  13.       switch(Rx[0])
  14.       {
  15.       case 0x30:   
  16.         P1=0x00;
  17.         break;
  18.       //补码1001 1100的原码为:1110 0100
  19.       case 0x31:   
  20.         LED4 = 0;
  21.         LED3 = 1;
  22.         LED6 = 0;
  23.         LED5 = 0;
  24.         break;
  25.       //补码1010 0110的原码为:1101 1010
  26.       case 0x32:   
  27.         LED4 = 1;
  28.         LED3 = 0;
  29.         LED6 = 1;
  30.         LED5 = 0;
  31.         break;
  32.         //补码1011 0000的原码为:1101 0000
  33.       case 0x33:   
  34.         LED4 = 0;
  35.         LED3 = 0;
  36.         LED6 = 0;
  37.         LED5 = 0;
  38.         break;
  39.       }
  40.     }
  41.   }
  42. }
  43. //↑↑↑↑↑↑↑请在选手此区域内补充代码↑↑↑↑↑↑↑</font>
复制代码

4、关键点
<1> 补码与原码的换算关系
      对于正数原码 = 补码
      对于负数原码 = 补码(除了符号位)的各个位取反,加1
      补码1001 1100的原码为:1110 0100
      补码1010 0110的原码为:1101 1010
      补码1011 0000的原码为:1101 0000

<2> 对题目的理解非常关键,刚看到题目的时候我也懵B了。四个LED怎么表示8个数据位呢?
     主节点和从节点分别有4个LED,一共8个LED分别表示8个数据位。
     1用LED亮表示,0用LED灭表示。
     数据依次从高到低排列:主节点的D4  D3  D6  D5,从节点的D4  D3  D6  D5
     例如:1110 0100用二进制表示,就是:
     主节点的D4:
     主节点的D3:
     主节点的D6:
     主节点的D5:灭
     从节点的D4:灭
     从节点的D3:
     从节点的D6:灭
     从节点的D5:灭
     理解这个很重要,不然这个题目是做不出来的。

<3> 点对点通信的数据发送和数据接收的两个函数的应用。
     //将数据mode的一个字节发送到目标地址为0x0002的板子上。
    basicRfSendPacket(0x0002, mode, 1);
     //将板子接收到的数据读取1个字节放到Rx数组中。
    basicRfReceive(Rx,1,NULL);

4、工程代码下载
   完成工程代码下载(百度云盘):https://pan.baidu.com/s/1bpxxNqf

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册 手机登录

x
| 2017-12-16 18:53 | 显示全部楼层
| 2017-12-17 22:55 | 显示全部楼层
zigbee是点对点通信的首选。
| 2017-12-17 22:55 | 显示全部楼层
描述的非常清晰。
| 2017-12-17 22:56 | 显示全部楼层
| 2017-12-17 23:02 | 显示全部楼层
原来是大学教师,怪不得这么厉害呢。
| 2017-12-17 23:02 | 显示全部楼层
楼主对zigbee理解到位了。
| 2017-12-17 23:02 | 显示全部楼层
现在中职赛都这么高端的玩法了。
 楼主 | 2017-12-18 12:26 | 显示全部楼层
biechedan 发表于 2017-12-17 23:02
现在中职赛都这么高端的玩法了。

别说中职学生了,放在高职甚至本科,能做的也是少数人。
 楼主 | 2017-12-18 12:27 | 显示全部楼层
gygp 发表于 2017-12-17 22:55
zigbee是点对点通信的首选。

自组网才是Zigbee的优势所在。
 楼主 | 2017-12-18 12:27 | 显示全部楼层
chenci2013 发表于 2017-12-17 23:02
楼主对zigbee理解到位了。

我感觉才刚刚入门呀。
| 2017-12-18 15:09 | 显示全部楼层
不错
| 2017-12-18 16:30 | 显示全部楼层
感谢分享
 楼主 | 2017-12-18 20:52 | 显示全部楼层

对大家有用就好...
| 2017-12-19 16:27 | 显示全部楼层
都开始开发人工智能了。
| 2017-12-19 17:04 | 显示全部楼层

感谢分享;
| 2017-12-20 09:17 | 显示全部楼层
非常不错
| 2017-12-20 13:05 | 显示全部楼层
厉害厉害!
| 2017-12-22 08:49 | 显示全部楼层
是我们落后了
| 2017-12-22 15:59 | 显示全部楼层
物联网全国技能大赛含金量怎么样?
扫描二维码,随时随地手机跟帖
*滑动验证:
您需要登录后才可以回帖 登录 | 注册 手机登录

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册 手机登录
高级模式

论坛热帖

分享 快速回复 返回顶部 返回列表