nRF24L01 -如betway何工作,Arduino接口,代码,原理图

在这个Arduino教程中,我们将学习关于nRF24L01收发模块的一切,并使用两个nRF24L01收发模块在两个Arduino板之间进行无线通信。你可以观看下面的视频或阅读下面的书面教程。

概述

为了解释无线通信,我们将举两个例子,第一个例子是将一个简单的“Hello World”消息从一个Arduino发送到另一个,在第二个例子中,我们将有一个Arduino板之间的双向通信,使用第一个Arduino上的操纵杆控制第二个Arduino上的伺服电机,反之,使用第二个Arduino上的按钮控制第一个Arduino上的LED。

NRF24L01收发模块-如何工作betway

让我们仔细看看NRF24L01收发模块。它使用2.4 GHz频带,波特率从250kbps到2mbps。如果在开放空间使用,波特率较低,其范围可达100米。

NRF24L01收发器模块

该模块可以使用125个不同的通道,这使得在一个地方有125个独立工作的调制解调器网络成为可能。每个频道最多可以有6个地址,或者每个单元可以最多可同时与6台其他设备进行通信

渠道和地址的工作原理

该模块在传输过程中功耗仅为12mA左右,甚至比单个LED还要低。这个模块的工作电压在1.9到3.6V之间,好在其他的引脚可以承受5V逻辑,所以不用任何逻辑电平转换器就可以轻松的连接到Arduino上。

NRF24L01收发器模块引脚连接

其中三个引脚是用于SPI通信的,它们需要连接到Arduino的SPI引脚,但请注意,每个Arduino板有不同的SPI引脚。CSN和CE引脚可以连接到Arduino板上的任何数字引脚,用于设置模块处于待机模式或主动模式,以及传输模式和命令模式之间的切换。最后一个引脚是一个不需要使用的中断引脚。

NRF24L01模块有几个变体。最受欢迎的是带有机载天线的那种。这使模块更加紧凑,但另一方面,降低了传输距离约100米。

各种模块基于NRF24L01芯片

第二个变化,而不是车载天线,它有一个SMA连接器,我们可以连接一个鸭式天线,以获得更好的传输范围。

这里显示的第三种变体,除了duck天线外,它还有一个RFX2401C芯片,包括巴勒斯坦权力机构(功率放大器)和采用多次(低噪声放大器)。这放大了NRF24L01信号,使其在开阔空间的传输范围达到1000米。

NRF24L01模块引出线

这里详细介绍了NRF24L01引脚以及NRF24L01+PA/LNA模块。

NRF24L01引脚和NRF24L01+PA LNA.png

这两个模块,NRF24L01和NRF24L01+ PA/LNA有相同的引脚,所以我们可以在我们的电路中以相同的方式连接它们。

线路图

下面是我们需要如何将NRF24L01模块连接到Arduino板。

NRF24L01和Arduino教程电路原理图

正如我已经提到的,每个Arduino板有不同的SPI引脚,所以在连接模块到你的Arduino板时要记住这一点。

Arduino SPI针

你可以从下面的链接获得这个Arduino教程所需的组件:

必威外围提钱披露:这些是附属链接。作为一个亚马逊助理,我从合格的购买中赚取。

Arduino和NRF24L01代码

一旦我们将NRF24L01模块连接到Arduino板,我们就可以为发射器和接收器制作代码了。

首先,我们需要下载并安装RF24图书馆这样编程就不那么困难了。

以下是无线通信的两个代码,下面是它们的说明。

发射机代码

/* * Arduino Wireless Communication Tutorial * Example 1 - Transmitter Code * * by Dejan Nedelkovski, www.bet188官方网站HowToMechatronics.com * * Library: TMRh20/RF24, https://github.com/tmrh20/RF24/ */ #include  #include  #include 
         

接收代码

/**Arduino无线通信教程*示例1-接收器代码**,作者:Dejan Nedelkovski,www.HowToMechatronics.com**库:TMRh20/RF24,https://githbet188官方网站ub.com/tmrh20/RF24/ */#包括#包括#包括RF24无线电(7,8);//CE,CSN常量字节地址[6]=“00001”;void setup(){Serial.begin(9600);radio.begin();radio.openReadingPipe(0,地址);radio.setPALevel(RF24_PA_MIN);radio.startListening();}void loop(){if(radio.available()){char text[32]=“”;radio.read(&text,sizeof(text));Serial.println(text);}

