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

在这个Arduino教程中,我们将学习如何使用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收发模块Pinouts连接

这些引脚中的三个用于SPI通信,他们需要连接到Arduino的SPI引脚,但请注意,每个Arduino板都有不同的SPI引脚。引脚CSN和CE可以连接到Arduino板的任何数字引脚,它们用于在待机或活动模式下设置模块,以及在发射或命令模式之间切换。最后一个引脚是不必使用的引脚。

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

各种模块基于NRF24L01芯片

第二个变化,取代了板上天线,它有一个SMA连接器,我们可以附加一个鸭子天线更好的传输范围。

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

NRF24L01模块引脚向导

下面是NRF24L01引脚以及NRF24L01+ PA/LNA模块的详细介绍。

NRF24L01 Pinout & 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 Wireless Communication Tutorial * Example 1 - Receiver Code * * by Dejan Nedelkovski, www.bet188官方网站HowToMechatronics.com * * Library: TMRh20/RF24, https://github.com/tmrh20/RF24/ */ #include  #include  #include 
        

描述:

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

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

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

const字节地址[6] =“00001”;

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

在设置部分中,我们需要初始化无线电对象并使用royal.OpenWritingPipe()函数我们设置我们将发送数据的接收者的地址,我们先前设置的5个字母的字符串。

radio.openWritingPipe(地址);

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

收音机。openReadingPipe(0,地址);

然后使用radio. setpallevel()函数,我们设置功率放大器的水平,在我们的情况下,我将它设置为最小,因为我的模块非常接近彼此。

radio.setpalevel(rf24_pa_min);

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

接下来,我们有radio.stopListening()函数,它将模块设置为发射器,在另一边,我们有radio.startListening()函数,它将模块设置为接收器。

//在发射机radio.stopListening();
//在接收器roy radio.startListening();

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

void loop() {const char text[] = "Hello World";收音机。写(之外,sizeof(文本));延迟(1000);}

通过使用变量名之前的“&”,我们实际上设置了一个指示存储我们要发送的数据的变量,并使用第二个参数我们设置从该变量中获取的字节数。在这种情况下,sizeof()函数获取字符串“text”的所有字节。在程序结束时,我们将增加1秒钟延迟。

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

