无线通信0号节点接收其他节点的ID号,并printf打印出来(含核心代码)_物联网挑战赛第四届(2020)第二题

简介: 无线通信0号节点接收其他节点的ID号,并printf打印出来(含核心代码)_物联网挑战赛第四届(2020)第二题

目录


题目

赛题

格式说明

计分规则

评分步骤

题目解析

核心代码


正文


题目


赛题


443.png

    如图所示,平台节点不安装天线,已知0号节点位于左上角,其他11个节点ID号随机(0<ID<255),参赛队需编写所有12个节点的代码,完成节点间的信息传递,并通过0号节点打印输出ID号未知的11个节点的ID号,以表明完成了节点间的数据通信。

       1) 12个节点只允许编写一份代码;

       2)本题开销指的是12个节点无线通信发送数据包的总和;

       3)代码中可通过宏TOS_NODE_ID 获取节点自身ID号;

       4)参赛队编写的和结果无关的printf 调试语句,必须在最终代码中注释掉,

以免造成最终结果输出错误;


格式说明


   1) Printf输出的格式为:标志位(ID)+11个ID号(十进制,空格隔开顺序不限,结尾应加上换行符“\n”以表明语句的完结)输出结果示例:ID135678 10 20 12 33 44

若0号节点输出的ID号个数低于11个,则只核对这几位的ID号的正确性;

若0号节点输出的ID号个数超过11个,则只会取前11个作为依据,并去掉重复和错误的ID号来计算得分。

       2)0号节点可重复输出结果,多次输出结果时评冗在予只云以u了m日人l山口

有ID标志位的行作为判分依据;


计分规则


本赛题满分为30分,其中正确性得分22分,开销得分8分;


       1)正确性得分:共22分,正确性得分不小于14分才可以获得开销分;正确性得分=2 ×mm为正确的ID号数量

       2)开销得分:共8分,开销超过200得分0分,小于200按如下公式计算:开销得分=8×30-"(200-nrn20nm >7)n为12个节点的开销总和


评分步骤


1)烧录Null程序,清空所有节点状态;

2)编译烧录参赛队代码(所有节点);

3)对12个节点进行Printf 监听并开始计时;

4)检测到0号节点输出ID标志位或10秒时间到停止评分,核对结果和开销,计算出得分;


题目解析


    12个节点编写一套代码,但据题意很明显0号节点与其他节点的代码不一样,0号节点只负责无线接收,而其他11个节点负责无线发包。


核心代码


主要是利用数据汇聚的知识点

这一部分是设置根节点与非根节点的

 event void Timer1.fired() {
        if (rootid == 0) {
            call RootControl.setRoot();         //设置位根节点
            rootid = TOS_NODE_ID;               //用宏定义将自己ID号存储在变量rootid中
            rms->rootid = rootid;
            rms->stop = stop;
            call Update.change(rms);            //?
        }
        if (TOS_NODE_ID != rootid && rootid != 0) {     //节点ID不等于0,并且rootid也不为0(rootid初始化位0)
            call RootControl.unsetRoot();               //设置为非根节点
            call Leds.led0On();
        }
        call Timer0.startPeriodic(2000);
    }

这一部分是只有根节点会相应的Receive.receive函数

event message_t* Receive.receive(message_t* msg, void* payload, uint8_t len) {      //Receive.receive只有根节点相应
        uint16_t flag = 0, i = 0;
        call Leds.led1Toggle();
        if (len == sizeof(EasyCollectionMsg))       //接收到的包的长度是否和节点结构体的长度一样
        {
            EasyCollectionMsg* btrpkt= (EasyCollectionMsg*)payload;
            for (i=0; i<count; i++) {               //判断是否是已接受的ID号,如果是,则flag==1;
                if (btrpkt->nodeid == nodes[i]) {
                    flag = 1;
                    break;
                }
            }
            if (flag == 0 && btrpkt->nodeid != 0) {                    //接收到的是新节点的id号
                nodes[count] = btrpkt->nodeid;  //加到nodes数组里面去
                count++;
            }
            if (count > 10) {                  //如果已经收集到11个ID号了
                stop = TRUE;
                for (i=0; i<11; i++) {
                    rms->data[i] = nodes[i];
                }
                rms->stop = stop;
                call Leds.led2On();
                call Update.change(rms);
            }
            flag = 0;
        }
        return msg;
    }
