5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)

标题: 求助:NRF24L01和MWC [打印本页]

作者: demon04551    时间: 2013-8-11 21:01
标题: 求助:NRF24L01和MWC
我想用NRF24L01做接收器和MWC连接,不知道引脚怎么连,求高手指导,还有就是MWC里面的程序需要修改吗,改的话应该怎么改

作者: 449294177    时间: 2013-8-11 21:16
NRF24L01是SPI的,MWC要求是TTL,而且你是想用手机控制吗?

作者: demon04551    时间: 2013-8-11 21:43
449294177 发表于 2013-8-11 21:16
NRF24L01是SPI的,MWC要求是TTL,而且你是想用手机控制吗?

我想用arduino做一个遥控器,控制MWC,那要是这样的话,接收机和发射机应该选什么

作者: fryefryefrye    时间: 2013-8-11 22:47
demon04551 发表于 2013-8-11 21:43
我想用arduino做一个遥控器,控制MWC,那要是这样的话,接收机和发射机应该选什么

NRF24L01 是收发器件,接收机和发射机都用一样的。


你如果想飞控版直接接NRF24L01,你需要在MWC主程序里面嵌入NRF24L01的驱动。接线方法:你要看看有没有多余的空闲引脚可以接的,上网看看arduino怎么接NRF24L01


或者单独再弄一个arduino做一个独立的遥控接收器输出PPM,或者标准舵机信号。


或者输出MWC的串口遥控协议的数据。MWC串口可以接受遥控数据,自定义格式,看源代码就知道了。不过接收机还是要再搞一个anruino。


作者: demon04551    时间: 2013-8-12 18:28
fryefryefrye 发表于 2013-8-11 22:47
NRF24L01 是收发器件,接收机和发射机都用一样的。

