Arduino通过NRF24L01实现双机无线通信

双机无线通信


前言

无线通信对于做各种项目来说都很加分,今天使用这个nrf模块进行无线通信。
在这里插入图片描述

我原本是想用两个蓝牙的,但是蓝牙有个缺点,就是传输距离短,这个传输距离可以达到1000米。

一、接线

在这里插入图片描述

二、Arduino代码

1.主机

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(9,10);// CE,CSN
const byte address[6] = "00001";//指定一个地址
void setup()
{
    
    
  Serial.begin(9600);//设置波特率
  radio.begin();
  radio.openWritingPipe(address);
  radio.setPALevel(RF24_PA_MIN);
  radio.stopListening();//发送端设置为只发,也可以互传的
}
void loop()
{
    
    
  const char text1[] = "hello";//发送的内容
  radio.write(&text1,sizeof(text1));
}

2.从机

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(9,10);// CE,CSN
const byte address[6] = "00001";//与主机地址一致
void setup()
{
    
    
  Serial.begin(9600);
  radio.begin();
  radio.openReadingPipe(0,address);
  radio.setPALevel(RF24_PA_MIN);
  radio.startListening();//只进行接收
}
 
void loop()
{
    
    
  if(radio.available()){
    
    
  char text[32] = "";
  radio.read(&text,sizeof(text));
  Serial.println(text);//串口打印接收到的数据
  }
}

我是通过主机识别手势,然后发送到从机上,使用的是两个arduino uno 有时候发送不了的原因有很多,比如供电不稳定,国产arduino本身问题,我是换了两个原装的arduino这些问题就全解决了
在这里插入图片描述

总结

实现一对一发送就是上面这些步骤,实现双机互传也很简单,后续我用到的时候也会进行更新。

猜你喜欢

转载自blog.csdn.net/qq_51963216/article/details/128560842