引脚连接说明

与树莓派的连线

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库 (一) 配置与测试的更多相关文章

  1. 树莓派与Arduino Leonardo使用NRF24L01无线模块通信之基于RF24库 (六) 树莓派查询子节点温湿度数据

    nrl24l01每次只能发送4个字节,前面说到,第一个字节用于源节点,第二个字节用于目的节点.因此只剩下两个字节用于温度和湿度,一个字节只有八位,需要表示温湿度的正负数,因此每个字节的第一位表示正负符 ...

  2. 树莓派与Arduino Leonardo使用NRF24L01无线模块通信之基于RF24库 (五) 树莓派单子节点发送数据

    本项目中各个节点和树莓派的通信不区分信道,因此如果由树莓派发送给特定节点的数据会被所有节点接收到,因此子节点可以判别该数据是否发给自己的,需要在数据的第二个字节中加入目标节点的编号(第一个字节为源节点 ...

  3. 树莓派与Arduino Leonardo使用NRF24L01无线模块通信之基于RF24库 (三) 全双工通信

    设计思路 Arduino Leonardo初始化为发送模式,发送完成后,立即切换为接收模式,不停的监听,收到数据后立即切换为发送模式,若超过一定时间还为接收到数据,则切换为发送模式. 树莓派初始化为接 ...

  4. 树莓派与Arduino Leonardo使用NRF24L01无线模块通信之基于RF24库 (四) 树莓派单子节点查询

    考虑到项目的实际需要,树莓派作为主机,应该只在需要的时候查询特定节点发送的数据,因此接收到数据后需要根据头部判断是否是自己需要的数据,如果不是继续接收数据,超过一定时间未查询到特定节点的数据,则退出程 ...

  5. 树莓派与Arduino Leonardo使用NRF24L01无线模块通信之基于RF24库 (二) 发送自定义数据

    在我的项目里,树莓派主要作为中心节点,用于接收数据,Arduino作为子节点,用于发送数据,考虑到以后会有很多子节点,但又不至于使得代码过于繁琐,因此所有的传输数据添加一个头部编号用于区分不同节点. ...

  6. STC8H开发(五): SPI驱动nRF24L01无线模块

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  7. nRF2401A/nRF24L01/nRF24L01+无线模块最常见问题汇集(转)

    俗话说:每个人一生下来什么都会的,都是通过自己努力和探索出来的,NRF系列芯片,刚开始都好奇心加兴趣才来捣鼓它的,刚开始做硬件和软件,没有收发数据弄得整个人头都快炸开了,所以在此和大家分享一下前辈的经 ...

  8. nRF24L01无线模块笔记

    nRF24L01模块 官网链接: https://www.nordicsemi.com/Products/nRF24-series 常见的无线收发模块, 工作在2.4GHz频段, 适合近距离遥控和数据 ...

  9. [51单片机] nRF24L01 无线模块 测试 按键-灯-远程控制

    哈哈,穷吊死一个,自己做的一个超简单的板还没有电源提供,只得借助我的大开发板啦.其实这2个模块是完全可以分开的,无线嘛,你懂得!进入正题,这个实验的功能就是一个发送模块(大的那个板)连接4个按键,通过 ...

随机推荐

  1. 在vivado中自定义编辑器

    在 Tools - Options - Text Editor 中选择 Custom Editor 这里我用的gvim,在Editor文本框中输入: C:/Vim/vim80/gvim.exe --r ...

  2. WPF 学习笔记-在WPF下创建托盘图标

    原文:WPF 学习笔记-在WPF下创建托盘图标 首先需要在项目中引用System.Windows.Forms,System.Drawing; using System; using System.Co ...

  3. 【python3】文件格式转换windows转为unix

    一.场景 工作需要,有时要将文件上传到 unix 的服务器,希望将文件的格式改为 Unix(LF), 可以通过py脚本来批量处理. 二.代码 import os # 转换文件格式和编码方式 def t ...

  4. 07 -模型层ORM

    1.orm简介 2. models.py from django.db import models # Create your models here. class Book(models.Model ...

  5. [TJOI2015]概率论[卡特兰数]

    题意 \(n\) 个节点二叉树的叶子节点的期望个数. \(n\leq 10^9\) . 分析 实际询问可以转化为 \(n\) 个点的不同形态的二叉树的叶子节点总数. 定义 \(f_n\) 表示 \(n ...

  6. SQL语句汇总(一)——数据库与表的操作以及创建约束

    首先,非常感谢大家对上篇博文的支持,真是让本菜受宠若惊,同时对拖了这么久才出了此篇表示抱歉. 前言:此文旨在汇总从建立数据库到联接查询等绝大部分SQL语句.SQL语句虽不能说很多,但稍有时间不写就容易 ...

  7. linux 修改文件最大数

    ulimit -a 查看所有 open files (-n) 1024 是linux操作系统对一个进程打开的文件句柄数量的限制(也包含打开的套接字数量) ulimit -SHn 10000 ##临时修 ...

  8. 二级域名 cookie session 共享

    setcookie('login','12345',0,'/','.abc.com'); session_set_cookie_params(0,'/','.abc.com');session_sta ...

  9. python描述符详解

    1描述符: 描述符是指将某种特殊类型的类的实例支配给另外一个类的属性. 对于特殊类型必须实现以下三个方法中至少一个方法:    def __get__(self,instance,owner): -用 ...

  10. MAVEN项目导入src/test/java项目报错

    转载博客:https://blog.csdn.net/gengjianchun/article/details/78679036    https://blog.csdn.net/jsloveyou/ ...