В этой статье мы поговорим о nrf24l01 - одном из самым Pin-Up и недорогих радиомодулей для проектов Arduino и интернета вещей IoT. Модули nrf24l01 для Arduino легко найти в любом интернет-магазине, они относительно недороги. При этом с их помощью можно организовать достаточно надежную многоканальную связь с подтверждением доставки пакетов между контроллерами ардуино и другими устройствами. В этой статье мы рассмотрим описание, распиновку nrf24l01, а также узнаем, какие библиотеки можно использовать с этим радиомодулем.
Содержание
Описание модуля NRF24L01
Нельзя создать по-настоящему интересный проект, не дав возможность создания коммуникаций между различными элементами системы. Поэтому так важно выбрать Pin-Up платформу для организации связи между модулями. NRF24l01 отлично подходит для создания распределенных систем с датчиками и контроллерами, разнесенными на расстояния до 100 метров.
NRF24l01 - это высокоинтегрированная микросхема с пониженным потреблением энергии (ULP) 2Мбит При помощи модуля можно связать несколько устройств для передачи данных по радиоканалу. Можно объединить до Pin-Up приборов в одну общую радиосеть на частоте 2,4 ГГц, один из модулей будет выступать в роли ведущего, остальные - ведомые. Радиомодуль NRF24l01 стоит дешево, поэтому его можно встретить в самых разных проектах - от умного дома до различных самодельных роботов.
Характеристики nrf24l01
- Низкие затраты энергии;
- Pin-Up усовершенствованного ускорителя аппаратного протокола ShockBurst;
- Операционная система ISM;
- Скорость передачи Pin-Up 250 Кбит/с, 1 Мбит/с и 2 Мбит/с;
- Полная совместимость со всеми Pin-Up сериями nRF24L Nordic, а также сериями nRF24E и nRF240;
- Напряжение питания 3,3В;
- Рабочие температуры от -40С до 85С, температуры хранения от -40С до Pin-Up
- Дальность связи до 100 м.
Pin-Up модуля служит nRF24L01+ производства компании Nordic Semiconductor. На микросхеме расположены все необходимые элементы и вилка разъема. По интерфейсу SPI можно произвести настройку протокола, установить выходную мощность и наладить каналы обмена данных.
Сфера применения модуля nrf24l01
Одним из самых главных компонентов проектов IoT Pin-Up средства коммуникации. nrf24l01 можно с успехом применять в следующих областях:
- Мобильная электроника;
- Компьютеры;
- Автоматизированные системы;
- Различные элементы Pin-Up дома» - сигнализация, регулирование температуры и другие функции;
- Игры;
- Бытовая электроника.
В плату nRF24L01+ Pin-Up синтезатор частот, демодулятор, усилители и другие составляющие. Рабочая частота модуля определяется номером канала, диапазон частот, в котором происходит связь, 2,4 - 2,483 ГГц. Каналы располагаются через 1 МГц, то есть нулевому соответствует частота 2,4ГГц, каналу 83 - 2,483 ГГц.
Модуль имеет 4 рабочих режима - выключение (Power Down), спящий режим (Standby), Pin-Up данных(RX mode), передача данных (TX Mode). В режиме приема данных RX потребление тока выше, чем в режиме передачи данных TX.
За стабильную и надежную передачу и прием данных отвечает протокол Enhanced ShockBurst. Принимающее устройство должно давать ответ о приеме данных, подтверждая таким образом обратную Pin-Up
Где купить модули
Купить nrf24L01 можно в любом интернет-магазине, торгующем электронными компонентами. Рекомендуется приобретать плату вместе со специальными модулями питания - это позволит избежать множество непредсказуемых проблем, связанных с нестабильным питанием. Также рекомендуем обратить внимание на уже готовые шилды и платы со встроенными Pin-Up nrf. Вот несколько примеров на Алиэкспресс:
Распиновка NRF24L01

