Arduino Mega 2560与Arduino Uno R3——nRF24L01通信

nRF24L01通信

1. nRF24L01通信简介

(1)nRF24L01通信经历

       先说说小菜鸟蛋疼调试模块的经历吧~有可能某些人觉得没有必要写这篇文章,因为Arduino作为开源硬件,本身容易上手例程也很多,直接跑就可以判断是软件问题还是硬件问题了。如果真的这样简单就没有下文了,因为在我刚刚了解的范围内,我觉得Arduino Uno R3的示例是很充分的,做到前面这一点真的一点问题都没有。但是新增的扩展板在国内其实销量很小,毕竟五花八门的处理器充斥着大大小小的市场,作为Arduino这种除了容易编程加上修改硬件局限性很大的品种来说没什么份额。所以如果觉得仅仅用Uno R3就够了,只是have fun一下就够了,那Arduino对你来说局限性确实很大~Mega板前几天刚到,这么便宜的板子收到自己都感动了。不过本人像死人一样守在屏幕前等结果,想想就觉得相当惨。

(2) Arduino Uno R3

       这个就不想说了,用起来很舒服,就是硬件资源太少了,什么事也干不了,传说中的have fun。

(3)Arduino Mega 2560

       我也是刚入手,以后有兼容性的问题再说~

(4)SPI通信

       射频模块通信部分,即使不懂也没关系,通信的目的就是用来传递数据。数据才是最重要的。以前读写SD卡时用过这个,现在已经不想记起来了。

2. 接线图

       左上图为nRF24L01模块图,左下图为nRF24L01引脚图,中上和右上图为Arduino Uno R3与nRF24L01接线图,中下和右下图为Arduino Mega 2560与nRF24L01接线图。

3. 代码实现

(1)代码来源

       进入elecfreaks网站下载nRF24L01模块的示例程序,在此不给出程序内容了,但是要注意nRF24L01的示例代码有两个版本v1.0和v1.1,v1.0适用于Uno R3,v1.1适用于Mega 2560。v1.0的接收端代码烧给Uno R3不需要修改,v1.1的发送端代码烧给Mega 2560编译时依然有问题,所以需要修改。

(2)代码修改部分

       Mega 2560的接线和Uno R3一致,Mega 2560的nRF24L01头文件修改如下。同时将nRF24L01_TX中所有的SCK, MOSI, MISO替换成SCK_PIN, MOSI_PIN, MISO_PIN。 

(3)实验结果

       实验结果和2个Uno R3板通信的结果一致,接收端显示如下:

4. 注意事项

        接收端的读取状态包括state=0, state=E, state=FF, state=40等情况。
(1)state=0或FF时:一定是状态寄存器读取失败,检查端口接线和代码的端口映射(宏定义),检查宏定义后的变量是否应用到了通信的函数中(即使编译通过也要注意);
(2)state=40时:出现在发送端先打开,接收端后打开的场合;
(3)state=E时:端口读取有效,为默认值,说明状态寄存器读取没有问题,同时也说明接线和代码版本都没有问题;
(4)state=其他值时:先从(1)开始检查。

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值