NRF24L01 2.4 ГГц радио/беспроводные передатчики и Arduino

NRF24L01 2.4 ГГц радио/беспроводные передатчики и Arduino

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

  • Удаленное снятие показаний с датчиков температуры, давления, систем сигнализации на основе пироэлектрических датчиков движения и т.п.
  • Беспроводное управление и мониторинг состояния роботов на расстоянии от 50 2000  футов или до 1 км .
  • Беспроводное управление и мониторинг помещений в соседних домах.
  • И т.д. и т.п. В общем, практически все, что требует беспроводных систем управления и мониторинга...

NRF24L01 NRF24L01 - общий вид

Существует целая серия радио модулей 2.4 ГГц, которые созданы на базе чипа Nordic Semiconductor nRF24L01+ (более детальная информация на английском языке) Nordic nRF24L01+ включает в себя 2.4 ГГц RF трансивер, логику, которая поддерживает высокоскоростной SPI интерфейс для подключения и обмена данными. Маломощный, с небольшой дальностью действия (200 футов или около того) передатчик для Arduino со встроенной антенной можно приобрести меньше чем за 2 $!

Ссылки nRF24L01+ антенна  на алиэкспресс (кликабельно )  - 1.88 долл 

Проблемы с питанием NRF24L01

У многих возникают проблемы при запуске модуля nRF24L01. В основном это связано с тем, что в модуле питания 3.3 В не предусмотрена необходимая сила тока. Решение проблемы следующее:

  • Подключите конденсатор на 3.3 или 10 мкФ (микрофарад) напрямую к модулю - от 3.3 В (+) к GND (-). Некоторые рекомендуют использовать 10 мкФ или больше.
  • Отдельный источник питания на 3.3 В.
  • Использовать совместимый с Arduino YourDuinoRobo1, на котором добавлен регулятор 3.3 В (в этом случае, возможно, стоит добавить конденсатор на 1 мкФ на радиомодуль).
  • Старайтесь максимально избегать дополнительных проводов при подключении модуля радиопередатчика.
  • Разработать отдельную плату, на которую устанавливается модуль nRF24L01 и добавляются конденсаторы на 1 и 10 мкФ неподалеку от контактов 3.3 В и GND.

Проблемы с питанием возникают при использовании таких микроконтроллеров как, например, Arduino Uno, Nano, Mega, в которых на пины подается всего 50 мА. На некоторых новых модификациях плат делают пины с силой тока до 350 мА. Ну или вы можете отдельно приобрести шилды для увеличения мощности.

Рабочее расстояние NRF24L01

Расстояние зависит от внешних условий. То есть: находитесь вы в помещении или на улице, есть ли препятствия на пути сигнала от радиопередатчика. Большинство производителей модулей nRF24L01 с маленькой мощностью передатчика указывают расстояние его действия 200 футов или 100 метров. Это характеристика передатчиков, которые используются на открытом воздухе, без препятствий на пути сигнала. Частота передатчика настроена на 2500 кГц. Внутри помещений, из-за наличия стен и других преград расстояние срабатывания будет меньше.

Рекомендуем протестировать ваш радиопередатчик в конкретных условиях перед его использованием. Кроме того, есть некоторые модификации радиопередатчиков nRF24L01 с внешней антенной, которая усиливает сигнал. Каждая конкретная ситуация накладывает свои ограничения, так что установить точную характеристику расстояния их действия невозможно.

Если вы хотите более детально ознакомится с техническими характеристиками этого маленького "радио", можете скачать даташит. Самые полезные страницы: 7, 8, 9 (общая характеристика и особенности радиопередатчика nRF24L01) и страница 39 (MultiCeiver, который дает возможность передавать информацию с 6 плат Arduino на основной (Primary) Arduino).

Существуют дополнительные модули для трансмиттера/ресивера (передатчика/приемника), которые обеспечивают беспроводную радиопередачу на расстояния до 1 км! Эти модули используют внешнюю антенну, которая может устанавливаться непосредственно на модуль или антенна, которая подключается с помощью дополнительных коннекторов. На фото ниже приведены несколько разновидностей модулей.

Слева маломощная версия передатчика со встроенной антенной. Справа вы можете увидеть нижние контакты (на фото они сверху), которые подключаются к Arduino. Схему подключения мы рассмотрим позже.

