Рассмотрим работу модуля-радиоприемника nRF24L01, который обеспечивает очень эффективный способ установки беспроводной связи.
Компоненты
Для изучения работы беспроводной связи на основе модуля nRF24L01 и Arduino нам понадобятся следующие компоненты:
- nRF24L01 - 2 шт.
- Перемычки
- Макет
- Arduino Uno - 2 шт
- Кнопочный переключатель (SparkFun) - 12 мм
- Сервопривод (Tower Pro MG996R)
- Резистор 475 Ом
Программное обеспечение:
Модуль nRF24l01
Модуль nRF24l01 фактически является модулем радиопередатчика и работает на частоте 2,4 ГГц.
Этот модуль имеет возможность отправлять и получать данные одновременно, и его можно использовать для различных проектов IOT для создания беспроводного соединения. Это довольно маленький по размерам модуль, но его возможности удивительны.
Модуль nRF24l01 можно использовать для двухсторонней связи. В данном уроке мы настроим одностороннюю связь между двумя Arduino Uno.
Прежде чем начать, мы должны загрузить библиотеку для модуля в Arduino для бесперебойной работы программы. Вы можете скачать файлы библиотеки на этой странице нашего сайта в разделе Библиотеки.
Распиновка модуля nRF24l01
Распиновка модуля беспроводной связи nRF24l01 ниже:
Схема приемника
Соедините nRF24L01 и сервомотор с Arduino в соответствии с приведенной ниже схемой.
Соединения:
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 в соответствии с приведенной ниже схемой.
Соединения:
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, нажмите кнопку и убедитесь, что сервопривод вращается.