NRF24L01模块多发一收通信(STM32)
前言
当笔者用STM32F103C8T6调出NRF24L01模块一对一通信后,突然心血来潮想调多对一通信,网上查了一圈资料发现NRF24L01无线模块多对一通信要用其他的通道,而一个NRF24L01模块的通道也就只有6个通道,也就是说,最多只能支持六对一通信,而且设置多对一通信时又要修改工程函数的好多地方,比较麻烦。笔者在学长的指导下,想出了解决的方法,免去了比较麻烦的操作,本文将详细介绍这种解决方法。
一、解决思路
一个设备一个ID编号,每个发送设备有自己独一无二的编号,我只需把ID编号和要发送的数据一起打包发送到接收设备,接收设备再将每接收到的一包数据拆解,通过识别出ID号就可以知道是哪个设备发送的数据了。理论上来说,可以扩展到6个以上NRF24L01模块通信。二、实验过程
1.设备ID号定义
在发送设备的主函数中宏定义一个数字编号。
代码如下(示例):
#define ID 1 //一个NRF一个ID号
2.数据打包发送
用sprintf函数将多组数据打包到一个数组中再发送,将ID号放在首位,方便接收端判断。
代码如下(示例):
*函数功能:数据打包发送
*输 入:str 要发送的字符串
*/
void NRF_Send(u8 str[])
{