nrl24l01每次只能发送4个字节,前面说到,第一个字节用于源节点,第二个字节用于目的节点.因此只剩下两个字节用于温度和湿度,一个字节只有八位,需要表示温湿度的正负数,因此每个字节的第一位表示正负符号,后七位表示数据,最大能表示+-127. 树莓派代码 如下: #include <cstdlib> #include <iostream> #include <sstream> #include <string> #include <unistd.h&g…
本项目中各个节点和树莓派的通信不区分信道,因此如果由树莓派发送给特定节点的数据会被所有节点接收到,因此子节点可以判别该数据是否发给自己的,需要在数据的第二个字节中加入目标节点的编号(第一个字节为源节点的编号). 设计思路:基于前面提到的两个节点进行双工通信,树莓派不断的向节点发送数据,为了保证数据发送可以到达,持续发送100ms. 树莓派代码 如下: #include <cstdlib> #include <iostream> #include <sstream> #i…
考虑到项目的实际需要,树莓派作为主机,应该只在需要的时候查询特定节点发送的数据,因此接收到数据后需要根据头部判断是否是自己需要的数据,如果不是继续接收数据,超过一定时间未查询到特定节点的数据,则退出程序,避免无限等待. 本项目中各个节点和树莓派的通信不区分信道,因此如果由树莓派发送给特定节点的数据会被所有节点接收到,因此子节点可以判别该数据是否发给自己的,需要在数据的第二个字节中加入目标节点的编号(第一个字节为源节点的编号). 树莓派代码 如下: #include <cstdlib> #inc…
设计思路 Arduino Leonardo初始化为发送模式,发送完成后,立即切换为接收模式,不停的监听,收到数据后立即切换为发送模式,若超过一定时间还为接收到数据,则切换为发送模式. 树莓派初始化为接收模式,接收到数据后立即切换为发送模式,超过一定时间为接收到数据则切换为发送模式,发送数据后立即切换为接收模式. 代码实现 Arduino Leonardo代码 如下: #include <SPI.h> #include "RF24.h" #include <SPI.h&…
在我的项目里,树莓派主要作为中心节点,用于接收数据,Arduino作为子节点,用于发送数据,考虑到以后会有很多子节点,但又不至于使得代码过于繁琐,因此所有的传输数据添加一个头部编号用于区分不同节点. nrf24l01支持的数据最大为4个字节,因此使用最高位的一个字节(8位)作为节点编号,剩余三个字节用于传输数据.以下为具体代码: Arduino Leonardo程序 主要用于发送数据给树莓派,同时接收树莓派的响应数据. #include <SPI.h> #include "RF24.…
引脚连接说明 与树莓派的连线 NRF24L01 => 树莓派 GND          =>   GND VCC          =>    3.3V CE           =>   GPIO25 即22管脚 CSN         =>   CE0(GPIO8) 即 24管脚 SCK         =>   SCLK(GPIO11)即23管脚 MOSI       =>   MOSI(GPIO10)即19管脚 MISO       =>   MIS…
目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(三): 基于FwLib_STC8的模数转换ADC介绍和演示用例说明 STC8H开发(四): FwLib_STC8 封装库的介绍和使用注意事项 STC8H开发(五): SPI驱动nRF24L01无线模块 nRF24L01模块 整体介绍和STM32F1, STM32F4, STC12的代码…
俗话说:每个人一生下来什么都会的,都是通过自己努力和探索出来的,NRF系列芯片,刚开始都好奇心加兴趣才来捣鼓它的,刚开始做硬件和软件,没有收发数据弄得整个人头都快炸开了,所以在此和大家分享一下前辈的经验,希望大家会少走弯路. Q:最近在选型的时候发现基本常见的无线模块都是3V供电,而我使用的单片机是5V的,它们之间要怎么连接呢?直接连接会不会损坏模块? 回答: 如果你使用的51单片机的P0口是高阻引脚,可以直接将无线模块的IO脚连接到P0端口,并在对应的连线与3V电源间放置1K~10K左右的偏置…
nRF24L01模块 官网链接: https://www.nordicsemi.com/Products/nRF24-series 常见的无线收发模块, 工作在2.4GHz频段, 适合近距离遥控和数据传输. nRF24L01是一个能兼顾距离和数据速率的无线模块, 在空旷环境下,2M速率15米, 1M速率30米, 250K速率能达到50米. 和蓝牙相比距离更远, 和ESP8266这类以太网WiFi相比环境适应力更强. 参数 2.4GHz ISM频段 250Kbps, 1Mbps, 2Mbps三种空…
哈哈,穷吊死一个,自己做的一个超简单的板还没有电源提供,只得借助我的大开发板啦.其实这2个模块是完全可以分开的,无线嘛,你懂得!进入正题,这个实验的功能就是一个发送模块(大的那个板)连接4个按键,通过按动这4个不同的按键来发送4种不同的命令,来控制接收端(小的板)点亮4个不同的灯. >_<!首先是发送模块: void main() { uchar Tx_Buf1[]={}; //发送的信息1 uchar Rx_Buf[]; //接收到的数据暂存器,最多32字节数据 init_NRF24L01(…