相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
10天前
|
存储 安全 物联网
C语言物联网开发之设备安全与代码可靠性隐患
物联网设备的C语言代码安全与可靠性至关重要。一是防范代码安全漏洞,包括缓冲区溢出和代码注入风险,通过使用安全函数和严格输入验证来预防。二是提高代码跨平台兼容性,利用`stdint.h`定义统一的数据类型,并通过硬件接口抽象与适配减少平台间的差异,确保程序稳定运行。
|
4月前
|
人工智能 物联网
【2022年无线通信和与物联网专场】中国工程院张平院士-AI使能6G演进与应用
中国工程院张平院士关于"AI使能6G演进与应用"的演讲摘要。
109 8
|
4月前
|
物联网 5G
【2022年无线通信和与物联网专场】东南大学尤肖虎教授-超高可靠、超低时延5G/6G移动通信基础理论研究与发展
东南大学尤肖虎教授在2022年无线通信和物联网专场中就超高可靠、超低时延的5G/6G移动通信基础理论研究与发展的讲座内容。
59 3
|
4月前
|
物联网 5G
【2022年无线通信和与物联网专场】北京大学焦秉立教授--同频同时全双工技术现状和展望
北京大学焦秉立教授在2022年无线通信和物联网专场中对同频同时全双工技术现状和未来展望的介绍,涵盖了全双工技术在5G移动通信中的应用及其对提高频谱效率和传输效率的重要性。
65 2
|
5月前
|
边缘计算 运维 安全
云上物联网边缘节点:重塑连接智能世界的桥梁
结语 云上物联网边缘节点作为物联网技术的重要组成部分,正以其独特的优势和潜力推动着物联网的快速发展。面对未来的机遇和挑战,我们需要不断创新和完善边缘节点的技术架构和应用模式,推动物联网技术的深度融合和广泛应用,为构建智慧社会贡献力量。
140 0
|
7月前
|
传感器 存储 监控
编写Arduino代码:构建物联网设备,实现上网行为管理软件对网络的实时监控
使用Arduino和ESP8266/ESP32等Wi-Fi模块,结合传感器监控网络活动,本文展示了如何编写代码实现实时监控并自动将数据提交至网站。示例代码展示如何连接Wi-Fi并检测网络状态,当连接成功时,通过HTTP POST请求将“Network activity detected.”发送到服务器。通过调整POST请求的目标URL和数据,可将监控数据上传至所需网站进行处理和存储。
208 0
|
20天前
|
物联网 5G 智能硬件
介绍频段、带宽、频率、调制、解调等基础术语,以及Wi-Fi、蓝牙、ZigBee、UWB、LTE、5G等常见无线通信技术
在无线通信领域,专业术语是理解技术的关键。本文详细介绍了频段、带宽、频率、调制、解调等基础术语,以及Wi-Fi、蓝牙、ZigBee、UWB、LTE、5G等常见无线通信技术,还涵盖了信号传播、信道容量、信噪比等深入概念。通过本文,你将掌握无线技术的核心知识,成为半个无线专家。
42 4
|
3月前
|
边缘计算 自动驾驶 物联网
Massive MIMO技术在5G中的应用:开启无线通信的新篇章
Massive MIMO技术在5G中的应用:开启无线通信的新篇章
111 1
|
4月前
|
定位技术
|
4月前
|
传感器 安全 大数据

相关产品

  • 物联网平台