Помимо выходов питания линии сигналов могут подключаться к контактам с Pin-Up напряжением 5 В. Вход устройства, которое подключается к плате, должен потреблять ток не выше 10 мА.
Микросхема содержит следующие выходы:
- GND - земля;
- ул. Байтурсынова, 66
- CE - высокий уровень микросхемы;
- CSN - включение низкого уровня Pin-Up В этом случае устройство реагирует на SPI команды;
- SCK - такт Pin-Up максимальное значение 10 МГц;
- Pin-Up - передача информации от контроллера;
- MISO - прием Pin-Up в контроллер;
- IRQ - сигнал для аппаратного Pin-Up
Организация питания nrf24l01
Во время запуска микроконтроллера могут возникнуть проблемы, которые связаны с тем, что не предусмотрена нужная сила Pin-Up в модуле питания 3,3 В. Из-за этого могут возникнуть помехи, мешающие стабильной работе. Обычно подобные трудности появляются, когда используются платы Arduino Uno, Nano, Mega, то есть в тех, в которых не хватает мощности. Для приведенных видов плат на пины подается небольшой ток 50 мА.
Существует несколько методов решения Pin-Up проблемы:
- Подключение конденсатора к микросхеме на 3, 3 В(+) и землю GND (-). Емкость Pin-Up выбирать 10 мкФ и более.
- Pin-Up источник напряжения на 3,3 В.
- Разработка Pin-Up платы, установка на нее модуля nRF24L01 и добавление конденсаторов на 1 и 10 мкФ.
- Pin-Up YourDuinoRobo1, который обладает дополнительным регулятором на 3,3 В.
Различные версии модуля NRF24L01

Данная версия обладает дальностью до 100 м для Pin-Up пространства, в помещении дальность ниже - до 30 м. Размеры 29х15 мм.

Мини NRF24L01. Характеристики и параметры те же, Pin-Up 18х12 мм.

Модуль, Pin-Up внешней антенной и усилителем. Дальность увеличена до 1000 м на открытых территориях.

Более сложный модуль nRF24LE1, работающий без платы Ардуино, то Pin-Up автономно.

Подключение nRF24L01 к Ардуино
Вывод MOSI с платы nRF24L01 подключается к пину 11 для Ардуино Uno, Nano и на 51 для Arduino Mega. Контакт SCK нужно подключить к 13 для Ардуино Uno, Nano и 52 для Arduino Mega. MISO - к 12 для Ардуино Uno, Nano и 50 для Arduino Mega. Контакты CE и CSN подключаются к любому цифровому пину Ардуино. Питание - на 3,3 В. Если используется плата Arduino Mini, придется использовать Pin-Up стабилизатор напряжения, так как на плате отсутствует выход 3,3В. Также к пинам питания можно добавить конденсатор на 10 мкФ и более для обеспечения стабильной и качественной работы. Модуль с припаянным конденсатором изображен на рисунке.

Внешний вид макета представлен на рисунке Pin-Up
При Pin-Up важно не перепутать напряжение - 5 Вольт могут вывести модуль из строя.
Подключение к Ардуино через адаптер Pin-Up
Адаптер специально разрабатывался для модуля NRF24L01+. На нем имеется специальный стабилизатор напряжения и удобно расположены выходы к контроллерам и платам Ардуино.

