极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 24098|回复: 11

麻瓜随笔:无线数传之nRF24L01的折磨

[复制链接]
发表于 2013-1-2 22:18:10 | 显示全部楼层 |阅读模式
麻瓜随笔:无线数传之nRF24L01的折磨

Arduino,放下两年,重新拾起来,已经两个月了。以前用的IDE是0018,现在的IDE已经是1.0.2,不知道算不算是物非人是。

当年的Dumilanova已经老旧,也就入手了Uno和Mega2560,还有很新鲜的W5100,搞了一点小东西,有机会发帖慢慢表来。

一直想着,动手做点无线数传的东西,从淘宝arduinochina家弄了两块便宜的nRF24L01(rfinchina版本),又从张老师那里弄了点microduino和nRF24L01。东西一直放着,没信心搞起来。元旦下午闲着无事,坐在电脑旁边,总想搞点什么,结果一拿起来,还真是高的头晕脑胀。

张老师之前给过一些资料,总是觉得RF24Network比RF24更高级 ,也就从RF24入手,结果是两家的nRF都不行。无线这东西,有没有信号,接线对不对,软件对不对,还真是无从下手。

http://maniacbug.github.com/RF24/classRF24.html
RF24 Class Reference

http://maniacbug.github.com/RF24Network/classRF24Network.html
RF24Network Class Reference

无果,没办法,搬出来在极客工坊收藏的帖子“关于无线传输模块NRF24L01的小小研究”,感谢L.anrist的分享。
http://www.geek-workshop.com/thread-1393-1-1.html

IDE1.0.2环境下,编译不能通过,按照帖子提示,重新下载0022环境,终于能够编译通过,也能正常接收信号,终于通了。

关于库文件Mirf.h的使用,需要注意的是要在0022 或者0023以及更早的版本 1.0或者1.01都不支持。根据库文件的要求arduino和无线模块的连线需要改动成如下:
CE        -------        8
CSN        -------        7
SCK        -------13
MOSI        -------11
MISO        -------12
IRQ        不需要用到

之后,碰巧遇到张老师,聊起来才知道RF24Network和RF24有诀窍,没敢用的RF24Network倒是简单的,程序helloworld_rx 和 helloworld_tx.不需要任何修改就能编译运行。

根据库文件的要求 arduino和无线模块的连线需要改动成如下:
CE---------9
CSN-------10
SCK-------13
MOSI------11
MISO------12
IRQ不需要用到

RF24是需要修改程序,经张老师高人指点,相应修改以后,也正常运行。下面的GettingStarted example程序,要相应修改:

  1.   // This simple sketch opens two pipes for these two nodes to communicate
  2.   // back and forth.
  3.   // Open 'our' pipe for writing
  4.   // Open the 'other' pipe for reading, in position #1 (we can have up to 5 pipes open for reading)

  5.   //if ( role == role_ping_out )
  6.   {

  7. //注释掉为 Reading Node
  8.     //radio.openWritingPipe(pipes[0]);
  9.     //radio.openReadingPipe(1,pipes[1]);
  10.   }
  11.   //else。
  12.   {
  13. //注释掉为 Writing Node
  14.     radio.openWritingPipe(pipes[1]);
  15.     radio.openReadingPipe(1,pipes[0]);
  16.   }
复制代码


无线数传初步连通,下一步考虑如何收发数据,传递传感器的状态。一点点心得,还有走过的弯路,与大家一起分享

回复

使用道具 举报

发表于 2013-1-3 10:37:16 | 显示全部楼层
RF24Network和RF24有什么区别?之前还不知道有两个版本呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-3 13:44:01 | 显示全部楼层
benzking 发表于 2013-1-3 10:37
RF24Network和RF24有什么区别?之前还不知道有两个版本呢

RF24是基本库
RF24Network是基于RF24的扩展

你去看看库文件的介绍,就明白了
回复 支持 反对

使用道具 举报

发表于 2013-3-21 20:56:01 | 显示全部楼层
本帖最后由 raiseyu 于 2013-3-21 20:57 编辑

为什么按照接线顺序
CE---------9
CSN-------10
SCK-------13
MOSI------11
MISO------12
helloworld_tx始终都显示失败,偶然一次拔掉GND竟然发送OK了,肿么回事?
还有,不是说24l01电压不能超过3.3v的吗?怎么只有vcc需要3.3,其他io口就能受得了?
回复 支持 反对

使用道具 举报

发表于 2013-3-25 17:40:54 | 显示全部楼层
raiseyu 发表于 2013-3-21 20:56
为什么按照接线顺序
CE---------9
CSN-------10


spi管脚是可以耐受5v的电平的,很多器件为了适应范围广,都是可以兼容5v的电平,比如enc28j60也是这样,详情可以看看nrf24l01的文档
回复 支持 反对

使用道具 举报

发表于 2013-12-11 13:40:06 | 显示全部楼层
我在uno上用nRF24L01需要占用8、9、10、11、12、13一共六个数字接口,其中还有9、10、11这三个PWM口。实现了通信以后我的uno接口被占去一半,只剩下三个pwm接口,我不够用呀,有什么办法能省下pwm接口吗?
回复 支持 反对

使用道具 举报

发表于 2014-3-14 13:55:48 | 显示全部楼层
求助  ide 0023编译错误,库文件放进去了。提示(In file included from sketch_mar14a.cpp:2:
G:\arduino-0023\libraries\ping_server/Mirf.h:30:21: error: Arduino.h: No such file or directory
)  
回复 支持 反对

使用道具 举报

发表于 2014-7-23 22:19:34 | 显示全部楼层
你好,我也遇到拔掉GND竟然发送OK的事情,这个到底是什么原因呢
回复 支持 反对

使用道具 举报

发表于 2014-7-26 11:40:30 | 显示全部楼层
拔掉GND虽然显示发射OK但是接收不一定OK吧,试下直接在nrf模块的那个VCC-GND之间加10uf电容试试?
回复 支持 反对

使用道具 举报

发表于 2014-11-1 23:08:45 | 显示全部楼层
Halry 发表于 2014-7-26 11:40
拔掉GND虽然显示发射OK但是接收不一定OK吧,试下直接在nrf模块的那个VCC-GND之间加10uf电容试试?

为啥要这样做
回复 支持 反对

使用道具 举报

发表于 2014-11-2 20:44:18 | 显示全部楼层
joln 发表于 2014-11-1 23:08
为啥要这样做

说是电流不够
回复 支持 反对

使用道具 举报

发表于 2014-11-3 09:48:45 | 显示全部楼层
ourutopia 发表于 2014-11-2 20:44
说是电流不够

加电容搞定
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-23 19:02 , Processed in 0.040738 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表