本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于nRF24L01的DIY无人机无线电控制器

发布时间:2022-07-19
分享到:

基于nRF24L01的DIY无人机无线电控制器

发布时间:2022-07-19
分享到:

nRF24L01 收发模块

nRF24L01 是一个无线收发模块,这意味着每个模块都可以发送和接收数据。它们的工作频率为 2.4GHz,属于 ISM 频段,因此在几乎所有国家/地区用于工程应用都是合法的。高效运行时,模块可以覆盖 100 米(200 英尺)的距离,这使其成为所有无线遥控项目的绝佳选择。

该模块在 3.3V 下工作,因此可以轻松地与 3.2V 系统或 5V 系统一起使用。每个模块的地址范围为 125,每个模块可以与 6 个其他模块通信,因此可以在特定区域内有多个无线单元相互通信。因此,使用此模块可以实现网状网络或其他类型的网络。因此,如果您正在寻找具有上述特性的无线模块,那么该模块将是您的理想选择。nRF24L01 模块在 SPI 通信的帮助下工作。这些模块可以与 3.3V 微控制器或 5V 微控制器一起使用,但它们应该具有 SPI 端口。

使用 nRF24L01 收发器模块的优点:

  • 低成本:NRF24L01 是市场上最便宜的无线收发器模块之一。
  • 易于与微控制器/Arduino 板配对:nRF24L01 可轻松与各种微控制器系统配对;MCU/ARM/PIC/AVR/STM32 与 Arduino 配对时使用 SPI 协议或 RF24 库。
  • 2.4GHz 无线通信灵活性:2.4GHz 工作频率允许更高的比特率使用,而不是其他较低的工作频率。它也使用 GFSK 调制进行数据传输,这意味着数据传输速率可以是 250kbps、1Mbps 或 2Mbps。
  • 高传输范围——nRF24L01,当使用正确的设置时,可以传输几公里的波长。
  • 广阔的应用场景——从无线 PC 外围设备到控制器和玩具,nRF24L01 适用于多种场景。

虽然这个模块有很多优势让这个模块比其他模块更有优势,但使用这个模块也有一些缺点,不过我们可以从其他角度比较容易地避开,但还是需要在使用这些模块时检查它们。

其中一些缺点是:

  • 它是一个高度敏感的模块,这就是为什么有时它会从电源或其他来源捕获噪音并放大它,最终破坏原始信息。为了控制这一点,我们需要确保我们不使用很长的连接。我们还可以在电源端子上连接一个大约 10uF 的电容器来控制噪声。
  • 它使用 SPI 通信,这就是为什么需要相对更多的引脚来连接和使用这个模块,这有时会让人感到困惑。
  • 它采用 3.3V 电源供电,这就是为什么它不能直接连接到一些仅提供 5V 电压的微控制器。在这种情况下,我们需要通过 5V 到 3.3V 的稳压器连接这个模块,以防止它受到任何损坏。

但即使在这些缺点之后,这个模块对于像我们这样的应用程序来说也是一个很好的选择。

设置无人机发射器
 

在这一步中,我们将完成 Transmitter 设置。我们将首先完成电路部分,然后将代码上传到 Arduino UNO 以完成设置。此步骤所需的材料是 NRF24L01 收发器模块、Arduino UNO、10 uF 电容器、跳线、面包板/归零 PCB 和操纵杆模块。我们需要执行以下步骤:

首先,我们需要在 NRF24L01 模块的 Vcc 和 GND 端子上连接一个 10 uF 电容,以使输入无噪声。之后,我们需要连接 Arduino UNO 和 NRF24L01 收发器模块,如上图所示,如下所示:

  • 将 NRF 模块的 GND 引脚连接到 Arduino 的 GND 引脚。
  • 将 NRF 模块的 Vcc 引脚连接到 Arduino UNO 的 3.3 V 引脚。
  • 将 NRF 的 CE 引脚(即引脚 3)连接到 Arduino UNO 的数字引脚 9。
  • 将 NRF 的 CSN 引脚(即引脚 4)连接到 Arduino UNO 的数字引脚 8。
  • 将 NRF 的 SCK 引脚(即引脚 5)连接到 Arduino UNO 的数字引脚 13。
  • 将 NRF 的 MOSI 引脚(即引脚 6)连接到 Arduino UNO 的数字引脚 11。
  • 将 NRF 的 MISO 引脚(即引脚 7)连接到 Arduino UNO 的数字引脚 12。

完成 NRF 和 Arduino UNO 之间的连接后。我们现在还需要将我们的操纵杆模块连接到 Arduino UNO。操纵杆的连接方式如下:

  • 将操纵杆模块的 5V 引脚连接到 Arduino UNO 的 5V 引脚。
  • 将操纵杆模块的 GND 引脚连接到 Arduino UNO 的 GND 引脚。
  • 将左摇杆模块的 VRx 连接到 Arduino 的 A0 引脚,将左摇杆模块的 VRy 引脚连接到 Arduino 的 A1 引脚。
  • 将右摇杆的 VRx 引脚连接到 Arduino 的 A2 引脚,将右摇杆的 VRy 引脚连接到 Arduino 的 A3 引脚。

