树莓派与Arduino Leonardo使用NRF24L01无线模块通信之基于RF24库 (一) 配置与测试
引脚连接说明
与树莓派的连线
NRF24L01 => 树莓派
GND => GND
VCC => 3.3V
CE => GPIO25 即22管脚
CSN => CE0(GPIO8) 即 24管脚
SCK => SCLK(GPIO11)即23管脚
MOSI => MOSI(GPIO10)即19管脚
MISO => MISO(GPIO9)即21管脚
IRQ => GPIO18即12管脚

nRF24L01硬件连接
此模块是使用SPI方式连接,在标准SPI口基础增加CE和CSN引脚: nRF24L01 Arduino Leonardo
VCC <-> 3.3V
GND <-> GND
CE <-> D9
CSN <-> D10
MOSI <-> ICSP MOSI
MISO <-> ICSP MISO
SCK <-> ICSP SCK
IRQ <-> 不接
配置说明
树莓派
将RF24库复制到树莓派(或通过git直接获取),https://github.com/TMRh20/RF24.git。进入RF24目录后执行如下命令,进行编译和安装(选择SPI方式)
./configure --driver=SPIDEV
sudo make install -B
修改/etc/modprobe.d/raspi-blacklist.conf,如果其中存在
blacklist spi-bcm2708,将其注释。
修改/etc/modules文件,在其中追加一行,开启SPI。
spidev
reboot重启树莓派后,/dev下会新增spidev0.0和spidev0.1两个设备文件。
修改RF24/example_linux/GettingStarted.cpp文件,
同上面的Arduino一样,发送端不必修改,
接收端将radioNumber从默认的0修改为1。
在当前目录下执行make后,生成GettingStarted的二进制文件。
使用sudo ./ GettingStarted执行,并输入0进入接收模式。
如Arduino的发送端配置、运行正常,则正常发送回应包:

如果上面图片中的参数为0x00或者0xff,可能连接存在问题。
Arduino
从https://github.com/TMRh20/RF24.git下载RF24后,将其复制到Arduino安装目录下的libraries目录下,启动ArduinoIDE后,从例子中选择RF24->GettingStarted。
发送端不必修改,直接编译上传即可。
接收端将代码中的radioNumber从默认的0修改为1。
如上述配置接线正常,可在Serial Monitor中看到发送方和接收方的输出,大致如下:

可能由于接线问题导致程序无法正确传输数据,此时可以采用下面方法测试arduino是否正确连接nrf24l01:
去https://github.com/tmirun/Arduino-nrf24l01-learn 下载测试代码下载解压后你可以在里面找到一个叫 rf24_hardware_test 的文件夹, 打开里面的 rf24_hardware_test.ino 文件,
烧到arduino里面。然后打开串口调试窗口,在arduino加载完代码后 5 秒后会出现类似下面的内容 证明线全部好了, 如果全部出现 0xff 或 0x00请重新查看下链接是否正确。*注意 串口要调到 57600否则会出现乱码。