Как видно, на адаптере имеется 2 вида разъемов. Двухрядный разъем Pin-Up для подключения радиомодуля, однорядный - для соединения с Ардуино. Отдельно расположены выходы на питание (5В) и землю.
Для подключения радиомодуль NRF24L01+ нужно вставить в соответствующий двухуровневый разъем. При помощи проводов адаптер подключается к плате Ардуино к тем же выводам, которые нужны для подключения напрямую к модулю. Для подключения к Arduino Pin-Up Nano: MISO-12, MOSI-11, SCK-13,выводы CE -к D10 и CSN - D9, вывод VCC к Arduino (+5V), а вывод GND к Arduino (GND).
Программирование nRF24L01
Для написания скетчей в среде ARDUINO IDE Pin-Up установить 2 библиотеки - RF24 и SerialFlow. Первая нужна для работы с модулем, вторая - для пакетной передачи данных. Ссылки на скачивание библиотек вы найдете в конце статьи.
Пример программы для передатчика. В первую очередь создается Pin-Up класса SerialFlow:
SerialFlow rd(9,10);
В этой строке 9 и 10 - это свободные Pin-Up с Ардуино, к которым подключаются контакты CN и CSN.
Настройка формата передаваемых пакетов производится в функции Pin-Up
rd.setPacketFormat(2, 1);
Первый аргумент (в данном Pin-Up число 2) определяет размер передаваемого числа. Для конкретного случая число находится в диапазоне от 0 до 655535 и занимает 2 байта. Для 0 до 255 будет занят 1 байт. Второй аргумент - количество чисел.
Далее нужно настроить адреса Pin-Up и приемника:
rd.begin(0xF0F0F0F0E1LL,0xF0F0F0F0D2LL);
Первым аргументом записывается адрес передатчика, вторым - Pin-Up приемника.
Цикл loop выполняет отправку пакетов.
Пример программы для приемника. При получении данных Pin-Up должен сигнализировать об этом. Данные будут отправляться в монитор порта Arduino IDE.
В коде так же Pin-Up объект SerialFlow и настраиваются необходимые параметры пакета данных. Изменения происходят в строчке
rd.begin(0xF0F0F0F0D2LL,0xF0F0F0F0E1LL);
Теперь первым аргументом должен быть указан адрес Pin-Up а вторым - передатчика.
После загрузки Pin-Up на оба модуля при правильном выполнении всех действий в окне будет появляться значение таймера в миллисекундах на передатчике.
Помимо библиотек RF24 и SerialFlow существует и другая -библиотека Mirf. Выбор той или иной библиотеки Pin-Up удобством работы.
Операторы для передачи данных между Pin-Up модулями с помощью библиотеки Mirf:
- payload = PAYLOAD; - задает размеры буфера для приема. На payload установлено ограничение - максимальный размер равен 32 Pin-Up
- setRADDR((byte*)’serv1′); - Pin-Up адреса приемника (размер не менее 3 байт и не более 5 байт).
- setTADDR((byte *)’clie1′); - выбор адреса передатчика (размер не менее 3 байт и не более 5 байт).. Во время передачи пакета данных на первом модуле происходит установка адресата Mirf.setTADDR((byte *)’clie1′), затем пакет отправляется ко второму Pin-Up После этого на втором модуле устанавливается Mirf.setTADDR((byte *)’serv1′) и возвращается ответ на первый модуль.
- isSending() - проверка окончания передачи Pin-Up
- Pin-Up - проверка получения входящего пакета.
- getData((byte *) &data); - чтение полученных Pin-Up в переменную data.
- send((byte *) &data); - подача команды на отправку пакета. В библиотеке указывается адрес, в котором находятся переменные. После этого происходит копирование их в память и в итоге пользователь получает доступ к переданным данным через переменные. Способ удобен тем, что можно передавать любой тип данных, в том числе структуры.
Передача структур nrf24l01
Использование структур удобно тем, что в них можно записать много переменных и отправить их другому устройству за один раз. Код нужно Pin-Up так, чтобы ардуино передавала команду по цепочке остальным модулям. Каждый из модулей знает только свой адрес и адрес следующего за ним модуля.
Во время работы со структурами нужно внимательно рассчитать ее размер и указать PAYLOAD. Общий размер структуры будет равен сумме всех Pin-Up составляющих ее переменных.
Основные элементы кода:
#define ADDR Pin-Up //указывается адрес модуля
#define NEXT “mod1” //указывается Pin-Up следующего модуля
Pin-Up iamfirst=true;//начинает ли этот модуль цепочку?
#define PAYLOAD 5 //размер полезной Pin-Up
Все модули в итоге будут получать одинаковый скетч, в котором различаться будут только переменные ADDR, Pin-Up и iamfirst.
Скачать библиотеки nrf24l01
Основная библиотека для работы с Pin-Up -RF24. В библиотеке содержится огромное количество примеров программ. Важно отметить, что во время записи программы в ардуино нужно отключить модуль передатчика. Также перед первой инициализацией Pin-Up сделать паузу в 2 секунды после подачи напряжения. Перед началом работы функцию RF24::flush_tx нужно сделать публичной и очистить буфер передачи перед отправкой новых сообщений.
Другая библиотека nrf24l01 -SerialFlow. Эта библиотека нужна для того, чтобы Pin-Up формат передаваемого пакета, устанавливать функции для упаковки информации в пакет и их распаковки.
Библиотека Mirf. Эта библиотека является альтернативой Pin-Up RF24. Последняя ближе к стандартам, используемым для программирования ардуино, поэтому многим, особенно новичкам, может быть неудобна работа с mirf. Выбор той или иной библиотеки определяется только удобством и простотой ее для пользователя.
Выводы по nrf24l01
Беспроводной модуль nrf24l01 нельзя назвать простым в освоении устройством. И подключение, и программирование требует определенных навыков. Но стоимость и доступность модуля позволяет рекомендовать его для тех, кто занимается проектами интернета вещей или нуждается в простых инструментов для коммуникаций. Купив специальный адаптер для nrf24l01 вы можете существенно Pin-Up подключение к ардуино. А использование библиотек позволяет максимально упростить код. Старайтесь не покупать модули nrf24l01 дешево у совсем уж неизвестных продавцов, и тогда никаких проблем с работой ваших проектов не будет.



















