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

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

概要


为解释我们将制作两个示例的无线通信,第一个将从一个Arduino发送一个简单的“Hello World”消息到另一个,并且在第二个例子中,我们将在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引脚&NRF24L01 + PA LNA .png

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

线路图

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

NRF24L01和Arduino教程电路原理图

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

Arduino SPI针

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

必威外围提钱披露:这些是联盟链接。作为亚马逊助理,我从合格购买中获得。

Arduino和NRF24L01代码

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

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

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

变送器代码

/ * * Arduino无线通信教程*示例1  - 发射机代码* *由Dejan Nedelkovski,www.www.mfxpo.com * *库:TMRH20 / RF24,HTTPS:/bet188官方网站/github.com/tmrh20/rf24/ * / #include  #include  #include  rf24收音机(7,8);// CE, CSN const字节地址[6]= "00001";void setup(){radio.begin();radio.openwritingPipe(地址);radio.setPALevel (RF24_PA_MIN);电台.Stoplistening();void循环(){const char text [] =“Hello World”;radio.write(&text,sizefof(textof);延迟(1000);}

接收器的代码

/* * 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()函数,其设置模块作为接收机。

//在发射机无线电.stoplistening();
//在接收器roy radio.startListening();

在环部分,在发射器,我们创造,我们分配消息“Hello World”的字符数组。使用radio.write()函数,我们会发送消息到接收器。这里的第一个参数是我们要发送的变量。

void loop() {const char text[] = "Hello World";radio.write(&text,sizefof(textof);延迟(1000);}

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

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

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

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

故障排除

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

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

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

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


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

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

您可以从下面的链接获取此示例所需的组件:

必威外围提钱披露:这些是联盟链接。作为亚马逊助理,我从合格购买中获得。

源代码


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

变送器代码

/ * * arduino无线通信教程*示例2  - 发射机代码* *由dejan nedelkovski,www.www.mfxpo.com * *库:TMRH20 / RF24,HTTPS:/bet188官方网站/github.com/tmrh20/rf24/ * / #include  #include  #include  #define LED 12 RF24收音机(7,8);// ce,csn const字节地址[] [6] = {00001“,”00002“};Boolean ButtonState = 0;void setup(){pinmode(12,输出);radio.begin ();radio.openwritingPipe(地址[1]);// 00002 radio.openreadingPipe(1,地址[0]);// 00001 radio.setpalevel(rf24_pa_min);void循环(){延迟(5);电台.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字节地址[] [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
//在接收器无线电编号上(地址[0]);// 00002 radio.OpenReadPipe(1,地址[1]);// 00001

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

电台.Stoplistening();int potvalue = analogread(a0);int anglevalue =地图(Potvalue,0,1023,0,180);电台.write(&snallvalue,sizeof(stantvalue));

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

radio.startListening ();if(radio.available()){while(radio.available()){int角度= 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发射器示例

这是所有本教程中,我希望你喜欢它,并学到新的东西。与往常一样,随意问任何问题,在下面的评论部分。

95年响应

  1. 爱资哈尔

    感谢您分享这个非常有用的教程。你可以帮助我用一个方向使用6个电位器来控制多个伺服(我需要控制6个伺服)的代码吗?

    回复
    • 克里斯的坟墓

      如果在发射器和接收器上使用Uno R3板,您使用的是您的按钮和操纵杆,LED和伺服的引脚。必须设置它以了解它的工作原理。betway
      谢谢,

      回复
      • Dejan Nedelkovski.

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

    • manish

      不要图去纳米audrino去书面引脚连接13 ......其良好的程序...感谢程序员

      回复
  2. 佩耶曼

    嗨,如何向特定管道发送数据并从中获取答案。
    主人有一个地址,如果发送数据所有从属来,是吗?
    我不会有一个主从2从获取数据。

    回复
  3. 特里陈

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

    回复
  4. 吉姆

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

    回复
  5. 爱资哈尔

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

    回复
    • Jamaleddin

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

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

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

    回复
  7. vitaly

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

    回复
  8. 阿尼尔

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

    回复
    • Dejan Nedelkovski.

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

      回复
    • Jean-Baptiste.

      大家好!

      首先,我要祝贺德扬“原因他TUTOS像sbdy说,它完美的事情,在我面前!

      排在第二,我会功能失灵的同样的问题后,使用操纵杆两两三次,似乎它是使用非正版UNO适当的理由。
      当我把它换成真正的Arduino uno时,问题就解决了……

      回复
  9. Kubajz 22.

    好吧,我通过改变(!radio.available())来解决它;如果(!royal.available());
    很好,啧啧

    回复
  10. Marek

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

    回复
  11. Eldon Genorio.

    嗨!

    我是能够使这个项目的工作。不过,我面对的一个问题。每当移动两个Arduino的板(每个具有附着在其中的NRF24L01模块)时,信号丢失。这是因为如果该模块只能比范围1米工作少了?除非我已经错过了本教程的东西。

    提前感谢您的回复。

    回复
  12. 利奥

    谢谢你的指导。

    你有关于如何使用一台笔记本电脑,而不是第二的Arduino建立连接和接收数据的任何想法?

    谢谢

    回复
  13. muditha.

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

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

    回复
  14. 利文特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 NAZ.

    你举的例子是真正有用的,但我使用入门的例子,但我收到的垃圾值,而不是你好世界沟通同时nRF24L01的。我该怎么办?

    回复
  17. 凯伦

    嗨,伟大的教程,谢谢!可以从另一个源传输,并表示我自己的传感器,与2.4GHz天线,传输模拟频率。然后只使用一个Arduino和一个NRF24i01接收和配置数据?或者这个模块只会与另一个nrf24i01通信?

    回复
  18. 谢谢您对如此伟大的教程,我使用了这些长距离版本,使用外部PSU获得大约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. 杰拉尔德

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

    回复
  25. 萨彦岭chowdhury

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

    if(radio.available()){
    serial.println(“可用”);
    char text [32] =“”;
    收音机。读(之外,sizeof(文本));
    serial.println(文字);}

    回复
    • 德扬

      嘿,确保在模块VCC和GND上使用电容器,并确保您在接收时发送相同类型的数据。还要尝试距离两个模块至少仪表。

      回复
  26. wozu

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

    回复
      • wozu

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

  27. vedat.

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

    回复
    • 德扬

      董事会无关紧要。问题的大部分时间都是电力供应。确保您具有良好的3.3V电源,甚至是外部的电源,也可以使用旁路电容来稳定它。同时在通信时尝试距离两个模块。

      回复
  28. 乌瓦尔多希

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

    回复
  29. 阿西夫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. 阿施施邦萨尔


    如果由于某种原因(就像使用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.草图可以打开在标准USB连接器连接到计算机的连接(串行?),并且该单一的连接可保持打开的草图的持续时间;
    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输入引脚处使用去耦电容。

      回复
  38. Sveto

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

    给定的示例在开始时没有运行。我下载了最新的RF24库,但仍然没有发送,没有什么可以。然后,我替换:

    来自:> const字节地址[6] =“00001”;
    To:> const byte address[5] = " 00001 ";

    所有人都像魅力一样。没有想法是我的错,或者在最后一个库中的东西是新的。这是我的观察,arduino ide是最后一个。1.8.Something.
    欢呼

    回复
  39. 鲁道夫

    非常有用的教程,非常感谢。问题:在数据不会改变时停止传输数据有意义吗?在接收器侧,我有一个循环,这些循环在改变数据(操纵杆的位置)上做出反应。因此,只要操纵杆被推开,操纵杆的价值实际上不会改变,所以为什么要连续发送其位置。当没有推动操纵杆时,它坐在零位置,我们仍然会发送这个。这对于接收器或可以停止,例如,这是必要的。通过比较新的和旧价值并跳过无线电.Write(&操纵杆,尺寸(操纵杆))。

    回复
    • 德扬

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

      回复
  40. 卢卡斯

    大家好,感谢教程,
    我想知道是否有您选择引脚7和8 CE和CSN的一个原因。为什么不只是9和10的实例?
    谢谢

    回复
  41. Mamad.


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

    回复
  42. Dola

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

    回复
  43. 谢谢你的教程!我有一个关于radio.setPALevel的问题。你说,你把它设置为最小水平,因为收发器均接近对方。所以我的问题是,是否setPALevel功能作为它的收发器发出的频率范围内的决定因素?或能更好地说明,确实功能允许确定如何接近需要两个收发器是允许的沟通?

    回复
    • 德扬

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

      回复

留下回复

您的电子邮件地址将不会发布。

推荐

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

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

推荐

2019年初学者的8个最佳Arduino Starter Kits

初学者的8个最佳Arduino Starter Kits

推荐

用于初学者和爱好者的最佳3D打印机 -  3D打印

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