NRF24L01 -亚博88下载 它是如何运作的,Arduino接口,代码,原理图

在此Arduino教程中,我们将学习如何使用NRF24L01收发器模块在两个Arduino板之间进行无线通信。您可以观看以下视频或阅读下面的书面教程。

概述


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

NRF24L01收发器模块 - 它是如何工作的亚博88下载

让我们仔细看看NRF24L01收发器模块。它使用2.4 GHz频段,它可以与250 kbps的波特率运行,最高可达2 Mbps。如果在开放空间中使用,并且较低的波特率,其范围可达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芯片,包括pa(功率放大器)LNA(低噪声放大器)。这放大了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 Pins.

您可以从下面的链接获取此Arduino教程所需的组件:

yaboAG娱乐城披露:这些是联盟链接。作为亚马逊助理,我从合格购买中获得。

Arduino和NRF24L01代码

一旦我们将NRF24L01模块连接到Arduino板,我们就可以为发送器和接收器进行编码。

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

以下是无线通信的两种代码,下面是它们的描述。

发射机的代码

/* * Arduino Wireless Communication Tutorial * Example 1 - Transmitter Code * * by Dejan Nedelkovski, www.亚搏手机版官方下载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.亚搏手机版官方下载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个字母的字符串,这使得这可以选择哪些接收器我们将交谈,因此在我们的情况下,我们将在接收器和发射器中具有相同的地址。

在设置部分中,我们需要初始化radio对象,并使用radio. 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循环(){if(royal.available()){char text [32] =“”;radio.read(&text,sizeof(textof);以(文本);}}

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

故障排除

值得注意的是电源噪音是人们在尝试与NRF24L01模块成功沟通时体验的最常见问题之一。通常,RF电路或射频信号对电源噪声敏感。因此,在电源线上包括解耦电容总是一个好主意。电容器可以是10uf至100uf的任何东西。

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

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

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


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

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

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

yaboAG娱乐城披露:这些是联盟链接。作为亚马逊助理,我从合格购买中获得。

源代码


以下是两种代码,以下是它们的描述。

发射机的代码

/* * Arduino Wireless Communication Tutorial * Example 2 - Transmitter Code * * by Dejan Nedelkovski, www.亚搏手机版官方下载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.亚搏手机版官方下载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)); } }

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

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

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

//在发射机无线电.OpenWritingPipe(地址[1]);// 00001 radio.openreadingpipe(1,地址[0]);// 00002
//在接收器无线电编号上(地址[0]);// 00002 radio.OpenReadPipe(1,地址[1]);// 00001

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

radio.stopListening ();int potValue = analogRead(A0);int angleValue = map(potValue, 0, 1023, 0, 180);电台.write(&snallvalue,sizeof(stantvalue));

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

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

接下来,在发射机处,我们将第一个Arduino作为接收器设置为HOREVIVER,并使用空“循环”循环,我们等待第二个Arduino发送数据,这是按下或不按下按钮的状态的数据。如果按下按钮,LED将亮起。因此,这些过程不断重复,arduino板都不断发送和接收数据。

更多的NRF24L01和Arduino的例子

NRF24L01模块是任何Arduino爱好者的必备。我已经在许多人中使用了NRF24L01模块Arduino项足彩网女欧洲杯目.在这里我将列出我使用这些模块的所有项目。足彩网女欧洲杯

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

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

DIY Arduino RC发射器示例

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

100回应

  1. 爱资哈尔

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

    回复
    • Dejan Nedelkovski.

      好吧,这不应该是一个问题,你只需要将这些电位器值发送到另一个Arduino并将它们应用于伺服电机。将使用相同的方法。

      回复
    • 克里斯坟墓

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

      回复
      • Dejan Nedelkovski.

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

    • man

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

      回复
  2. 佩耶曼

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

    回复
  3. 特里陈

    嗨,你知道我的串行输出是“yyyyyy yyyyyyyyyyy”的任何可能的原因吗???

    回复
  4. 吉姆

    我能用转发器把射程扩大到200米吗?主从机转(从机/主从机)到其他从机再转回来?

    回复
  5. 爱资哈尔

    你好,你的电路图有问题吗?nrf2401的SCK不会去arduino nano的Pin 13。

    回复
    • Jamaleddin

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

      回复
  6. Sufi Shah Hamid Jalali

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

    回复
  7. 维塔利

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

    回复
  8. 阿尼尔

    嗨,德扬
    我成功地将Mega 2560汇往Uno。......但我的问题是连接并不长时间。只是工作几秒钟并停止......在两个板上重置也不工作......当我断开两个板并将它们连接到电源时,再次工作几秒钟......但工作时间在每种情况下都不同......你能帮助我吗?

    回复
    • Dejan Nedelkovski.

      问题可能在于电力。尽量使用更稳定的外部电源。这些无线模块在传输数据时可能会耗电,所以可能会失去连接。也可以尝试使用去耦电容器。

      回复
    • Jean-Baptiste.

      嗨!

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

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

      回复
  9. Kubajz 22.

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

    回复
  10. Marek.

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

    回复
  11. Eldon Genorio.

    你好呀!

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

    提前感谢回复。

    回复
  12. 狮子座

    谢谢你的教程。

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

    谢谢

    回复
  13. muditha.

    你好Dejan Nedelkovski.
    我读了“Arduino无线通信 - NRF24L01教程”。它对初学者非常有用。非常感谢。
    我的问题是,我如何找到“nrf24l01.h”文件?

    你有一个“nrf24l01.h的链接?“
    谢谢。

    回复
  14. Levente Gulyas

    你好!伟大的视频!thank you for uploding, I have a problem my module doesnt recieve any data(I’m using arduino nano as tranciever and uno as reciever).I checked the wiring many times i tried it 100 ways to get it work but i haven’t succeeded yet.
    这个库是否有任何魅力,检查Arduino是否可以与RF24通信?我在rf24.h中搜索,我找到了一个bool chipisconnected(),但它并没有返回任何东西。

    回复
    • Ismaeil alnaab.

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

      回复
      • 瓦希德

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

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

    回复
  16. AQSA NAZ.

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

    回复
  17. 凯伦

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

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

    回复
  19. 最大限度

    非常感谢您的努力,如果我使用HC 05或HC 06蓝牙Moudles,我可以问你如何做到这一点?我正在制作一个遥控车,并弄清楚如何驾驶电机,但我有一个塞维奥在前面的旨在转向我如何代码呢?

    回复
  20. 安德烈

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

    回复
  21. theTechnowright

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

    回复
  22. 同上。assef Shawkat阿里

    优秀的教程。
    如何使用NRF24L01传达更多两个Arduinos。我正在研究一个项目,在那里我有每个arduinos的液晶显示,它没有主奴隶的概念。例如。Arduino将消息发送给Arduino B和C,并在B和C LCD上显示该消息。然后B或C回复A和A显示LCD的消息。
    该项目基于对多项代理系统的共识控制,其中每个代理商负责控制其自己的资源。

    回复
  23. Jepher

    你好,

    谢谢你的教程。它给了我一种设备之间无线通信的替代方案。

    我可以知道如何增加距离范围,并且这些设备需要直接的视线,也需要甚至可以沟通/之间存在障碍物?

    谢谢你!

    回复
    • 德扬

      您可以使用PA LNA SMA天线增加范围。当然,即使存在像墙壁的障碍,也可以进行沟通,但以这种方式将减少范围。

      回复
      • Jepher

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

        我有一个跟进问题。如果我错了,请纠正我,我正在使用Arduino Pro Mini,SPI PIN将是;MOSI(11),MISO(12),SCK(13)。我对么?

  24. 杰拉德

    非常感谢您的工作,以简单而全面的方式延伸基本原则。在潜入深度并实现自己的思想和想法之前,我再次使用您的伟大教程中的一个伟大教程。我真的可以推荐你的出版物作为“HOWTO”的快速介绍。
    保持球卷轴......

    回复
  25. Sayan Chowdhury.

    嗨,谢谢你的视频。我面临着一个不寻常的问题。这是我正在使用的接收器代码的一部分。“可用”字符串正在打印,但文本变量中没有内容。它只是空白。请帮忙

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

    回复
    • 德扬

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

      回复
  26. wozu

    你好
    第一个例子,写“Hello World”没有问题。
    但是第二个例子不适合我。我不知道原因。
    我检查了LED,伺服和操纵杆的接线,但没有连接错误并尝试多次。但没有接收和传输。我的RF模块彼此非常靠近。当我将代码上传到Uno和Mega时,伺服在代码上载的末尾移动。但是当我暂停枪声和按钮没有任何发生的时候。
    有什么我需要考虑的吗?

    回复
      • wozu

        感谢您的回复。问题是NRF24L01模块之一未正常工作(它只接收,不发送)。需要很长时间才能确定问题。我使用另一个NRF24L01并解决问题。

  27. Vedat

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

    回复
    • 德扬

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

      回复
  28. Ubaldo

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

    回复
  29. Asif Anowar.

    非常感谢。我刚刚用2个UNO板做了这个项目,解释得很好....

    回复
  30. 坦纳

    谢谢你的教程。我能够在任何时候都跑步!我一个问题,所以通过发射机代码,我也在使用Mega2560,但我正在尝试使用纳米,然后每当我把通常的销钉放在50,51和52销的Mega2560上并放开like pins 13, 12 and 11 of the nano, even just the 13, 12 and 11 of the mega2560, it doesn’t work. For some reason they only work on pins 50, 51 and 52 for the transmitter, any way I can fix this?

    回复
    • 德扬

      纳米的SPI销是SCK -13,MISO - 12,MOSI - 11.因此,如果正确连接,它应该与MEGA相同。并确保您在模块旁边使用电容器以稳定电源。

      回复
      • 坦纳

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

  31. ashish bansal.

    你好
    如果由于某种原因(比如使用Arduino电机屏蔽)数字引脚可能被阻塞。
    SIP引脚可在ICSP标题上使用,可以在那里使用,但我可以使用像A0和A1这样的模拟引脚,为此行:
    RF24收音机(7,8);// CE,CSN

    回复
  32. 布莱克卡德韦尔

    谢谢你的伟大教程!我花了很多时间用这些项目,但这是我第一次和Arduino一起玩过。足彩网女欧洲杯我无法首先努力,因为一个真正的愚蠢错误,我可能能够帮助别人避免。我假设你的小arduino与我的亲迷你同样的别针相同。那不是那么 - 我的销13在板的另一侧。一旦我意识到,并通过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. 主要的dawg

    哇!伟大的教程。我现在用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字节地址[5] =“00001”;

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

    回复
  39. 鲁道夫

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

    回复
    • 德扬

      好吧,是的,我猜你可以做到这一点。这取决于你想要的东西,如节能左右。在这种情况下,它将是有用的。

      回复
  40. 卢卡斯

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

    回复
  41. Mamad.

    你好
    thanx为教程
    我可以连接CE和CSN到非PWM引脚,如D7和D8?
    我想使用PWM引脚进行更多选项

    回复
  42. 达拉

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

    回复
  43. 肖恩

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

    回复
    • 德扬

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

      回复
  44. Jon Duke.

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

    Jon.

    回复
  45. Saurabh Jambotkar

    惊人的!!!!!经过很多例子,这个终于工作了。臭名昭着的NRF模块让我猜测我是否在硬件/电源中发生任何麻烦。似乎我没有。谢谢。总是很酷的项目!!足彩网女欧洲杯

    回复
  46. 安德斯

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

    回复
    • 安德斯

      更多测试/故障排除-更多信息。
      只是为了澄清 - 纳米在两个不同的COM端口上的同一台计算机上运行。
      如果我用USB断开连接,它似乎是问题消失了。然后它开始直接传输。课程学习:也许我不完全理解COM港口。如果有人有一个解释,我非常热衷于阅读它。

      回复

发表评论

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

推荐

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

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

推荐

2019年最佳Arduino入门套件

初学者的8个最佳Arduino Starter Kits

推荐

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

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