树莓派与Arduino Leonardo使用NRF24L01无线模块通信之基于RF24库 (一) 配置与测试的更多相关文章
- 树莓派与Arduino Leonardo使用NRF24L01无线模块通信之基于RF24库 (六) 树莓派查询子节点温湿度数据
nrl24l01每次只能发送4个字节,前面说到,第一个字节用于源节点,第二个字节用于目的节点.因此只剩下两个字节用于温度和湿度,一个字节只有八位,需要表示温湿度的正负数,因此每个字节的第一位表示正负符 ...
- 树莓派与Arduino Leonardo使用NRF24L01无线模块通信之基于RF24库 (五) 树莓派单子节点发送数据
本项目中各个节点和树莓派的通信不区分信道,因此如果由树莓派发送给特定节点的数据会被所有节点接收到,因此子节点可以判别该数据是否发给自己的,需要在数据的第二个字节中加入目标节点的编号(第一个字节为源节点 ...
- 树莓派与Arduino Leonardo使用NRF24L01无线模块通信之基于RF24库 (三) 全双工通信
设计思路 Arduino Leonardo初始化为发送模式,发送完成后,立即切换为接收模式,不停的监听,收到数据后立即切换为发送模式,若超过一定时间还为接收到数据,则切换为发送模式. 树莓派初始化为接 ...
- 树莓派与Arduino Leonardo使用NRF24L01无线模块通信之基于RF24库 (四) 树莓派单子节点查询
考虑到项目的实际需要,树莓派作为主机,应该只在需要的时候查询特定节点发送的数据,因此接收到数据后需要根据头部判断是否是自己需要的数据,如果不是继续接收数据,超过一定时间未查询到特定节点的数据,则退出程 ...
- 树莓派与Arduino Leonardo使用NRF24L01无线模块通信之基于RF24库 (二) 发送自定义数据
在我的项目里,树莓派主要作为中心节点,用于接收数据,Arduino作为子节点,用于发送数据,考虑到以后会有很多子节点,但又不至于使得代码过于繁琐,因此所有的传输数据添加一个头部编号用于区分不同节点. ...
- STC8H开发(五): SPI驱动nRF24L01无线模块
目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...
- nRF2401A/nRF24L01/nRF24L01+无线模块最常见问题汇集(转)
俗话说:每个人一生下来什么都会的,都是通过自己努力和探索出来的,NRF系列芯片,刚开始都好奇心加兴趣才来捣鼓它的,刚开始做硬件和软件,没有收发数据弄得整个人头都快炸开了,所以在此和大家分享一下前辈的经 ...
- nRF24L01无线模块笔记
nRF24L01模块 官网链接: https://www.nordicsemi.com/Products/nRF24-series 常见的无线收发模块, 工作在2.4GHz频段, 适合近距离遥控和数据 ...
- [51单片机] nRF24L01 无线模块 测试 按键-灯-远程控制
哈哈,穷吊死一个,自己做的一个超简单的板还没有电源提供,只得借助我的大开发板啦.其实这2个模块是完全可以分开的,无线嘛,你懂得!进入正题,这个实验的功能就是一个发送模块(大的那个板)连接4个按键,通过 ...
随机推荐
- Python2.7在Windows下CMD编码为65001/utf-8时print报错[Errno 0]/[Errno 2]
使用python2.7处理unicode的字符串,环境变量已设置PYTHONIOENCODING为utf-8,cmd编码为utf-8时print unicode字符串会报错[Errno 0]或[Err ...
- FSCapture注册码
企业版序列号: name:bluman serial/序列号/注册码:VPISCJULXUFGDDXYAUYF
- pwd的实现20155301
pwd的实现 任务要求: 1) 学习pwd命令 2) 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3) 实现mypwd 4) 测试mypwd 实现过程 1)首先查看是否有有用 ...
- MacOS下netstat和lsof使用的若干问题
[-= 博客目录 =-] 1-相关说明 1.1-博客介绍 1.2-netstat和lsof 2-学习过程 2.1-netstat 2.2-lsof 2.3-netstat和lsof区别和关联 3-资料 ...
- WPF不同线程之间的控件的访问
原文:WPF不同线程之间的控件的访问 WPF不同线程之间的控件是不同访问的,为了能够访问其他线程之间的控件,需要用Dispatcher.Invoke执行一个新的活动即可. 例如: public voi ...
- JavaScript总结(六)
使用DOM操纵样式表 ✍ 操纵元素的Style样式属性(所有的均对于CSS的内联式) 对于每个CSS样式,Style对象都包含了一个相对应的属性,只需要用到style属性即可: Div.style.c ...
- exBSGS学习笔记
exBSGS学习笔记 Tags:数学 题目的话就做下洛谷的模板好了 // luogu-judger-enable-o2 #include<algorithm> #include<io ...
- 22-[jQuery]-选择器, js jQuery对象转换
1.基础选择器 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- Codeforces 1155 D Beautiful Array DP,最大子段和
题意 给出一个长度为\(n\)的数列和数字\(x\),经过最多一次操作将数列的一个子段的每个元素变为\(a[i]*x\),使该数列的最大子段和最大 分析 将这个数列分为3段考虑,第一段和第三段是未修改 ...
- idea web项目debug模式实时更新按钮不生效原因
必须两个都开启才能生效,单按按钮不能生效,但是有时候自动更新不生效的时候按按钮后可以生效, 如果前端目录或后端内容实在不更新,就删掉out目录和target目录,重新启动服务器即可