说明:

因此,我们需要包含基本SPI和新安装的RF24库,并创建一个RF24对象。这里的两个参数是CSN和CE引脚。

RF24电台(7、8);/ / CE、CSN

接下来,我们需要创建一个字节数组,它将表示地址,或所谓的管道,这两个模块将通过它进行通信。

Const字节地址[6]= "00001";

我们可以将这个地址的值更改为任何5个字母的字符串,这样就可以选择要与哪个接收器对话,所以在我们的例子中,接收端和发送端都有相同的地址。

在设置部分中,我们需要初始化radio对象,并使用radio. openwritingpipe()函数设置我们将发送数据的接收器地址,即我们之前设置的5个字母字符串。

radio.openWritingPipe(地址);

在另一端,在接收端,我们使用radio.setReadingPipe()函数设置相同的地址,通过这种方式,我们启用了两个模块之间的通信。

radio.openReadingPipe(0,地址);

然后使用radio.setPALevel()函数设置功率放大器的电平,在本例中,我会将其设置为最小值,因为我的模块彼此非常接近。

radio.setPALevel (RF24_PA_MIN);

注意,如果使用更高的电平,则建议在模块的GND和3.3V之间使用旁路电容,以便在运行时具有更稳定的电压。

接下来是radio.stopListening()函数,它将模块设置为发送器,另一方面是radio.startListening()函数,它将模块设置为接收器。

//在发射机radio.stopListening();
//在Receiver radio.startListening();

在传送器的循环部分,我们创建了一个字符数组,并将消息“Hello World”分配给该数组。我们将使用radio.write()函数将该消息发送给接收器。这里的第一个参数是我们想要发送的变量。

void loop(){const char text[]=“Hello World”;radio.write(&text,sizeof(text));delay(1000);}

通过在变量名前使用" & ",我们实际上设置了一个变量的指示,该变量存储我们想要发送的数据,并使用第二个参数,我们设置了想要从该变量获取的字节数。在这种情况下,sizeof()函数获取字符串" text "的所有字节。在节目的最后,我们会增加1秒的延迟。

另一方面,在接收器的环路部分,使用radio.available()函数检查是否有数据要接收。如果这是真的,首先我们创建一个由32个元素组成的数组,称为“text”,我们将在其中保存传入的数据。

Void loop() {if (radio.available()) {char text[32] = "";收音机。读(之外,sizeof(文本));以(文本);}}

使用radio.read()函数,我们读取数据并将其存储到“text”变量中。最后,我们只需在串行监视器上打印文本。因此,一旦我们上传了这两个程序,我们可以在接收器上运行串行监视器,我们会注意到“Hello World”信息每秒都会打印出来。

故障排除

值得注意的是电源噪声是人们在尝试与NRF24L01模块成功通信时遇到的最常见问题之一。通常,射频电路或射频信号对电源噪声很敏感。因此,在电源线上安装一个去耦电容器总是一个好主意。电容器可以是10uF到100uF之间的任意值。

NRF24L01故障排除-去耦电容器和外部电源

另外一个常见的问题是Arduino板的3.3V引脚不能总是为NRF24L01模块提供足够的电源。因此,使用外部电源为模块供电也是一个好主意。

Arduino无线双向通信,两个NRF24L01模块


让我们看第二个示例,两个Arduino板之间的双向无线通信。以下是电路示意图:

Arduino无线通信NRF24L01电路原理图教程

你可以从下面的链接中获得这个例子所需的组件:

必威外围提钱披露:这些是附属链接。作为一个亚马逊助理,我从合格的购买中赚取。

nRF24L01源代码


这里是两个代码,下面是它们的描述。

发射机代码

