前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >NRF24L01多通道通讯

NRF24L01多通道通讯

作者头像
DS小龙哥
发布于 2022-01-07 05:49:43
发布于 2022-01-07 05:49:43
7450
举报

nRF24L01 是一款工作在 2.4~2.5GHz 世界通用 ISM 频段的单片无线收发器芯片。 NRF24L01 单通道实现通讯很简单,只要收发方地址设置正确,就能正常通讯。 但是 NRF24L01 多通道通信,有很多误区。官网的数据手册描述的也是模糊不清,经过我 不断的调试和收集资料,有了点小成果。 一: NRF24L01 支持多通道收发 对于这个多通道有很多理解,(特别和啊海的理解冲突), 现在实验证明: NRF24L01 只有通道 0 可以发射数据和接收,通道 12345 只能接收数据。 而且通道 2345 的高字节 bit39~8 和地址 1 共用。设置为发送模式时不需要选择通道,因为 硬件默认设置发送模式下为通道 0 发送。 正常通讯的结构是 6 个发射机发数据给 1 个接收机接收。 二: RX --TX 地址设置 一个芯片最多可以设置 6 个接收地址。 所以多对一发送比较简单。 但是想要一对多发送的话 就只能一个一个发送了。 nRF24L01 配置为接收模式时可以接收 6 路不同地址,相同频率 的数据 每个数据通道拥有自己的地址, 并且可以通过寄存器来进行分别配置-。 每一个数据 通道的地址是通过寄存器 RX_ADDR_Px 来配置的,正常通讯情况下不允许不同的数据通 道设置完全相同的地址。 u8 TX_ADDRESS0[TX_ADR_WIDTH]={0x00,0xc2,0xc2,0xc2,0xc2}; //发送地址(地址要和接收通道地址一致) u8 RX_ADDRESS0[RX_ADR_WIDTH]={0x00,0xc2,0xc2,0xc2,0xc2}; //接收0 通道地址(地址要和发射地址一致) u8 RX_ADDRESS1[RX_ADR_WIDTH]={0x01,0xc2,0xc2,0xc2,0xc2};//接收1 通道地址 u8 RX_ADDRESS2[RX_ADR_WIDTH]={0x02,0xc2,0xc2,0xc2,0xc2,};//接收2 通道地址 u8 RX_ADDRESS3[RX_ADR_WIDTH]={0x03,0xc2,0xc2,0xc2,0xc2,};//接收3 通道地址 u8 RX_ADDRESS4[RX_ADR_WIDTH]={0x04,0xc2,0xc2,0xc2,0xc2,};//接收4 通道地址 u8 RX_ADDRESS5[RX_ADR_WIDTH]={0x05,0xc2,0xc2,0xc2,0xc2}; //接收5 通道地址 上面地址标记为蓝色的可以可以随便修改, 其他的被固化了, 不能修改, 写地址时是低位先 写 要想成功通讯的条件: 1 接收地址和发射地址必须一致 2 无线模块 0x05 寄存器的值必须一致(发射/接收这2 模块) 3 无线模块从 0x00 寄存器往后的(各个 bit 位的功能)去看下手册 三:多个 NRF24L01 组网 正常情况下, NRF24L01 只能一对 6 进行通信, 如果超过 6 个模块进行通信就无法实现。 但是可以通过轮询来区分: 比如一个空间内要实现 100 个温度实时监测,就可以主机用轮询的方式来进行通信, 从机地址都可以设置一样, 通过主机给从机发命令, 让指定从机发送数据回来。 在同一 时间内只能是一个从机和主机进行通信,因为多个节点同时发数据有问题,会造成 24L01 芯片死机(我调试时碰到过)。 在用 STM32F103ZET6 板子调试时,发现 24L01 的几个问题: 1. 作为发送时,和容易出现发送-----但是不判断返回值强行发送却 能发送成功。 2、无论发送与接收,数据传输速率很低,实时性很差,反应很迟钝。 3、无论发送与接收,稳定性很差,模块时而检测到时而检测不到;时而接受到数据 ,时而 接收不到数据----不清楚是代码问题还是硬件问题,个人觉得是硬件问题。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015/02/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Selenium+TestNG实战-6 自动化实现发一篇文章
前面我们实现了基本框架的搭建过程,把第一条自动化登录的脚本进行了业务Action和测试脚本进行分层或者分离,使用了POM思想去构造首页,测试类利用工厂类进行元素初始化操作。群里有朋友提醒,在第五篇中HomePage.java每个方法可以不用写返回类型,建议全部改成void,这个确实正确,因为测试脚本类使用了PageFactory类,所以页面类不需要返回方法。如果要写返回方法,测试类不使用PageFactory类,而是直接把每个页面类先创建一个实例对象,然后去调用实例方法。所以,这里我们采用页面工厂类,记得把前面return方法改成void。本篇来介绍如何把发文章这个用例自动化实现。
凯哥Java
2019/06/30
1.1K0
SeleniumWebDriver如何自动化可视化验证图表和绘图(如折线图,饼图,柱状图)
前言:图表(Chart)的自动验证是测试自动化的最大挑战之一, 而在我们的应用程序中,我们有大量的图表,接下来将展示我是如何自动化Chart,或许给你一些新的想法。
软测小生
2019/10/10
1.7K0
SeleniumWebDriver如何自动化可视化验证图表和绘图(如折线图,饼图,柱状图)
TestNG,你想要的都在这里
一.返回类型是Iterator<Object[]>,不用管有多少组测试数据,可以抽取出来以map的id为参数作为公用的提取数据方法。
软测小生
2019/07/22
1.1K0
python自动化笔试面试题(附带答案)
答:Selenium是一个开源的web自动化测试框架,支持多种编程语言开发自动化测试脚本,支持跨浏览器平台进行测试
用户7886150
2021/01/15
1.8K0
Selenium中Page Object设计模式
Page Object(页面对象)模式,是Selenium实战中最为流行,并且被做自动化测试同学所熟悉和推崇的一种设计模式之一。在设计测试时,把页面元素定位和元素操作方法按照页面抽象出来,分离成一定的对象,然后再进行组织。
软件测试君
2019/08/22
1.9K0
TestNG环境搭建(一)
在Java的编程语言中,单元测试框架早期主要使用的为Junit,后面产生了TestNG的单元测试框架,那么具体怎么理解TestNG测试框架了?TestNG测试框架可以理解为下一代单元测试框架。或者更加官方的说,就是:NG代表的是下一代的含义,设计TestNG的灵感来自Junit的设计思想,单元测试框架可用于单元测试,以及自动化测试(UI自动化测试和接口自动化测试),以及集成测试和端到端的测试。TestNG在很短的时间内就得到了普及(目前也是各个公司招聘测试必须要具备的单元测试框架之一的一个框架)。它主要使用Java的注解来配置和编写测试用例。在TestNG的测试框架中,具备了前置测试条件和后置测试条件的处理,依赖性测试,测试分组性的测试,参数化的测试,多线程执行,以及可以和Allure整合后的测试报告,当然它本身就内置了测试报告。TestNG主要是通过XML配置文件来指定被需要执行的测试套件(测试类以及测试方法),默认的情况下,文件名称为testng.xml,当然我们可以自定义成其他的名字,但是我个人建议还是使用默认的名字比较好,这样更加具备通用型。TestNG测试框架的特点可以具体描述为:
无涯WuYa
2021/02/05
7260
一篇文章学会PageFactory模式
我们已经学习了Page Object设计模式,优势很明显,能更好的体现java的面向对象思想和封装特性。但同时也存在一些不足之处,那就是随着这种模式使用,随着元素定位获取,元素定位与页面操作方法都在一个类里维护,会造成代码冗余度过高。
软件测试君
2019/08/29
2.2K0
什么是TestNG?
对于大多数刚接触自动化测试同学来说,Selenium是大家接触最早的Web UI自动化测试框架,Selenium是一个开源的和便携式的自动化软件测试工具,用于测试Web应用程序有能力在不同的浏览器和操作系统运行。Selenium其实是一套工具,帮助测试者更有效地基于Web的应用程序的自动化。
互联网金融打杂
2022/08/01
1.5K0
什么是TestNG?
selenium-webdriver|12 page-object模式介绍
PageObject 就是页面对象,是一种程序设计模式,将面向过程转变为面向对象,将测试对象及单个的测试步骤封装在每个Page对象中,以page为单位进行管理。
测试邦
2019/08/29
1K0
单篇长文TestNG从入门到精通
TestNG是Test Next Generation的缩写,它的灵感来自于JUnit和NUnit,在它们基础上增加了很多很牛的功能,比如说:
dongfanger
2022/05/09
1.7K0
单篇长文TestNG从入门到精通
《手把手教你》系列基础篇(七十六)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 下篇(详解教程)
今天这一篇宏哥主要是结合实际工作中将遇到的测试场景和前边两篇学习的知识结合起来给大家讲解和分享一下,希望以后大家在以后遇到其他的测试场景也可以将自己的所学的知识应用到测试场景中。
北京-宏哥
2022/04/27
4920
《手把手教你》系列基础篇(七十六)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 下篇(详解教程)
Java单元测试——框架(三)——testNG
安装:https://www.cnblogs.com/xusweeter/p/6559196.html,将org.testng.eclipse.updatesite.zip 拷贝到%ECLIPSE_HOME%\dropins,建立TestNG Class
顾翔
2020/08/31
4780
Java单元测试——框架(三)——testNG
Selenium+TestNG实战-7 多个tab之间driver的切换
本篇接着前面内容,主要学习driver如何在同一个浏览器的两个不同tab进行切换,然后如何判断我们创建的文章就是我们新建的。
凯哥Java
2019/06/30
1.9K0
TestNG用法概括
应用场景:将通用的功能抽取并封装起来,在方法中使用注解@BeforeSuite和@AfterSuite,在测试类中继承这个类,测试类在运行前会先运行@BeforeSuite注解的方法,测试类在运行后会运行@AfterSuite注解的方法
桑鱼
2020/04/14
8800
TestNG用法概括
Appium系列|常见API使用
这个小节主要会来介绍下Appium常见的API使用。上面几节课已经介绍了一些API了如点击,通过定位方式定位到控件后调用click方法就可以对控件进行点击,还有获取控件的文本,一样是定位到控件后调用getText方法就可以获取控件的文本。
测试邦
2019/07/24
1K0
Appium系列|常见API使用
Java自动化测试(web自动化测试框架 28)
http://120.78.128.25:8765/Admin/Index/login.html
zx钟
2020/09/14
2.5K0
建立数据驱动,关键字驱动和混合Selenium框架这些你了解吗
Selenium框架是一种代码结构,用于简化代码维护和提高代码可读性。框架涉及将整个代码分成较小的代码段,以测试特定的功能。
用户7466307
2020/06/24
1K0
TestNG测试框架初探
● TestNG是一个测试框架,其灵感来自Junit和NUnit的,但引入了一些新功能,使其功能更强大,使用更方便。
软测小生
2020/10/30
1.1K0
TestNG测试框架初探
《手把手教你》系列基础篇(七十二)-java+ selenium自动化测试-框架设计基础-TestNG简单介绍(详解教程)
前面文章细心的小伙伴会发现宏哥在运行测试用例的时候有的是在main方法下,而有的不需要用main方法去执行用例,那么为什么有的就不需要在main方法下就能够成功运行测试用例了。这就需要单元测试框架的支持,这篇宏哥就来简单介绍TestNG单元测试框架的安装和基本使用。
北京-宏哥
2022/03/10
1.9K0
《手把手教你》系列基础篇(七十二)-java+ selenium自动化测试-框架设计基础-TestNG简单介绍(详解教程)
Appium系列|ID定位方式
我们先来介绍下控件定位。Appium提供了多种定位方式,最常见使用的是ID这种定位方式,如果控件有ID尽量使用ID来进行定位,因为有时候控件布局变化了,只要 ID不发生变化就有可能定位方式不需要修改。
测试邦
2019/07/24
1.1K0
Appium系列|ID定位方式
相关推荐
Selenium+TestNG实战-6 自动化实现发一篇文章
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档