|
麻瓜随笔:无线数传之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[0]);
- //radio.openReadingPipe(1,pipes[1]);
- }
- //else。
- {
- //注释掉为 Writing Node
- radio.openWritingPipe(pipes[1]);
- radio.openReadingPipe(1,pipes[0]);
- }
复制代码
无线数传初步连通,下一步考虑如何收发数据,传递传感器的状态。一点点心得,还有走过的弯路,与大家一起分享
|
|