/* * Arduino Wireless Communication Tutorial * Example 2 - Transmitter Code * * by Dejan Nedelkovski, www.bet188官方网站HowToMechatronics.com * * Library: TMRh20/RF24, https://github.com/tmrh20/RF24/ */ #include  #include  #include  #define led 12 RF24 radio(7,8);// CE, CSN const byte addresses[][6] = {"00001", "00002"};boolean buttonState = 0;void setup() {pinMode(12, OUTPUT);radio.begin ();radio.openWritingPipe(地址[1]);/ / 00002电台。openReadingPipe(1、地址[0]);/ / 00001 radio.setPALevel (RF24_PA_MIN);} void loop() {delay(5); radio.stopListening(); int potValue = analogRead(A0); int angleValue = map(potValue, 0, 1023, 0, 180); radio.write(&angleValue, sizeof(angleValue)); delay(5); radio.startListening(); while (!radio.available()); radio.read(&buttonState, sizeof(buttonState)); if (buttonState == HIGH) { digitalWrite(led, HIGH); } else { digitalWrite(led, LOW); } }

接收代码

/* * Arduino Wireless Communication Tutorial * Example 2 - Receiver Code * * by Dejan Nedelkovski, www.bet188官方网站HowToMechatronics.com * * Library: TMRh20/RF24, https://github.com/tmrh20/RF24/ */ #include  #include  #include  #include  #define button 4 RF24 radio(7,8);// CE, CSN const byte addresses[][6] = {"00001", "00002"};伺服myServo;boolean buttonState = 0;void setup() {pinMode(button, INPUT);myServo.attach (5);radio.begin ();radio.openWritingPipe(地址[0]);/ / 00001电台。openReadingPipe(1、地址[1]); // 00002 radio.setPALevel(RF24_PA_MIN); } void loop() { delay(5); radio.startListening(); if ( radio.available()) { while (radio.available()) { int angleV = 0; radio.read(&angleV, sizeof(angleV)); myServo.write(angleV); } delay(5); radio.stopListening(); buttonState = digitalRead(button); radio.write(&buttonState, sizeof(buttonState)); } }

这里与前面示例的不同之处在于,我们需要为双向通信创建两个管道或地址。

常量字节地址[][6]={“00001”、“00002”};

在设置部分,我们需要定义两个管道,并注意第一个Arduino的写入地址需要是第二个Arduino的读取地址,反之亦然,第一个Arduino的读取地址需要是第二个Arduino的写入地址。

//在发射机radio.openWritingPipe(地址[1]);/ / 00001电台。openReadingPipe(1、地址[0]);/ / 00002
//在接收器处。openWritingPipe(地址[0]);//00002无线电。openReadingPipe(1,地址[1]);//00001

在使用radio.stopListening()函数的循环部分中,我们将第一个Arduino设置为发射机,读取并将操纵杆的值从0映射到180,然后使用radio.write()函数将数据发送到接收机。

radio.stopListening ();int potValue = analogRead(A0);int angleValue = map(potValue, 0, 1023, 0, 180);收音机。写(&angleValue sizeof (angleValue));

另一方面,我们使用radio.startListening()函数将第二个Arduino设置为接收器,并检查是否有可用数据。当有数据可用时,我们将读取它,将它保存到“angleV”变量,然后使用该值来旋转伺服电机。

