麻瓜随笔:无线数传之nRF24L01的折磨
麻瓜随笔:无线数传之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程序,要相应修改:
// This simple sketch opens two pipes for these two nodes to communicate
// back and forth.
// Open 'our' pipe for writing
// Open the 'other' pipe for reading, in position #1 (we can have up to 5 pipes open for reading)
//if ( role == role_ping_out )
{
//注释掉为 Reading Node
//radio.openWritingPipe(pipes);
//radio.openReadingPipe(1,pipes);
}
//else。
{
//注释掉为 Writing Node
radio.openWritingPipe(pipes);
radio.openReadingPipe(1,pipes);
}
无线数传初步连通,下一步考虑如何收发数据,传递传感器的状态。一点点心得,还有走过的弯路,与大家一起分享
RF24Network和RF24有什么区别?之前还不知道有两个版本呢 benzking 发表于 2013-1-3 10:37 static/image/common/back.gif
RF24Network和RF24有什么区别?之前还不知道有两个版本呢
RF24是基本库
RF24Network是基于RF24的扩展
你去看看库文件的介绍,就明白了 本帖最后由 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口就能受得了? raiseyu 发表于 2013-3-21 20:56 static/image/common/back.gif
为什么按照接线顺序
CE---------9
CSN-------10
spi管脚是可以耐受5v的电平的,很多器件为了适应范围广,都是可以兼容5v的电平,比如enc28j60也是这样,详情可以看看nrf24l01的文档 我在uno上用nRF24L01需要占用8、9、10、11、12、13一共六个数字接口,其中还有9、10、11这三个PWM口。实现了通信以后我的uno接口被占去一半,只剩下三个pwm接口,我不够用呀,有什么办法能省下pwm接口吗? 求助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
)
你好,我也遇到拔掉GND竟然发送OK的事情,这个到底是什么原因呢 拔掉GND虽然显示发射OK但是接收不一定OK吧,试下直接在nrf模块的那个VCC-GND之间加10uf电容试试? Halry 发表于 2014-7-26 11:40 static/image/common/back.gif
拔掉GND虽然显示发射OK但是接收不一定OK吧,试下直接在nrf模块的那个VCC-GND之间加10uf电容试试?
为啥要这样做 joln 发表于 2014-11-1 23:08 static/image/common/back.gif
为啥要这样做
说是电流不够 ourutopia 发表于 2014-11-2 20:44 static/image/common/back.gif
说是电流不够
加电容搞定
页:
[1]