Уроки по Ардуино, Raspberry Pi и радиоэлектронике

Беспроводное соединение в микроконтроллерах с использованием nRF24L01

Нет комментариев

Рассмотрим работу модуля-радиоприемника nRF24L01, который обеспечивает очень эффективный способ установки беспроводной связи.

Компоненты

Для изучения работы беспроводной связи на основе модуля nRF24L01 и Arduino нам понадобятся следующие компоненты:

  1. nRF24L01 - 2 шт.
  2. Перемычки
  3. Макет
  4. Arduino Uno - 2 шт
  5. Кнопочный переключатель (SparkFun) - 12 мм
  6. Сервопривод (Tower Pro MG996R)
  7. Резистор 475 Ом

Программное обеспечение:

Модуль nRF24l01

Модуль nRF24l01 фактически является модулем радиопередатчика и работает на частоте 2,4 ГГц.

Этот модуль имеет возможность отправлять и получать данные одновременно, и его можно использовать для различных проектов IOT для создания беспроводного соединения. Это довольно маленький по размерам модуль, но его возможности удивительны.

Модуль nRF24l01 можно использовать для двухсторонней связи. В данном уроке мы настроим одностороннюю связь между двумя Arduino Uno.

Прежде чем начать, мы должны загрузить библиотеку для модуля в Arduino для бесперебойной работы программы. Вы можете скачать файлы библиотеки на этой странице нашего сайта в разделе Библиотеки.

Распиновка модуля nRF24l01

Распиновка модуля беспроводной связи nRF24l01 ниже:

Схема приемника

Соедините nRF24L01 и сервомотор с Arduino в соответствии с приведенной ниже схемой.

Важное замечание! Входное напряжение составляет от 1,9 до 3,6 В, не превышайте это напряжение, иначе оно сожжет ваш модуль.

Соединения:

Arduino <-> nRF24L01
Pin 9 <-> CE
Pin 10 <-> CS(N)
Pin 11 <-> MOSI
Pin 12 <-> MISO
Pin 13 <-> SCK
Pin 3 <-> Servo signal pin
3.3v <-> VCC
GND <-> GND

Скетч для приемника

Теперь загрузим код для приемника, приведенный ниже, в первую Arduino:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Servo.h>      // 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 и сервомотор к Arduino в соответствии с приведенной ниже схемой.

Важное замечание! Входное напряжение составляет от 1,9 до 3,6 В, не превышайте это напряжение, иначе оно сожжет ваш модуль.

Соединения:

Arduino <-> nRF24L01
Pin 9 <-> CE
Pin 10 <-> CS(N)
Pin 11 <-> MOSI
Pin 12 <-> MISO
Pin 13 <-> SCK
Pin 5 <-> Button
3.3v <-> VCC
GND <-> GND

Скетч для передатчика

Теперь загрузите код для передатчика, приведенный ниже, на вторую Arduino:

#include <SPI.h>
#include <RF24.h>
#include <nRF24L01.h>

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);
  }
 
}

Теперь включите обе платы Arduino, нажмите кнопку и убедитесь, что сервопривод вращается.

Оригинал

Поделиться
20 июля 2020 в 13:47
Обновлено 18 октября 2020 в 21:10 (редакция)
Опубликовано:
Уроки по Ардуино, Raspberry Pi и радиоэлектронике,

Добавить комментарий

Ваш E-mail не будет никому виден. Обязательные поля отмечены *