[/backcolor ...

谢谢你,学到不少东西,还有个问题是MWC板子的中间有6根出来的引脚那是做什么的,是串口引脚吗?

作者: fryefryefrye    时间: 2013-8-12 21:05
demon04551 发表于 2013-8-12 18:28
谢谢你,学到不少东西,还有个问题是MWC板子的中间有6根出来的引脚那是做什么的,是串口引脚吗?

不知道你的是什么板子啊,看板子而定的。
你既然都要自己搞这个了,肯定要搞清楚MWC用的芯片的所有的引脚定义,那些用了,那些空闲。



作者: 刘博    时间: 2013-8-12 22:54
demon04551 发表于 2013-8-12 18:28
谢谢你,学到不少东西,还有个问题是MWC板子的中间有6根出来的引脚那是做什么的,是串口引脚吗?

6根是芯片的ISP接口,是用来给板子刷bootloader用的。


作者: demon04551    时间: 2013-8-21 23:23
刘博 发表于 2013-8-12 22:54
6根是芯片的ISP接口,是用来给板子刷bootloader用的。

那6根引脚是怎么接的,上面也没有标,貌似有一条白线

作者: 刘博    时间: 2013-8-22 08:52
demon04551 发表于 2013-8-21 23:23
那6根引脚是怎么接的,上面也没有标,貌似有一条白线

百度ISP接口定义

作者: demon04551    时间: 2013-8-24 20:54
fryefryefrye 发表于 2013-8-12 21:05
不知道你的是什么板子啊,看板子而定的。
你既然都要自己搞这个了,肯定要搞清楚MWC用的芯片的所有的引脚 ...

我找了一段NRF做接收机的程序可以转成PPM信号,可是怎么加入到MWC的程序里,不知道要加到哪里,看了半天MWC的程序还是没有头序

作者: fryefryefrye    时间: 2013-8-25 08:41
demon04551 发表于 2013-8-24 20:54
我找了一段NRF做接收机的程序可以转成PPM信号,可是怎么加入到MWC的程序里,不知道要加到哪里,看了半天M ...

你这个程序要写在一块单独的CPU上面,一头连着NRF,一头输出PPM给飞控。


作者: demon04551    时间: 2013-8-25 09:59
fryefryefrye 发表于 2013-8-25 08:41
你这个程序要写在一块单独的CPU上面,一头连着NRF,一头输出PPM给飞控。

我有过这个想法,一个用arduino nano做发送,别一个nano做接收,那接收这头的线怎么连呢?

#include "Wire.h" //LCD1602 IIC 库文件
#include "SPI.h" //24L01库文件
#include "Mirf.h"
#include "nRF24L01.h"
#include "MirfHardwareSpiDriver.h"

int data;
int aaa;
int bbb;
int ccc;
int ddd;
int eee;
int fff;

void setup(){
Mirf.spi = &MirfHardwareSpi; //加载24L01 SPI
Mirf.init();
Mirf.setRADDR((byte *)"serv1"); //接收地址" "
Mirf.payload = sizeof(int); //数据类型(整数)
Mirf.config();
}

void loop(){

if(Mirf.dataReady()){ //如果接收到数据则执行

Mirf.getData((byte *)&data); //接收数据

if (data>=0&&data<=999)
{
aaa=map(data,0,999,1100,1900); //这里为模拟量比例成 PPM频率 1100-1900,
}
if (data>=1000&&data<=1999)
{
bbb=map(data,1000,1999,1100,1900);
}

//ccc~fff自己写吧....

Mirf.rxFifoEmpty(); //清理24L01援存??
}
}

这个是我找到的接收的程序,要是做接收发到MWC,那后面应该修改下程序的吧,也不知道应该怎么改



作者: fryefryefrye    时间: 2013-8-25 10:09
demon04551 发表于 2013-8-25 09:59
我有过这个想法,一个用arduino nano做发送,别一个nano做接收,那接收这头的线怎么连呢?

#include " ...

曾经尝试用NRF24,最后失败告终。

接受端怎么都收不到发送端的数据。


作者: demon04551    时间: 2013-8-25 10:24
我的想法是用nrf24接收机的4个引脚分别接到MWC的roll,thir,pitch,yaw上,分别给他们四个发送PPM,这样理论应该可以吧

作者: aibing    时间: 2013-8-31 11:46
同求,帮楼主顶!!

作者: skypup    时间: 2014-2-8 00:23
fryefryefrye 发表于 2013-8-11 22:47
NRF24L01 是收发器件,接收机和发射机都用一样的。

[/backcolor ...

从芯片的接口来看,似乎是可行的。
Mega328 的MWC可以找出足够多的管脚。

SPI的 MOSI,MISO,SCK三个管脚中2个用于PWM输出,1个用于连接报***的鸣蜂器或LED,可以挪用至 nrf24l01。
这样还余下6个PWM输出,1个LED灯。

对于一些机型,5个PWM输出足够了,LED指示灯也可以不用。这样又多出2个管脚。

而nrf24l01还有3个管脚分别是:
TX与RX选择,这个在接收端可以固定为RX,不需占用管脚;
SPI选择,可以一直是被选择状态,不占用管脚;
中断,这个需要占用一个管脚。

中断这个可以占用一路PWM,也可以占用LED。看具体机型了。


软件方面,我刚刚接触2.4G模块,还不知该如何下手,向大家学习了。


作者: caifish    时间: 2014-2-8 09:51
你可以用模拟spi阿


作者: skypup    时间: 2014-2-21 16:55
本帖最后由 skypup 于 2014-2-21 16:56 编辑

实测了一下 nrf24l01.

原装PCB天线,地面高度 1米左右,地面拉距100米以内较流畅仅有少量丢包,100-160米明显丢包但可接受应当不会失控,230米时通讯中断。


有一个比较惊喜的结果:无论丢包有多严重,都未发现有误码!



作者: skypup    时间: 2014-2-22 12:49
今天用  MWC 的板子连了一下 nrf24l01.

引脚连接方式:
1-GND  -> GND
2-VCC  -> 3.3V(不要连到 5V)
3-CE   -> PWM In 5(D7/PD7)
4-CSN  -> PWM In 4(D6/PD6)
5-SCK  -> LED(D13/PB5)
6-MOSI -> PWM Out 5(D11/PB3)
7-MISO -> PWM Out 1(D12/PB4)
8-IRQ  -> PWM In 3(D2/PD2)



作者: skypup    时间: 2014-4-7 12:53
本帖最后由 skypup 于 2014-4-12 23:12 编辑



用 1mw (0dbm) 的nrf24l01, 试飞了一下。
mwc 2.3 的程序。

地面拉距达到了200米,超出200米后会触发失控保护。


作者: etopidea    时间: 2014-10-19 19:32
skypup 发表于 2014-4-7 12:53
用 1mw (0dbm) 的nrf24l01, 试飞了一下。
mwc 2.3 的程序。

你好,这几天也在玩小四轴,用接收机太重了,也想用NRF24L01P来直接控制,能指教一下吗?
谢谢!


作者: zhou5147    时间: 2014-12-14 00:47
skypup 发表于 2014-2-22 12:49
今天用  MWC 的板子连了一下 nrf24l01.

引脚连接方式:

D11不是被电机给占了吗?芯片不是382P的?


作者: skypup    时间: 2014-12-14 11:40
zhou5147 发表于 2014-12-14 00:47
D11不是被电机给占了吗?芯片不是382P的?

是 328P 喔。

好久远前的事儿了,记得有管脚被改动:


  // A0
  #define SERVO_1_PINMODE            pinMode(A0,OUTPUT); // TILT_PITCH - WING left
  #define SERVO_1_PIN_HIGH           PORTC |= 1<<0;
  #define SERVO_1_PIN_LOW            PORTC &= ~(1<<0);
  // A1
  #define SERVO_2_PINMODE            pinMode(A1,OUTPUT); // TILT_ROLL  - WING right
  #define SERVO_2_PIN_HIGH           PORTC |= 1<<1;
  #define SERVO_2_PIN_LOW            PORTC &= ~(1<<1);
  // A2
  #define SERVO_3_PINMODE            pinMode(A2,OUTPUT); // CAM TRIG  - alt TILT_PITCH
  #define SERVO_3_PIN_HIGH           PORTC |= 1<<2;
  #define SERVO_3_PIN_LOW            PORTC &= ~(1<<2);
  // D12(PB4) -> D4(PD4)
  #define SERVO_4_PINMODE            pinMode(4,OUTPUT); // new       - alt TILT_ROLL
  #define SERVO_4_PIN_HIGH           PORTD |= 1<<4;
  #define SERVO_4_PIN_LOW            PORTD &= ~(1<<4);
  // D11(PB3) -> D5(PD5)
  #define SERVO_5_PINMODE            pinMode(5,OUTPUT); // BI LEFT
  #define SERVO_5_PIN_HIGH           PORTD |= 1<<5;
  #define SERVO_5_PIN_LOW            PORTD &= ~(1<<5);
  // D3
  #define SERVO_6_PINMODE            pinMode(3,OUTPUT);  // TRI REAR - BI RIGHT
  #define SERVO_6_PIN_HIGH           PORTD|= 1<<3;
  #define SERVO_6_PIN_LOW            PORTD &= ~(1<<3);
  // D10
  #define SERVO_7_PINMODE            pinMode(10,OUTPUT); // new
  #define SERVO_7_PIN_HIGH           PORTB |= 1<<2;
  #define SERVO_7_PIN_LOW            PORTB &= ~(1<<2);
  // D9
  #define SERVO_8_PINMODE            pinMode(9,OUTPUT); // new
  #define SERVO_8_PIN_HIGH           PORTB |= 1<<1;
  #define SERVO_8_PIN_LOW            PORTB &= ~(1<<1);



作者: skypup    时间: 2014-12-14 11:40
// D12(PB4) -> D4(PD4)
// D11(PB3) -> D5(PD5)

印象中,这2个是不是被改过。


作者: zhou5147    时间: 2014-12-14 19:34
skypup 发表于 2014-12-14 11:40
是 328P 喔。

好久远前的事儿了,记得有管脚被改动:

好吧,加一芯片做接收机。

作者: godbyw    时间: 2015-4-1 13:27
是不是这样的,一块arduino+一块NRF24L01做发送机,一块arduino+一块NRF24L01做接收机,接收机再连接到mwc飞控板上。

作者: f596582105    时间: 2018-3-21 17:48
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年) (http://wz.5imx.com/) Powered by Discuz! X3.3