美文网首页
自己试着动手用nRF24L01和arduino做一个PPM接收机

自己试着动手用nRF24L01和arduino做一个PPM接收机

作者: 关爱单身狗成长协会 | 来源:发表于2020-03-11 19:06 被阅读0次

简介

自从前两天成功的给自己的福斯I6X遥控器加装多协议高频头后,突然的突发奇想“既然发射器制作成功了,那这样是不是也可以自己做一个接收机呢?”

于是上网查阅了资料,发现有不少方案。可我手上有的可以用的材料就只有nRF24L01arduino mini,可惜没找到对应的教程。

既然没教程,那有没有其他办法呢?看到边上改装好的遥控器后,想到了。既然多协议高频头里面所能够控制的无人机协议有源码,那么是不是接收端也有开源的代码呢?

上网再次一搜索,不出所料的,有好多,这里随便列举几个:

我这里选择了第一个v202-receiver项目进行改写实现。

实验

1.根据说明将原件连接后接入电脑

接线参考

arudino 引脚 nRF24
D13 SCK
D12 MISO
D11 MOSI
D8 CE
D7 CS

2.对频接收实验

打开源码并上传

上传完成后打开串口监视器

默认会显示一个Start,这时拿出遥控器,将俯仰杆往前,打开遥控器进行对频

对频成功后,会出现提示,并输出不同通道的对应的16进制值

摆动遥控杆,看看变化

3.尝试输出PPM信号

上一步我们成功的接收到了遥控数据,那现在来试着将数据输出为PPM

同样,我上网搜索了arduino的PPM相关库,最后选择了PPMEncoder库来生成PPM

在源码中引入PPMEncoder,定义输出引脚

.....
#include "PPMEncoder.h"
//我这里定义引脚10
#define OUTPUT_PIN 10
.....

setup函数中进行初始化(默认初始化通道数为8通道)

void setup() {
  ....
  //初始化引脚
  ppmEncoder.begin(OUTPUT_PIN);
  //初始化各通道对应值,值与顺序可以自行调整
  ppmEncoder.setChannelPercent(2,  0);
  ppmEncoder.setChannelPercent(3,  24);
  ppmEncoder.setChannelPercent(1,  24);
  ppmEncoder.setChannelPercent(0, 24);
  ppmEncoder.setChannelPercent(4,  0);
  ppmEncoder.setChannelPercent(5,  0);
  ppmEncoder.setChannelPercent(6,  0);
  ppmEncoder.setChannelPercent(7,  0);
}

loop下的case BOUND_NEW_VALUES:处,通过ppmEncoder.setChannelPercent设置通道与对应值

处理遥杆的值很简单,只要将对应的值转成输出的值就好了

剩下的4个通道我们需要计算

我在之前那nrf24_multipro高频头项目里的V2x2.ino文件找到了剩余通道的定义

enum {
  // flags going to byte 14  
  V2x2_FLAG_CAMERA = 0x01, // also automatic Missile Launcher and Hoist in one direction
  V2x2_FLAG_VIDEO  = 0x02, // also Sprayer, Bubbler, Missile Launcher(1), and Hoist in the other dir.
  V2x2_FLAG_FLIP   = 0x04,
  V2x2_FLAG_UNK9   = 0x08,
  V2x2_FLAG_LED    = 0x10,
  V2x2_FLAG_UNK10  = 0x20,
  V2x2_FLAG_BIND   = 0xC0,
  V2x2_FLAG_HEADLESS  = 0x0200,
  V2x2_FLAG_MAG_CAL_X = 0x0800, 
  V2x2_FLAG_MAG_CAL_Y = 0x2000
};

其实这些值对应到接收机代码,其实处理的就是rxValues.flags的值

这里处理方式就比较简单粗暴了

我直接将rxValues.flags的值,从最大值开始判断,然后减去

由于剩下的是4通道,所以

代码中的delay(2);我实际是删除了

上传代码,接上飞控

需要先设置飞控的接收机类型

然后遥控器对频测试

4.真机测试

焊接


将自制接收机接上小四轴


第一次测试没能飞起来,主要是因为电机转动瞬间,arduino就掉电重启了。

于是我随手拿来一个电容给接上了

对频

解锁


(σ゚∀゚)σ..:*☆起飞啦

总结

这个自制的接收机的遥控范围没有做测试,不过还有很多需要优化的地方,比如体积对于小四轴来说有点大,还有就是失去遥控信号后的一些逻辑处理需要优化的。这里的话就提供一个思路来给大家参考。

相关文章:

相关文章

网友评论

      本文标题:自己试着动手用nRF24L01和arduino做一个PPM接收机

      本文链接:https://www.haomeiwen.com/subject/ruyhjhtx.html