radio.startListening ();if (radio.available()) {while (radio.available()) {int angleV = 0;收音机。读(&angleV sizeof (angleV));myServo.write (angleV);}

接下来,在发送端,我们将第一个Arduino设置为接收端,用一个空的“while”循环等待第二个Arduino发送数据,这是按钮状态的数据,无论是否被按下。如果按下按钮,LED灯就会亮起来。这些过程不断重复,两个Arduino板都在不断发送和接收数据。

更多NRF24L01和Arduino示例

NRF24L01模块是Arduino爱好者的必备组件。我已经使用NRF24L01模块在许多Arduino项bet188me目.在这里我将列出我使用这些模块的所有项目。bet188me

每个项目/教程都详细说明了如bet188me何使用NRF24L01模块,包括电路图,改进的代码实现更好的通信等等。

DIY Arduino RC发射器- Arduino机器人汽车无线控制
DIY Arduino RC发射器示例

这就是本教程的全部内容,我希望你喜欢它并学到了一些新的东西。一如既往,请在下面的评论部分自由提问。

对“nRF24L01 -如何工作,Arduino接口,代betway码,原理图”的102个思考

  1. 谢谢你分享这个非常有用的教程。你能帮我用6个电位器在一个方向上控制多个伺服器(我需要控制6个伺服器)的代码吗?

    回复
  2. 嗨,如何为特定的管道发送数据并从它得到答案。
    主人有一个地址,如果发送数据给所有的奴隶,它是什么?
    我不会有一个主机从两个从机获取数据。

    回复
    • 嗨,德扬先生,
      我已经用两个Arduino NANOs实现了这个项目。
      最初它并没有工作,但在几个小时的检查后,我得到了一个非常重要的通知,并想与你所有的追随者分享它。为了使2个NANOs无线连接和通信,必须使用辅助SPI引脚而不是D11, D12和D13。
      我终于让他们像做梦一样工作了。非常感谢您分享您可爱的项目。干杯

      回复
  3. 你的教程太棒了。我非常喜欢你展示它们的方式。非常清楚,非常有用。跟上,伙计!!

    回复
  4. 嗨。很好的解释。问吗?如果连续移动操纵杆,系统会是双工的吗?在这种情况下,程序将一直在while()函数中。

    回复
  5. 嗨,德扬
    我已经成功与mega 2560和uno进行了沟通。但我的问题是这种联系不能持续很长时间Resetting on both boards Is also not working…When I disconnect two boards and connect them to power supply again its working for few seconds. But working time Is different in each case..... .当我断开两块板并连接到电源时,它工作了几秒钟你能帮我一下吗

    回复
    • 大家好!

      首先,我要祝贺德扬,因为他的全套芭蕾舞像斯比迪一样精彩,在我面前说吧!

      第二,在使用操纵杆两到三次后,我发现了同样的功能故障问题,似乎这是使用非原装uno的正当原因。
      当我把它换成真正的Arduino uno时,问题就解决了……

      回复
  6. 大家好!

    我能够使这个项目工作。然而,我面临一个问题。每当我移动两块Arduino板(每个板上都连接有NRF24L01模块)时,信号就会丢失。就好像模块只能在不到一米的范围内工作?除非我错过了教程中的内容。

    提前感谢您的回复。

    回复
  7. 谢谢你的指导。

    您对如何使用笔记本电脑而不是第二台arduino建立连接和接收数据有何想法?

    谢谢

    回复
  8. 你好,德扬Nedelkovski
    我读了“Arduino无线通信- NRF24L01教程”。它对初学者非常有用。由于很多。
    我的问题是,如何找到“nRF24L01.h”文件?

    你有nRF24L01.h的链接吗?
    谢谢。

    回复
  9. 你好!很棒的视频!谢谢上传,我有一个问题,我的模块不能接收任何数据(我使用arduino nano作为接收,uno作为接收)。我检查了线路很多次,我尝试了100种方法让它工作,但我还没有成功。
    这个库是否有机会检查arduino是否可以与rf24通信?我在RF24.h搜索,我发现一个bool ChipIsConnected(),但它不返回任何东西。

    回复
    • 我也面临同样的问题,你有什么进展吗?
      我尝试过使用10微法拉电容,但没有任何改变。我仍然没有收到任何东西。

      回复
      • 可能是两个模块之间的距离…由于(PA_MIN)的原因,最大距离几乎为10 cm。。试着让它们彼此靠近,或者用“低”代替“低”。如果连接了电容器,只需在两个草图中删除该线即可。
        祝你好运

        回复
  10. 你好,非常感谢你的例子,但我有一个小问题,也许关于射频信号。我使用uno r3作为收发器,nano作为接收器,当我上传代码时,数据正常发送和接收,但30秒后它停止发送和接收数据,你能帮我吗

    回复
  11. 您的示例非常有用,但我正在使用getting started示例与nrf24L01通信,但我接收的是垃圾值,而不是hello world。我能做什么?

    回复
  12. 你好,很棒的教程,谢谢!有没有可能从另一个来源进行传输,比如我自己的带有2.4GHz天线的传感器,传输模拟频率。然后只用一个Arduino和一个nrf24I01来接收和配置数据?或者这个模块只与另一个nrf24I01通信?

    回复
  13. 感谢这样一个伟大的教程,我使用这些远程版本得到大约400米,使用外部电源创建一个远程门铃与回复功能。

    回复
  14. 非常感谢您的努力,请问如果我使用的是HC 05或HC 06蓝牙模块,该怎么做?我正在做一辆钢筋混凝土汽车,弄清楚如何驱动电机,但我有一个七轴在前面准备转向,我怎么能编码它?

    回复
  15. 我们可以在一台PC上做两个arduino之间的“Hello World”通信吗?意味着它只有一个IDE。我们可以吗?

    回复
  16. 我试图使nRF24l01工作,但接收器代码只是显示一些随机符号,即使串行监视器波特率与代码相同。你能告诉我可能有什么问题吗。
    谢谢你!

    回复
  17. 优秀的教程。
    如何使用NRf24L01与两个以上的Arduinos通信。我正在做一个项目,每个arduinos都有液晶显示器,其中没有主从概念。例如Arduino A向Arduino B和C发送消息,并在B和C LCD上显示该消息。然后B或C回复A,A在LCD上显示消息。
    该方案基于多智能体系统的共识控制,每个智能体负责控制自己的资源。

    回复
  18. 你好,

    谢谢你的指导。它为设备之间的无线通信提供了另一种选择。

    我可以知道如何增加距离范围,设备是否需要直接的视线,或者即使其间有障碍物,是否可以进行通信?

    非常感谢。

    回复
    • 您可以通过使用PA LNA SMA天线增加范围。当然,即使有像墙这样的障碍,交流也是可能的,但那样范围就会缩小。

      回复
      • 谢谢,我已经尝试使用RF433MHz模块进行无线连接。但当我试图阻挡他们的视线时。它无法接收发射机的信号。

        我有一个后续问题。如果我错了,请纠正我,我使用的是Arduino Pro Mini,SPI引脚将是;MOSI(11)、MISO(12)、SCK(13)。我说得对吗?

        回复
  19. 非常感谢您的工作,以一种简单和全面的方式向每个人延伸基本原则。再次,我使用了一个伟大的教程,第一步,以一个新的主题深入和实现我自己的想法和想法。我真的可以推荐你的出版物作为“如何”的一个快速介绍。
    让球继续滚…

    回复
  20. 大家好,感谢收看本期视频。我正面临一个不寻常的问题。这里是我正在工作的一部分接收器代码。“Available”字符串将被打印,但是在文本变量中没有内容。只是空白。请帮助

    如果(radio.available ()) {
    以“可用”);
    Char text[32] = " ";
    收音机。读(之外,sizeof(文本));
    以(文本);}

    回复
    • 嘿,确保你在模块VCC和GND使用了一个电容器,并确保你发送的数据类型与你接收的数据类型相同。还要尽量将两个模块之间的距离保持至少一米。

      回复
  21. 你好
    第一个例子,写“Hello World”没有问题。
    但是第二个例子不适合我。我不知道原因。
    我检查了我的led,伺服和操纵杆的接线,但没有连接错误,并尝试了多次。但是没有接收和发送。我的射频模块非常接近彼此。当我上传代码到UNO和MEGA伺服移动在代码上传结束。但是当我给操纵杆和按钮上脓的时候,什么也没发生。
    有什么我需要考虑的吗?

    回复
      • 谢谢你的回复。问题是其中一个nrf24l01模块没有正常工作(它只接收,不发送)。我花了很长时间才发现问题。我使用另一个nrf24l01和它的工作与我们的问题。

        回复
  22. 嗨,这正是我DIY RC飞机所需要的。但我不能让这和2个arduino unos一起工作。板是否重要,我查找了Uno板的相应ICSP引脚,我不知道为什么它不工作。如果您能给我一个有帮助的答复,我将不胜感激,谢谢。

    回复
    • 董事会不重要。大多数情况下,问题出在电力供应上。确保你有良好的3.3V电源,甚至可能是外部电源,并使用旁路电容稳定它。在沟通时,也要尽量使两个模块之间保持一定的距离。

      回复
  23. 祝贺我的朋友,你的视频和解释帮助和激励了大量的学生和专业人士,感谢你分享你的知识,我们从心底感谢你。

    回复
  24. 谢谢你的指导。我很快就能把它安装好并运行起来!虽然我有一个问题,所以对于发射机代码,我也使用了mega2560,但我试着用nano来代替,每当我把通常在mega2560的50、51和52引脚上的引脚放在nano的13、12和11引脚上,即使只是mega2560的13、12和11引脚,它也不起作用。出于某种原因,它们只在变送器的针脚50、51和52上工作,我能解决这个问题吗?

    回复

  25. 如果由于某种原因(比如使用Arduino电机屏蔽)数字引脚可能被阻塞。
    SIP引脚在ICSP头是可用的,可以在那里使用,但我可以使用模拟引脚像A0和A1为这行:
    RF24电台(7、8);/ / CE、CSN

    回复
  26. 感谢伟大的教程!我在这类项目上花了很多时间,但这是我第一次玩Arduino。bet188me一开始我不能让它工作,因为一个真正愚蠢的错误,我可能可以帮助其他人避免。我还以为你的Arduino跟我的Pro Mini Uno有一样的大头针呢。不是这样的——我的别针在板的另一边。当我意识到这一点,并通过pin码而不是原理图连接电线时,一切都很顺利。

    回复
  27. 嗨,我能做到这一点,但不是双向通信,我想能够控制两个伺服操纵杆。我如何修改代码和pin连接才能做到这一点?

    回复
  28. 嘿,拜托,我的nrf24L01很少工作,有时它工作,有时它工作!!你能给我建议任何解决方案吗?我是这个事情的新手,请......,我也连接了一个47uf电容到模块的电源,但它不工作,每次!!!!!!!!

    回复
    • 那电源呢,试着用外部电源。Arduino的3.3V电源有时不够给模块供电。尝试为模块使用不同的专用电源。在这种情况下,请确保将电源的接地管脚与Arduino的接地管脚连接,以便正常工作。

      回复
  29. 你好,德扬。很棒的教程…谢谢!我在Arduino方面没有任何经验,但我知道这对机器人原型制作有好处,我想我会深入研究,看看它是否适用于我的用例。我希望你能确认我的假设是正确的:

    1.草图可以通过标准USB接口打开与计算机的连接(串行?),并且在草图期间,此单一连接可以保持打开状态;
    2.此连接在计算机上共享,以便计算机上运行的任何应用程序(读/写)都可以访问该连接,例如Java、. net、GoLang等内置的应用程序;
    3.Sketch可以从连接中读取并向NRF24L01模块发送命令,以模拟RC设备的发射机;

    我是不是在幻想一些现在不可能或者根本不存在的东西?

    提前谢谢。

    回复
  30. 哇!很棒的教程。我一直在与Arduino的工作,现在和您的网站已经非常有用。我确实有一个关于NRF24L01和ESP8266的问题。ESP8266能像NRF24L01一样工作吗?一个朋友给了我一对夫妇,让我在一个项目中玩,而我以前从未真正使用过他们?

    回复
    • 谢谢,我很高兴你觉得它们有用。老实说,我没有太多的ESP8266模块的经验,所以我现在不能给你任何正确的答案。干杯

      回复
  31. 我试了好几次,但都无法从ardiuno mega获得任何值…。。但它在uno上工作…我想要mega作为接收器…检查连接,一切都好,…有人告诉我mega上发生了什么吗??????

    回复
    • 这有点奇怪。也许你的超级董事会出了问题。确保您在Arduino Mega上使用了正确的SPI引脚。此外,正如我一直建议的,在模块的3.3v输入引脚上使用去耦电容器。

      回复
    • 刚刚看到这个问题,可能已经太晚了,但可能对其他Mega用户有帮助:在Mega,你需要设置数字引脚53的输出和低,即使使用任何其他引脚作为你的CE信号。否则SPI通信将无法正常工作。

      回复
  32. 伟大的教程! !事实上,我很喜欢你的想法和文章。
    在这里,我提到了一个小问题:

    给定的示例在开始时没有运行。我下载了最新的rf24库,但仍然没有发送,没有得到。然后,我代替:

    从:>常量字节地址[6]= " 00001 ";
    To:> const byte address[5] = " 00001 ";

    它们都像魅力一样奔跑。不知道是我的错,还是上次图书馆有新东西。这是我的观察,Arduino IDE是最后一个。1.8.something
    干杯

    回复
  33. 非常有用的教程,非常感谢。问:当数据没有变化时停止传输数据有意义吗?在接收端,我有一个对改变数据(操纵杆位置)做出反应的循环。所以,只要把操纵杆往左推,操纵杆的值其实是不变的,为什么要不断发送它的位置呢?当操纵杆没有被推动时,它处于零位置,我们仍然会发送这个。这对接收机来说是必要的,还是可以停止,例如通过比较新旧值和跳过无线电。写(操纵杆,sizeof(操纵杆))。

    回复
  34. 大家好,感谢教程,
    我想知道您选择引脚7和8 CE和CSN是否有原因。比如说9和10,为什么不呢?
    谢谢

    回复
  35. 谢谢你的指导!我有一个关于收音机的问题。您声明将其设置为最小级别,因为收发器彼此靠近。所以我的问题是,setPALevel是否作为收发器发送频率范围的决定因素?或者,为了更好地说明,该函数是否允许一个人确定您需要两个收发器的距离以允许通信?

    回复
    • PA:表示功率放大器,对应模块的输出电平。设置的越高,射程越好,但这也意味着它将使用更多的能量。因此,如果功耗对您的项目来说是一个重要的因素,您应该将其保持在最小值,但当然,它也取决于您想要达到的范围。

      回复
  36. 先生,非常感谢您的指导。你有天赋,我很感激能与人分享。我使用两个纳米,一个接收,一个发射,来监控几个参数:电流,累积电荷,温度和太阳能供电的电池电压,这是很难达到的,可以说几乎不可能达到。
    在努力使用字符串进行数据传输之后,我决定使用一个附加的偏移量来识别数据读取,虽然这是一次失败的尝试。e、 g.10000+AD计数(或伏特),因此101024将是通道1;200256将是第2频道,依此类推。那么解码就很容易了。老派,是的;但它似乎在起作用,这一评论可能会帮助其他人。再次,非常感谢你。

    乔恩

    回复
  37. 太棒了! !在做了很多例子之后,这个方法终于奏效了。臭名昭著的NRF模块让我一直在猜测我的硬件/电源供应是否有任何问题。看来我没有。谢谢。总是很酷的项目!!bet188me

    回复
  38. 感谢这个很棒的教程——你让编程看起来很简单。
    在我测试双向交流的过程中,我遇到了一个我无法理解的小问题。我改变了接收程序,在串行监视器中打印接收到的值。但只有当我打开发射机程序中的串行监视器时,发射才开始。当传输已经开始,我可以断开USB,它继续运行。
    安装:2纳米与nRF插件。外部3.3 V,外部12V。电容器安装在每个nRF板上。所有的共同点。
    我不知道。

    回复
    • 更多测试/故障排除-更多信息。
      只是想澄清一下——两个nano都在同一台计算机上的两个不同COM端口上运行。
      看来如果我在断开USB连接的情况下启动发射机nano,问题就会消失。然后它就开始直接发射。经验教训:也许我没有完全理解COM端口。如果有人有什么解释,我很乐意去读。

      回复
  39. 嗨,谢谢你的指导,正是我所需要的!也要感谢其他评论员,他们帮助解释了Nano所需的引脚。我在3.3v和gnd之间使用10uf去耦电容器。
    我有个问题;当我的电脑从Nano usb上拔下时,电源就会掉下来。板载LED变暗,程序不再起作用。Nano是否无法提供接收器太多的能量?你有什么建议吗?

    回复
    • 我不太了解你。如何通过USB和3,3V接收器为Nano供电?在某些情况下,Nano 3.3v可能无法为接收器提供足够的电源。你可以使用外部电源。但是,通常电源为5V,因此需要一个电压调节器将5V转换为3.3V。您可以查看RC发射机项目,了解我是如何为NRF24L01模块供电的。在这种情况下,通过外部电源(电池)的供电,它将进入AMS1117 3.3v电压调节器,该电压调节器实际为接收机供电。

      回复

留下你的评论