到这一步,就算完成了项目的硬件部分。现在我们需要在我们的 Arduino UNO 上上传代码,但在此之前,我们需要确保我们的 Arduino IDE 具有 NRF 模块所需的所有库。您可以从本文下方找到 Github 中对应的代码及库文件。在那里你会看到一个名为“ RF24 Master”的文件。下载文件,然后前往 Arduino IDE。在 IDE 中打开 Sketch 选项卡,您需要单击 Include library,然后单击 Add.ZIP library。选择您下载的文件,然后单击打开。这将安装库,但在使用之前重新启动 IDE 一次。

现在我们需要为此在 Arduino UNO 中上传代码,我们需要返回项目的 Github 存储库。在 Github 存储库中,您将看到一个名为“ ​Drone_Transmitter”的文件夹。在该文件夹中,存在发射器的代码文件,在您的 Arduino IDE 中打开该文件。选择正确的板和 COM 端口,然后点击上传按钮。

这将完成我们无人机发射器的设置。应牢记的一些预防措施是,连接应尽可能小且紧密。电容应连接在 NRF24L01 模块的 Vcc 和 GND 端子之间,不要忘记连接 NRF 模块的天线。您可以通过将 Arduino 连接到移动电源或将其连接到 9V 电源来打开此发射器。在下一步中,我们将看看接收器部分的设置。

设置无人机接收器

在上一步中,我们完成了无人机发射器设置。在这一步中,我们将完成无人机接收器的完整设置。这一步我们需要的材料是 NRF24L01 模块、Arduino UNO、电线和面包板/零 PCB。设置很简单,类似于我们在上一步中所做的设置。我们需要执行以下步骤:

首先,我们需要在 NRF24L01 模块的 Vcc 和 GND 端子上连接一个 10 uF 电容,以使输入无噪声。之后,我们需要连接 Arduino UNO 和 NRF24L01 收发器模块,如上图所示,如下所示:

  • 将 NRF 模块的 GND 引脚连接到 Arduino 的 GND 引脚。
  • 将 NRF 模块的 Vcc 引脚连接到 Arduino UNO 的 3.3 V 引脚。
  • 将 NRF 的 CE 引脚(即引脚 3)连接到 Arduino UNO 的数字引脚 9。
  • 将 NRF 的 CSN 引脚(即引脚 4)连接到 Arduino UNO 的数字引脚 8。
  • 将 NRF 的 SCK 引脚(即引脚 5)连接到 Arduino UNO 的数字引脚 13。
  • 将 NRF 的 MOSI 引脚(即引脚 6)连接到 Arduino UNO 的数字引脚 11。
  • 将 NRF 的 MISO 引脚(即引脚 7)连接到 Arduino UNO 的数字引脚 12。

这将完成我们无人机接收器的硬件设置。现在我们只需要上传代码,我们就完成了设置。但我们不会直接将最终代码上传到我们的 Arduino UNO。在上传最终代码之前,我们将在 Arduino UNO 上上传一个测试代码。测试代码的作用是将接收器接收到的值显示在 Arduino IDE 的串行监视器上,然后我们将最终代码上传到我们的 Arduino UNO。所有这些事情都将在下一步中完成。

测试完成发射器接收器对

到此,我们完成了发射器的完整设置和无人机接收器的硬件设置。现在我们需要测试这两块,因此我们需要执行以下步骤:

在存储库中,有一个名为“ ​Receiver_test”的文件。该文件是我们的发射器接收器对性能的测试文件。

在我们的 Arduino IDE 中打开代码,然后将接收器电路连接到我们的 PC,在选择正确的板和 COM 端口后,点击上传按钮。

完成上传后,需要保持接收器与 PC 的连接并打开发射器。现在打开 Arduino IDE 的串行监视器,将波特率设置为 250000。选择波特率后,将看到 4 个值:Throttle、Yaw、Pitch 和 Roll。如果将发射器的操纵杆移动到不同的方向,您会观察到串行监视器的值也会随之变化。这将确认我们的发射器和接收器对工作正常。

现在已经确认,我们的发射器和接收器对工作正常。我们现在可以将最终代码上传到接收器的 Arduino UNO。该代码位于 Github 存储库中,名称为“ Drone_Receiver” 。在 Arduino IDE 中打开该文件。选择正确的 COM 端口和板,然后点击上传按钮。

通过以上的步骤,我们已经为自己的四轴飞行器构建了自己的无人机发射器和接收器对。

本文中所用到的一些代码

如果您对此项目有任何想法、意见或问题,请在下方留言。

以上内容翻译自网络,原作者:Akarsh Agarwal,如涉及侵权,可联系删除。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论