Подключение Pin-Up nrf24L01

В этой статье мы поговорим о 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+PA+LNA с антеной - 2.4G и до Pin-Up метровМодули NRF с адаптером питанияМодуль NRF24L01 с антенной
Недорогой адаптер питания для NRF24L01Pin-Up для быстрого подключения NRF24L01 к Arduino NanoМодуль NRF24L01 с адаптером питания и конвертером Pin-Up I2C

Распиновка NRF24L01

Беспроводной модуль NRF2401 в Arduino
Схематичное изображение модуля

Помимо выходов питания линии сигналов могут подключаться к контактам с 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

Беспроводной модуль NRF2401 в Arduino
Беспроводной модуль NRF2401

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

Беспроводной модуль NRF2401 в Arduino

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

Беспроводной модуль NRF2401 в Arduino

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

Беспроводной модуль NRF2401 в Arduino
Беспроводной модуль NRF2401 с антенной

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

Беспроводной модуль NRF2401 в Arduino
Беспроводной модуль NRF2401 в Arduino

Подключение 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 мкФ и более для обеспечения стабильной и качественной работы. Модуль с припаянным конденсатором изображен на рисунке.

Беспроводной модуль NRF2401 в Arduino
Питание для NRF2401

Внешний вид макета представлен на рисунке Pin-Up

Подключение Arduino nrf24L01

При Pin-Up важно не перепутать напряжение - 5 Вольт могут вывести модуль из строя.

Подключение к Ардуино через адаптер Pin-Up

Адаптер специально разрабатывался для модуля NRF24L01+. На нем имеется специальный стабилизатор напряжения и удобно расположены выходы к контроллерам и платам Ардуино.

Беспроводной модуль NRF2401 в Arduino

Как видно, на адаптере имеется 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 дешево у совсем уж неизвестных продавцов, и тогда никаких проблем с работой ваших проектов не будет.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here