NRF24L01 - общий вид 2 NRF24L01 - общий вид 3

На фото ниже показаны трансмиттер с возможностью подключения внешней антенны и сама антенна. Для подключения радиопередатчика к Arduino используются те же 8 контактов и тот же софт.

NRF24L01 - общий вид 2 NRF24L01 - общий вид 3

Трансивер использует частоту 2.4 ГГц, как и большинство современных WiFi роутеров, телефонов.

Подобные трансиверы отправляют и принимают пакеты данных по несколько байт. Предусмотрена встроенная коррекция погрешностей и возможность отправить данные еще раз. Каждый отдельный модуль NRF24L01 может одновременно обмениваться данными с шестью! аналогичными модулями!

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

Подключение NRF24L01 к Arduino (вид сверху):

Подключение NRF24L01 - вид сверху

Подключение NRF24L01 к Arduino (вид снизу):

Подключение NRF24L01 - вид снизу

СигналКонтакт на модуле RF
Цвет кабеля
Пин на модуле
Контакт на Arduino (библиотека TMRh20,RF24)
Контакт на Arduino (библиотека RF24)Контакт на Arduino (библиотека Mirf)Контакт MEGA2560 (библиотека RF24)Контакт Arduino (библиотека RH_NRF24 RadioHead)Контакт MEGA2560 (библиотека RH_NRF24 RadioHead)
GND1
КоричневыйGNDGNDGNDGNDGNDGNDGND
VCC2КрасныйVCC3.3 V3.3V3.3V3.3V3.3V3.3V
CE3ОранжевыйCE798988
CSN4ЖелтыйCSN8107531053
SCK5ЗеленыйSCK131313521352
MOSI6СинийMO111111511151
MISO7ФиолетовыйMI121212501250
IRQ8СерыйIRQ-2Зависит от библиотеки
N/CN/C

Обратите внимание! Большинство проблем при передаче возникает из-за шумов от источника питания 3.3 В. Особенно это чувствуется при использовании плат Arduino Mega. Решить эту проблему можно следующим образом: добавить в схему конденсатор между контактом GND и 3.3 В на радио модуле. Можно использовать конденсаторы номиналом 100 нФ. Некоторые ставят конденсаторы номиналом от 1 пкФ до 10 пФ.

Цвета приведены для удобства кодировки. Вы можете использовать их иначе. Главное, не запутаться.

Обратите внимание, что модули подключаются к 3.3 В, а не 5.0 В, хотя ваш Arduino при этом может работать и от 5 В. NRF24L01+ IC рассчитан на питание от 3.3 В, но контакты выдержат и питание 5 В.

На платах Arduino Uno и более ранних версиях есть выход 3.3 В, который можно использовать для некоторых версий передатчиков (смотрите в статье выше - проблемы с питанием). Но если вы используете более мощные передатчики, на них надо подавать отдельное питание на 3.3 В.

nRF24L01 - софт и библиотеки

Ниже будет приведен пример софта для передачи и приема данных. Кроме того, есть множество примеров на странице загрузок библиотеки RF24 Library. Как уже не раз упоминалось, для работы передатчика/приемника будем использовать библиотеки, в которых решены многие мелкие задачи, усложняющие наладку работы передатчика с Arduino.

Библиотека TMRh20's RF24 Library.

Скачать ее можно здесь (Кнопка "Download ZIP" в нижнем правом углу страницы).

После загрузки ZIP архива, на вашем ПК появится архив RF24-master.ZIP. Измените название архива на RF24.ZIP. Внутри архива находится папка с тем же названием RF24-master. Ее тоже переименуйте в RF24.

Для начинающих разбираться в Arduino, есть отличная инструкция по установке библиотек в Arduino IDE.

После установки библиотек, вы можете запускать примеры, включенные в библиотеку.

Скетчи для nRF24L01 и Arduino

Скетчи для nRF24L01 и Arduino

Пример: передача данных о положении координат джойстика Х и Y от одного модуля nRF24L01 к другому nRF24L01. Второй модуль получает данные положении джойстика и передает их на дальнейшее отображение.

Ниже два скетча. Загрузите первый на ваш первый Arduino, к которому подключен радиопередатчик nRF24L01 и джойстик (или можно использовать потенциометр). Второй скетч загрузите на Arduino с подключенным модулем nRf24L01.