Void loop() {if (radio.available()) {char text[32] = "";radio.read(&text,sizeof(textof);以(文本);}}

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

故障排除

值得注意的是电源噪声是人们在试图与NRF24L01模块进行成功通信时遇到的最常见问题之一。一般来说,射频电路或射频信号对电源噪声很敏感。因此,在整个电源线路上包含一个去耦电容总是一个好主意。电容可以从10uF到100uF。

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

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

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


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

Arduino无线通信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无线通信教程*示例2  - 接收代码* *由Dejan Nedelkovski,www.www.mfxpo.com * *库:TMRH20 / RF24,httpsbet188官方网站://github.com/tmrh20/rf24/ * / #include  #include  #include  #include  #define按钮4 rf24收音机(7,8);// CE, CSN const byte addresses[][6] = {"00001", "00002"};伺服myservo;boolean buttonState = 0;void setup(){pinmode(按钮,输入);myservo.attach(5);radio.begin ();radio.openwritingPipe(地址[0]);// 00001 radio.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)); } }

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

Const byte addresses[][6] = {"00001", "00002"};

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

//在发射机无线电.OpenWritingPipe(地址[1]);// 00001 radio.openreadingpipe(1,地址[0]);// 00002
//在Receiver radio.openWritingPipe(addresses[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;Radio.Read(&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发射器示例

这就是本教程的全部内容,我希望你喜欢它,并学到了一些新的东西。和往常一样,请在下面的评论部分提出任何问题。

100年响应

  1. 爱资哈尔

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

    回复
    • 克里斯的坟墓

      如果你使用uno R3板上的发射机和接收机,什么引脚是你使用的按钮和操纵杆,LED,和伺服。必须设置好才能理解它是如何工作的。betway
      谢谢,

      回复
      • 德扬Nedelkovski

        重要的是,你需要使用Arduino板的SPI引脚NRF24L01模块,或引脚13-SCKI, 12-MISO和11-MOSI。除此之外,你可以使用任何密码。

    • manish

      不要使用Nano audrino的图表,使用13个手写引脚连接,这是一个很好的程序,多亏了程序员

      回复
  2. Peyman

    嗨,如何为特定的管道发送数据并从它得到答案。
    主人有一个地址,如果发送数据所有从属来,是吗?
    我不会有一个主人从2个奴隶得到数据。

    回复
  3. 特里陈

    你好,你知道为什么我的串行输出是" yyyyyy yyyyyy yyyyyy "吗?

    回复
  4. 吉姆

    我可以使用中继器将范围延伸到200米。掌握转发器(从奴隶/主)到其他奴隶和背部?

    回复
  5. 爱资哈尔

    你好,是你的电路图错了吗?NRF2401的SCK不会进入Arduino Nano的13。

    回复
    • Jamaleddin

      德扬先生你好,
      我已经用两个Arduino NANOs实现了这个项目。
      最初没有工作,但经过几个小时的检查后,我得到了非常重要的通知,并希望与所有追随者分享它。为了获得2个无线连接和通信,必须使用辅助SPI引脚代替D11,D12和D13。
      我终于让他们如梦似幻地工作了。非常感谢你分享你可爱的项目。干杯!

      回复
  6. 苏菲·沙阿·哈米德·贾拉里

    你的教程太棒了。我非常喜欢你表达的方式。非常清楚,非常有帮助。跟上,男人! !

    回复
  7. 维塔利

    你好。精彩的解释。q?如果连续移动操纵杆,系统站立双工吗?在这种情况下,程序将在While()函数内部。

    回复
  8. Anil.

    嗨,德扬
    我已经成功与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..... .当我断开两块板并连接到电源时,它工作了几秒钟你能帮我一下吗

    回复
    • 德扬Nedelkovski

      问题可能是权力。尝试使用更稳定的外部电源。传输数据时,这些无线模块可以耗电,因此您可能会丢失连接。还尝试使用解耦电容。

      回复
    • Jean-Baptiste.

      嗨!

      首先,我想祝贺德扬,因为他的教程很棒,就像有人在我面前说的那样!

      第二,在使用操纵杆两到三次后,我遇到了同样的问题,功能故障,似乎是由于使用了一个非真正的uno。
      当我改变一个真正的Arduino Uno时,问题已经解决了......好奇......

      回复
  9. kubajz 22

    我通过改变while (!radio.available())解决了这个问题;如果(! radio.available ());
    很好,啧啧

    回复
  10. Marek

    非常棒的教程,谢谢。
    你在第二个例子中使用了什么电阻?
    谢谢

    回复
  11. 埃尔Tenorio

    你好呀!

    我能完成这个项目。然而,我面临着一个问题。当我移动两块Arduino板(每个都有NRF24L01模块)时,信号就会丢失。好像这些模块只能在不到一米的范围内工作?除非我在教程中遗漏了什么。

    提前感谢您的回复。

    回复
  12. 利奥

    谢谢你的指导。

    你有什么想法如何建立连接和接收数据与笔记本电脑,而不是第二个arduino?

    谢谢

    回复
  13. Muditha

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

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

    回复
  14. Levente Gulyas

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

    回复
    • Ismaeil Alnaab

      我面对同样的问题,你达到了任何进展吗?
      我尝试过使用10微法拉电容,但没有任何改变。我仍然没有收到任何东西。

      回复
      • 瓦希德

        可能是两个模块之间的距离,最大几乎是10厘米,因为(PA _MIN)..尝试让它们彼此靠近,或者用_LOW替换_MIN。如果你有一个电容器连接,只是删除线在两个草图。
        祝你好运

  15. 嗨,谢谢你的榜样,但我有点问题可能是RF信号。我用uno r3作为收发器和纳米作为接收器当我上传数据时,数据正常发送和接收,但30秒后它停止发送和接收数据,你可以帮助我吗?

    回复
  16. Aqsa纳兹

    你的例子真的很有帮助,但我是用nrf24L01通信使用入门示例,但我收到垃圾值而不是hello world。我该怎么办?

    回复
  17. 凯伦

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

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

    回复
  19. 最大限度

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

    回复
  20. 安德烈

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

    回复
  21. theTechnowright

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

    回复
  22. 同上。assef Shawkat阿里

    优秀的教程。
    我如何使用NRf24L01沟通超过两个arduino。我正在做一个项目,我有液晶与每个arduino和没有概念的主从在它。为例。Arduino A向Arduino B和C发送消息,并在B和C LCD上显示该消息。然后B或C回复A, A在LCD上显示消息。
    该项目基于对多项代理系统的共识控制,其中每个代理商负责控制其自己的资源。

    回复
  23. Jepher

    你好,

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

    我可以知道我如何增加距离,设备是否需要直接的视线,或者即使在有/有阻碍的情况下是否可以沟通?

    谢谢你!

    回复
    • 德国

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

      回复
      • Jepher

        谢谢,我尝试过使用RF433MHz模块进行无线连接。但当我试图挡住他们的视线时。它接收不到发射机发出的信号。

        我有一个后续问题。如果我错了,请纠正我,我正在使用Arduino Pro Mini, SPI引脚将是;莫西人(11)、味噌(12),SCK(13)。我正确吗?

  24. 杰拉尔德

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

    回复
  25. 萨彦岭chowdhury

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

    if(radio.available()){
    以“可用”);
    char text [32] =“”;
    radio.read(&text,sizeof(textof);
    serial.println(文本);}

    回复
    • 德国

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

      回复
  26. wozu

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

    回复
      • wozu

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

  27. Vedat

    嗨,这正是我需要的DIY遥控飞机。但我没法用两个arduino做这个。板子有关系吗,我查了Uno板子对应的ICSP引脚,不知道为什么不能用。我将感激一个有用的回应,谢谢。

    回复
    • 德国

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

      回复
  28. Ubaldo

    恭喜我的朋友,您的视频和解释帮助并激励了学生和专业人士的免疫力,谢谢您分享您的知识,我们感谢您的核心。

    回复
  29. 阿西夫Anowar

    非常感谢......我刚刚使用2个UNO板上的项目......非常解释......

    回复
  30. 坦纳

    谢谢你的指导。我能够让它在短时间内启动并运行!与发射机代码我一个问题,所以我用一个mega2560,但是我在使用纳米相反,每当我把别针,通常是50,51、52个别针mega2560放在像针13日12和11纳米,甚至只是13日mega2560 12和11,它不工作。出于某种原因,它们只能在发射器的引脚50,51和52上工作,我能解决这个问题吗?

    回复
    • 德国

      Nano的SPI引脚是SCK -13, MISO - 12, MOSI - 11。因此,如果连接正确,它应该与Mega一样工作。并且确保在模块旁边使用一个电容来稳定电源。

      回复
      • 坦纳

        我按你说的换了别针,成功了。再次感谢!

  31. 阿施施邦萨尔

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

    回复
  32. 布莱克·考德威尔

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

    回复
  33. Vedat

    嗨,我可以让这个工作,但不是双向沟通,我想能够控制两个伺服与操纵杆。我如何修改代码和引脚连接来做到这一点?

    回复
  34. Dhiraj Kushwaha

    嘿,请问,我的nrf24l01很少有时工作,有时它有效!你能否建议我任何解决方案,我可以解决这件事......我也将47uf电容连接到模块的电源,但每次都不工作!!!!!!!!

    回复
    • 德国

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

      回复
  35. 肖恩·兰道

    你好,德扬。很棒的教程…谢谢!我对Arduino没有任何经验,但我知道它对机器人原型设计很有帮助,我想看看它是否适用于我的用例。我希望你能证实我的假设是正确的

    1.Sketch可以通过标准的USB连接器打开到计算机的连接(串行?),并且这个连接可以在Sketch使用期间保持打开状态;
    2.此连接在计算机上共享,以便在计算机上运行的任何应用程序访问它(读/写),例如,它可以访问它。内置Java,.NET,GOLANG等的应用程序;
    3.素描可以从连接中读取,并将命令发送到NRF24L01模块,以模拟RC设备的发送器;

    我梦想着目前可能或不存在的东西吗?

    提前谢谢。

    回复
  36. 大狗

    哇!伟大的教程。我现在用Arduino做了一些工作,你的网站非常有用。我确实有一个关于NRF24L01和ESP8266的问题。ESP8266能和NRF24L01一样工作吗?一个朋友给了我一对玩一个项目,我没有真正使用他们之前?

    回复
    • 德国

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

      回复
  37. 克里斯托约瑟夫

    我尝试了几次,但是没有从ardiuno mega.....得到任何值但是它在uno上工作…我想要mega作为接收器…检查连接和所有,所有都是好的…任何人告诉发生了什么在mega??????上

    回复
    • 德国

      这有点奇怪。也许你的美人板有问题。确保你在Arduino Mega上使用正确的SPI引脚。此外,正如我一直建议的,在模块的3.3v输入引脚上使用去耦电容。

      回复
    • 赫伯特

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

      回复
  38. Sveto

    伟大的教程! !事实上,我很喜欢你的想法和文章。
    在那样,我丢了一些小问题:

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

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

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

    回复
  39. 鲁道夫

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

    回复
    • 德国

      好吧,我想你可以这么做。这取决于你想用它达到什么目的,比如省电之类的。在这种情况下,它是有用的。

      回复
  40. 卢卡斯

    大家好,感谢教程,
    我想知道您选择pin 7和pin 8 CE和CSN是否有原因。为什么不只是9和10呢?
    谢谢

    回复
  41. Mamad.

    你好
    谢谢你的指导
    我可以连接CE和CSN到非PWM引脚,如D7和D8?
    我想使用PWM引脚更多的选项

    回复
  42. Dola

    亲爱的德扬,
    感谢您的优秀教程!我希望你继续分享你的知识!
    最好的问候,Gyuri

    回复
  43. 肖恩

    谢谢你的指导!我有一个关于radio. setpallevel的问题。你说你把它调到了最小电平因为无线电收发器距离很近。所以我的问题是,setpallevel是否作为收发器发送频率范围的一个决定因素?或者更确切地说,这个函数是否允许一个人决定需要两个收发器多接近才能进行通信?

    回复
    • 德国

      “PA:代表功率放大器,它对应于模块的输出电平。更高的设定,更好的范围将有,但这也意味着它将使用更多的功率。因此,如果功耗是您项目的重要因素,您应该至少保持最低限度,但当然它也取决于您想要实现的范围。

      回复
  44. 乔恩·杜克

    先生,非常感谢您的指导。你有天赋,我很感激能与人分享。我使用两个纳米,一个接收,一个发射,来监控几个参数:电流,累积电荷,温度和太阳能供电的电池电压,这是很难达到的,可以说几乎不可能达到。
    在为使用字符串进行数据传输而绞尽了一番苦功之后,我决定使用附加偏移量来标识数据读取。例如10,000 + AD计数(或伏特),所以101024将是通道1;200256将是通道2,以此类推。解码很简单。老学校,是的;但它似乎在起作用,这条评论可能会帮助其他人。再一次,非常感谢。

    乔恩

    回复
  45. Saurabh Jambotkar

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

    回复
  46. 安德斯

    感谢这个很棒的教程——你让编程看起来很简单。
    在我对2路通信的测试期间,我经历过一个小问题,我无法弄清楚。我更改了接收器程序以在串行监视器中打印接收值。但是,当我在发射机程序中打开串行监视器时,发送仅启动。传输已启动时,我可以断开USB,它会导致运行。
    安装:2纳米与nRF插件。外部3.3 V,外部12V。电容器安装在每个nRF板上。所有的共同点。
    难倒我了。

    回复
    • 安德斯

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

      回复

留下一个回复

您的电子邮件地址不会被公开。

推荐

2019年初学者和爱好者的最佳进入级示波器

初学者和爱好者最好的示波器

推荐

2019年最佳Arduino入门套件

8个最好的arduino初学者工具包

推荐

最佳3D打印机为初学者和爱好者- 3D打印

最好的3d打印机为初学者和爱好者