怎样用nRF24l01模块创建无线连接

电子说

1.2w人已加入

描述

nRF24L01无线电收发器提供了非常有效和廉价的通信方式。

nRF24l01模块实际上是一个无线电收发器模块,它工作在2.4 GHz频率上。该模块具有同时发送和接收数据的功能,可用于各种IOT项目以创建无线连接。通过显示它是一个非常小的模块,但它的功能是惊人的。

这个模块可以用于两个方式沟通的目的,在本教程中我们设置两个Arduino uno之间的单向通信。

开始之前我们有下载一些Arduino库,以便顺利运行程序。您可以在此处下载库文件。

nRF24lL01的引脚图

nRF24L01

Reciver Circuit

nRF24L01

按照上图,将nRF24L01和伺服电机连接到arduino。

重要提示:输入电压为1.9V~3.6V,不要超过此电压,否则会烧毁模块。

的Arduino ------------- nRF24L01的

Pin 9 ----------- CE

Pin 10 --------- CS(N)

Pin 11 ---------- MOSI

Pin 12 --------- MISO

Pin 13 ---------- SCK

引脚3 -------------伺服信号引脚

3.3v ---------- --- VCC

GND ---------- - GND

现在将下面给出的接收器代码上传到第一个Arduino。

#include 
#include 
#include 
#include       // include the Servo library 
Servo myServo;   

int msg[1];
RF24 radio(9,10);//check your pin number on RF24 github check you have the right
//pin number for the arduino you're using. this pin is diffrent for diffrent arduino models.

const uint64_t pipe = 0xF0F0F0F0D2L;


void setup(void)
{
 myServo.attach(3);
  Serial.begin(9600);
  radio.begin();
  radio.openReadingPipe(1, pipe);
  radio.startListening();
  myServo.write(0);      // initial position of servo at angle 0
 
}

void loop(void)
{
  if(radio.available()){
    bool done = false;
    while (!done) {
      done = radio.read(msg, 1);
      Serial.println(msg[0]);
      if (msg[0] == 212) {
       myServo.write(180); 
      }
      else {   
            myServo.write(0); 
      }
    }
  }
}

发送器电路

nRF24L01

按照上图,将nRF24L01和伺服电机连接到arduino。

重要提示:输入电压为1.9V~3.6V,不要超过此电压,否则会炸毁模块。

的Arduino ------------- nRF24L01的

Pin 9 ----------- CE

Pin 10 --------- CS(N )

Pin 11 ---------- MOSI

Pin 12 --------- MISO

Pin 13 ---------- SCK

5脚-------------按钮

3.3v ------------- VCC

GND ------------ GND

现在将下面给出的发射机代码上传到第二个Arduino。

现在给Arduino板供电并按下按钮,发现伺服旋转。

#include 
#include 
#include 

int msg[1];
RF24 radio(9,10);//check your pin number on RF24 github check you have the right
//pin for the arduino you're using. this pin number is diffrent for diffrent arduino models.

const uint64_t pipe = 0xF0F0F0F0D2L;

int buttonPin1 = 5;
int buttonState1 = 0;

void setup(void)
{
  Serial.begin(9600);
  radio.begin();
  radio.openWritingPipe(pipe);
  pinMode(buttonPin1, INPUT);
  
}

void loop(void)
{
  buttonState1 = digitalRead(buttonPin1);
 
  
  if (buttonState1 == HIGH)
  {
    msg[0] = 212;
    radio.write(msg, 1);
  }
 
}

谢谢你,希望教程帮助你......

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分