NRF24L01无线通信模块的快速上手

目录

0.NRF24L01无线通信资料

1.NRF24L01无线通信模块

2.常用的无线通信模块

3.接线图

4.本程序的注意事项

解决办法:

5.程序移植方法

第一步:打开资料文件夹,程序源码,V1.0,复制NRF24L01模块代码到OLED显示屏工程Hardware文件下,将OLED模块代码改名为NRF24L01编程示例

第二步:在Keil里,Hardword目录右键,添加现存文件,代码中有注释了解作用

第三步:在NRF24L01.c中修改引脚

第四步:主函数调用


通过网盘分享的文件:NRF24L01无线通信模块

链接: https://pan.baidu.com/s/1H1Q5JiShu3nKC0Xv7h9KLQ?pwd=8eb4 提取码: 8eb4

--来自百度网盘超级会员v2的分享

将地址复制到浏览器的地址栏即可


1.NRF24L01无线通信模块

中间的贴片小模块,会出现丢包的现象,解决办法:给这个模块的VCC和GND之间加一个电容,滤波


2.常用的无线通信模块

NRF24L01无线通信模块和蓝牙模块

相较于蓝牙通信模块, NRF24L01的优点是通信更加直接,不需要配对、连接等繁琐的操作,通信距离也更远


3.接线图


4.本程序的注意事项

这个NRF24L01模块是半双工通信的,半双工就是发送的时候不能同时接收,所以要避免同时发同时收的现象

解决办法:

1.如果数据发送频率比较慢,对数据完整性没有要求,那其实可以不管数据碰撞,通信双方就各发各的,碰撞的概率比较小
2.对通信双方进行简单的同步

例如规定遥控器为主机,小车为从机,主机每隔50ms主动发送一次数据,从机不允许发送数据,而是只有在收到主机的数据之后,在随后的50ms之内的时间段里,才允许发送数据

这样从机发送数据总是会在主机发送数据的间隔之中
3.更复杂的同步策略,还是规定主机和从机,主机可以发数据,从机不允许主动发数据,同时对主机发送的数据,进行进一步的上层协议规定

比如主机发送一个数据包的第一个字节,如果为0,表示主机写,后续的数据表示要给从机的数据,这时单纯地主机发送,从机接收就行了,如果为1,表示主机读,后续的数据可以规定为主机想要读什么,主机发送读指令后,开始转入被动接收状态,从机收到读指令后,开始进行主动发送

这样就能协调主机和从机,避免数据碰撞


5.程序移植方法

假设要移植到OLED显示代码上,修改引脚接线如图从右到左,依次就是:CE,接到PA8、CSN,接到PB15、SCK,接到PB14、MOSI,接到PB13、MISO,接到PB12,进入代码工程后配置引脚

第一步:打开资料文件夹,程序源码,V1.0,复制NRF24L01模块代码到OLED显示屏工程Hardware文件下,将OLED模块代码改名为NRF24L01编程示例

第二步:在Keil里,Hardword目录右键,添加现存文件,代码中有注释了解作用

只调用这三个函数就能实现无线通信的功能,最后一个一般不用


指定数据是用这些函数

第三步:在NRF24L01.c中修改引脚

第四步:主函数调用

相关推荐
FreakStudio11 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
✎ ﹏梦醒͜ღ҉繁华落℘16 天前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
u1521096484916 天前
S.S.Audio PRO A2音频隔离器
嵌入式硬件·音视频·实时音视频·视频编解码·视频
zd84510150016 天前
RS485 总线详解
单片机·嵌入式硬件
半条-咸鱼16 天前
【STM32】I2C协议原理、HAL读写与OLED显示操作
嵌入式硬件·c·信息与通信
牛根生同志16 天前
SPI数据收发的时候 TXE与RXNE标志位置位的时机
stm32·spi·transfer
wohoo_wangzi16 天前
苏州晟雅泰电子:关于W25Q128JVSIQ这个芯片物料的参数,规格及应用领域
嵌入式硬件
goldenrolan16 天前
学习型红外控制系统稳定性挂测工装专项总结
软件测试·python·stm32·嵌入式·红外
✎ ﹏梦醒͜ღ҉繁华落℘16 天前
编程基础 --高内聚,低耦合
c语言·单片机
科芯创展16 天前
1A,1MHz,30VIN,XZ4115,降压恒流LED驱动芯片
单片机·嵌入式硬件