/* YourDuinoStarter пример: nRF24L01 передаем данные о положении джойстика

- Что делает скетч: считывает аналоговые значения на контакте A0, A1 и передает их

с помощью радиопередатчика nRF24L01 приемнику.

- Подключение nRF24L01 модуля смотрите на:

1 - GND

2 - VCC 3.3V !!! НЕ 5V

3 - CE к Arduino пину 9

4 - CSN к Arduino пину 10

5 - SCK к Arduino пину 13

6 - MOSI к Arduino пину 11

7 - MISO к Arduino пину 12

8 - НЕ ИСПОЛЬЗУЕТСЯ

Аналоговый джойстик или два потенциометра 10 КОм:

GND к Arduino GND

VCC к Arduino +5V

X потенциометр к Arduino A0

Y потенциометр к Arduino A1 */

/*-----(Импортируем необходимые библиотеки)-----*/

#include <SPI.h>

#include <nRF24L01.h>

#include <RF24.h>

/*-----(Объявляем константы и номера пинов)-----*/

#define CE_PIN 9

#define CSN_PIN 10

#define JOYSTICK_X A0

#define JOYSTICK_Y A1 // ПРИМЕЧАНИЕ: "LL" в конце константы - это тип данных "LongLong"

const uint64_t pipe = 0xE8E8F0F0E1LL;

/*-----(Объявляем объекты)-----*/

RF24 radio(CE_PIN, CSN_PIN); // Создаем объект Radio

/*-----(Объявляем переменные)-----*/

int joystick[2]; // массив из 2-х элементов, в котором хранятся с джойстика

int i = 0;

void setup() /****** SETUP: ОТРАБАТЫВАЕТ 1 РАЗ ******/

{

Serial.begin(9600);

radio.begin();

radio.openWritingPipe(pipe);

}//--(завершение setup )---

void loop() /****** LOOP: ОТРАБАТЫВАЕТ В БЕСКОНЕЧНОМ ЦИКЛЕ ******/

{

joystick[0] = i++;

joystick[1] = i++;

radio.write( joystick, sizeof(joystick) );

delay(3);

}//--(завершаем главный цикл)---

Еще один интересный пример обмена данными между двумя радиомодулями RF24 находится по ссылке на Github.

  • NRF24L01 2.4 ГГц радио/беспроводные передатчики и Arduino

Похожие статьи

Arduino - что это такое? Популярно для начинающих

Arduino - что это такое? Популярно для начинающих

Arduino это недорогая, доступная в смысле покупки электронная плата с микроконтроллером и выводами входов-выходов. Arduino выпускаются в различных версиях, но поддерживают один и тот же, простой язык программирования. Огромный успех Ардуино, с уважением к другим микроконтроллерам, связан с тем, что аппаратное и программное обеспечение были опубликованы в открытом бесплатном для общего пользования виде: вы можете читать, изучать и даже расширять его возможности как в плане программного обеспечения, так и с точки зрения аппаратных средств. Вся информация об Ардуино доступна под лицензией "Creative Commons Attribution-ShareAlike 3.0 License".

Как работают шаговые двигатели

Как работают шаговые двигатели

Использование шаговых двигателей является одним из самых простых, дешевых и легких решений для реализации систем точного позиционирования. Эти двигатели очень часто используются в различных станках ЧПУ и роботах. Сегодня я расскажу о том, как устроены шаговые двигатели и как они работают.

Arduino и использование двигателей. Подключение двигателя постоянного тока и управление им.

Arduino и использование двигателей. Подключение двигателя постоянного тока и управление им.

1. Управляем маленькими моторчиками

Управление маленьким двигателем может быть может осуществляться довольно просто. Если двигатель достаточно маленький, он может быть непосредственно соединен с выводом Arduino, и просто изменяя уровень управляющего сигнала от логической единицы до нуля будем контролировать моторчик. Этот проект раскроет вам основную логику в управлении электродвигателем; однако, это не является стандартным способом подключения двигателей к Arduino. Мы рекомендуем, вам изучить данный способ, а затем перейти на следующую ступень - заняться управлением двигателями при помощи транзисторов.

Подключим миниатюрный вибромоторчик к нашему Arduino.

Теги: NRF24L01 2.4 ГГц радио/беспроводные передатчики и Arduino