Адаптер nrf24l01 распиновка

Содержание

Модуль nRF24L01 подключение к Ардуино

Подключение модуля nRF24L01 к Arduino позволит сделать беспроводную связь между микроконтроллерами на расстоянии до 30 метров. Рассмотрим, как наладить связь между двумя Ардуино по радиоканалу, чтобы передать данные с аналогового датчика утечки воды и цифрового датчика температуры и влажности DHT11. В первом случае будет передаваться один тип данных, во втором случае два сразу показателя.

Характеристики nRF24L01 Arduino

nRF24L01 один из самых популярных беспроводных модулей для интернета вещей (IoT). Модули стоят недорого, но на их основе можно организовать многоканальную защищенную связь между контроллерами Ардуино и устройствами. Один модуль способен поддерживать связь сразу с шестью приемниками или передатчиками, т.е. можно объединить сразу семь устройств в общую радиосеть на частоте 2,4 ГГц.

Дальность действия модуля сравнима с блютуз модулем HC-05/06, но с помощью nRF24L01 можно создать многоканальную связь. Т.е. можно объединить в общую сеть до 7 устройств, которые могут одновременно принимать и отправлять сигнал. Для начала мы будем передавать данные с датчика воды, но можно использовать и любой другой аналоговый датчик, например датчик температуры на основе LM35.

Распиновка радио модуля nRF24L01+

На плате nRF24L01 встроен демодулятор, синтезатор частот и усилитель сигнала. Дальность действия модуля Arduino nRF24L01+ до 30 метров, а в версии с усилителем и антенной до 1000 метров в прямой видимости. Модуль может использовать 127 каналов связи, отличающихся частотой сигнала — от 2,4 ГГц до 2,483 ГГц. Скорость беспроводного соединения можно настраивать: 250kbps, 1Mbps или 2Mbps.

Кроме сложной схемы подключения nrf24l01 к Arduino NANO и MEGA2560, плата требовательна к питанию (так утверждается на многих форумах и сайтах). Поэтому необходимо припаять к портам питания модуля (GND и VCC) конденсатор до 10мкФ — это снизит помехи. Если вы несколько раз проверили подключение и загрузили скетч с этой страницы, но модуль отказывается работать — то все дело в питании.

Чтобы снизить помехи можно использовать керамический конденсатор

Как подключить nRF24L01 к Ардуино Uno

Для этого занятия потребуется:

  • Arduino Uno / Arduino Nano / Arduino Mega;
  • 2 модуля nRF24L01;
  • датчик уровня воды;
  • цифровой датчик DHT11;
  • провода «папа-мама», «папа-папа».

Выполнить передачу данных между Arduino по радиоканалу будет намного проще, если у вас плата подключена к отдельному компьютеру или ноутбуку. Тогда сделать отладку скетча будет намного проще и быстрее. До передачи данных по радиоканалу через nRF24L01+, лучше всего проверить каждый модуль скетчем для сканирования — тогда вы будете уверены в правильности подключения и работоспособности модулей.

Скетч для сканирования частот nRF24L01

Пояснения к коду:

  1. программа выводит на последовательный порт информацию о модуле nRF24L01+;
  2. далее выводится информация о всех частотах на которых работает модуль и информацию об их загруженности, выбирайте частоту для работы без помех;

Если скетч успешно загрузился, но вы не видите похожую информацию на мониторе порта, то еще раз проверьте соединение платы с микроконтроллером. Через 10 секунд после получения информации о характеристиках nRF24L01+ (тка24д01) вы получите информацию о помехах на всех 127 каналах связи. Первые две строчки — это имена каналов, состоящие из двух символов на первой и второй строке.

Вывод характеристик nRF24L01+. Сканер и проверка модуля

Скетч. nRF24L01 передача данных с датчика воды

Модуль работает по интерфейсу SPI, соответственно подключать модуль nRF24L01 следует к определенным портам микроконтроллера (не забывайте, что у Arduino Mega интерфейс SPI находится на других портах). Одну плату нужно настроить, как приемник сигнала (receiver), а второй микроконтроллер, как передатчик (transmitter). После подключения беспроводных модулей к микроконтроллеру, загрузите скетч.

Источник

Долгий путь к подключению NRF24L01

Однажды, в далекой далекой. Завалялась у меня дома два модуля NRF24L01. Дружба с ними не заладилась как-то сразу. С тех прошло около десяти лет и вот я их снова нашел.

Для них как раз есть актуальная задача: необходимо с минимальным потреблением передавать одиночные пакеты информации на приличное расстояние (около 600 метров). Да тут еще и статья интересная попалась на глаза. ссылка.

Примечание: Многие фотографии и скрины делались уже после прохождения пути.

Описание оборудования и полезная информация

Вот такой радиопередатчик

Вот такая ардуино

Вот такая схема подключения

Цвет провода на схеме

Шаг 0. В библиотеке есть файл примера.

И называется он GettigStarted. С ним у меня вообще ничего не вышло. Совсем.

Шаг 1. Пффф, да есть же мануал на хабре, где все понятно и работает

Собираю все на проводах, прозваниваю. Заливаю в одну ардуинку скетч передатчика, в другую скетч сканера эфира. В терминале вижу примерно следующее.

А передавал-то я на частоте 0x7B.

С выключенным передатчиком картина такая же.

Думаю: ну вот, точно бракованные модули, можно спать спокойно. Но жадность взяла своё, решил их терзать дальше. Начитался про то, что все вешают конденсатор. Повесил тоже. На обе.

Шаг 2. Первые признаки жизни.

Заподозрил что проблема в питании. И решил уменьшить скорость передачи, мощность передачи и частоту посылок.

Текст кода передатчика

Текст кода сканера

Необходимый файлик printf.h

Текст внешней функции печати

Ситуация резко изменилась.

А передавал-то я на частоте 0x7B.

Шаг 3. Попытка поймать хотя бы байт информации

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

Одна из них была искра.

И она работала на другой частоте, нежели чем обычная китайская (Atmega328P с 8Мгц у китайской против 16Мгц на Atmega328PB у искры)

Собрал на двух одинаковых — без изменений.

Заменил провода на пайку — без изменений.

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

Текст кода сканера

TryingLimitDef — задает колличество поппыток анализа выбранной частоты

CHStart — задает с какого канала начинать поиск. Для удобства преобразования данных с простого сканера использовал перевод через калькулятор windows.

CHto — задает количество анализируемых каналов

Краткий алгоритм действий:

Включил передатчик. Нашел общим сканером.

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

0x2A перевожу в десятичную

Загружаю вместо сканера свой. Задаю CHStart 38 (на четыре меньше, чем где увидел сигнал) и ставлю искать на 10 каналов.

Проверяю на каких каналах есть посылки, если они есть.

Получил примерно следующее:

CH — канал, на котором проводилось измерение и захват посылок

PCG — колличество удачных попыток найти с верной CRC.

CRR — колличество удачных обнаружений несущей на выбранном канале

RPD — колличество удачных обнаружений несущей с уровнем сигнала выше -64Дбм

А передавал-то я на частоте 0x7B. Но информация идёт!

При этом, если повысить мощность, то пакетов ловилось меньше. Если повысить скорость общения (1Мбит/с и выше), то сигнал исчезает полностью.

После этого совсем недоумевая я решил таки проверить питание.

Шаг 4. Все было очень просто.

Приложил мультиметр. Да не простой, а поверенный и даже не очень китайский. И увидел 3,3В

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

Но как же так! Ведь был установлен электролит на 100мкФ и 20В.

Посмотрел параметры преобразователя из 5В в 3,3В.

График зависимости напряжения от тока

Посмотрел на потребляемый ток у модуля

Требуемое напряжение питания и типовой потребляемый ток

Ну и наконец решил радикально отфильтровать питание.

Фильтрация по питанию

Напряжение, приходящее на модуль радиопередатчика упало с 3,3В до 3,1В.

Зато исчезла пульсация.

Итог

Получил вот такую статистику

Статистика получения пакетов

Теперь работает на всех скоростях и на всех мощностях. Платы ардуино перестали грется. На дальность не проверял, но по комнате около 10 метров со стальными стелажами ловит уверенно. На действительное потребление тоже не проверял.

Всем спасибо за внимание и успехов во всех начинаниях.

Источник

Обзор адаптера NRF24L01

Автор: Сергей · Опубликовано 28.10.2016 · Обновлено 14.04.2021

Адаптер NRF24L01 специально разработан для модулей NRF24L01+ и NRF24L01+PA+LNA, в котором установлен стабилизатор напряжения на 3.3В (AMS1117), а так-же выведен разъем для подключения к микроконтроллерам и платам Arduino

Технические параметры

► Напряжение питания: 4.8В … 12В
► Выходное напряжение: 3.3В
► Максимальный рабочий ток: до 800 мА
► Рабочая температура: -40 … 125 °C
► Габариты: 27 х 19 х 12 мм

Общие сведения

На адаптере расположено два основных разъема с подписантами выводами: двухрядный устанавливают радио модуль и однорядный для соединения с платами arduino. Как говорилось ранее, адаптер оснащен стабилизатором напряжения на 3.3В (чип AMS1117).

Первая группа:
► CE: Выбор ведомого
► CSN: Режим работы (прием или передача)
► SCK: Тактирование
► MOSI: Прием данных
► MISO: Передача данных
► IRO: Выход прерывания

Вторая группа:
► GND: Питание модуля NRF (GND)
► VCC: Питание модуля NRF (3.3В)
► CE: Выбор ведомого
► CSN: Режим работы (прием или передача)
► SCK: Тактирование
► MOSI: Прием данных
► MISO: Передача данных
► IRO: Выход прерывания

Третья группа:
► VCC: Питание 5В
► GND: Земля

Принципиальную схему адаптера NRF24L01 можно посмотреть ниже.

Подключение NRF24L01+ черед Адаптер

Необходимые детали:
► Arduino UNO R3 x 2 шт.
► Провод DuPont, 2,54 мм, 20 см x 2 шт.
► Кабель USB 2.0 A-B x 2 шт.
► Радиомодуль nRF24L01+ x 2 шт.
► Адаптер для NRF24L01+ x 2 шт.

Подключение:
Устанавливаем радиомодуль NRF24L01+ в адаптер через двухрядный разъем (как показано на рисунке). Затем с помощью проводов DuPont подключаем адаптер NRF24L01+ к Arduino (MISO-12, MOSI-11, SCK-13), выводы CE (ChipEnable) и CSN (ChipSelectNot) подключаем к D10 и D9, далее необходимо подключить питание, вывод VCC к Arduino (+5V), а вывод GND к Arduino (GND), скетч для двух Arduino можно посмотреть в этой статье.

Купить на Aliexpress
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Провода DuPont, 2,54 мм, 20 см
Датчик радио модуля NRF24L01+
Датчик радио модуля NRF24L01+PA+LNA
Адаптер для NRF24L01+

Купить в Самаре и области
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Провода DuPont, 2,54 мм, 20 см
Радио модуля NRF24L01+
Радио модуля NRF24L01+PA+LNA
Адаптер для NRF24L01+

Источник

Как работает радиомодуль nRF24L01 + с Arduino. Описание, распиновка, подключение, datasheet

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

И когда дело доходит до недорогих, но надежных 2-полосных радиочастотных решений, никто не справится с этой задачей лучше, чем приемопередающий модуль nRF24L01 + от Nordic Semiconductor.

Модуль приемопередатчика nRF24L01 + (plus) часто можно приобрести в онлайн магазинах менее чем за два доллара, что делает его одним из самых недорогих вариантов передачи данных, которые вы можете найти. И что самое приятное, то что эти модули малогабаритные, что позволяет использовать беспроводной интерфейс практически в любом проекте.

Обзор модуля nRF24L01+

Радиочастота

Приемопередающий модуль nRF24L01 + предназначен для работы по всему миру в диапазоне частот ISM 2,4 ГГц и использует для передачи данных GFSK модуляцию. Скорость передачи данных может составлять 250 Кбит/с, 1 Мбит/с и 2 Мбит/с.

Что такое диапазон ISM 2,4 ГГц?

Полоса 2,4 ГГц является одним из промышленных, научных и медицинских (ISM) диапазонов, зарезервированных на международном уровне для использования в нелицензированных маломощных устройствах. Примерами являются беспроводные телефоны, устройства Bluetooth, устройства ближней радиосвязи (NFC) и беспроводные компьютерные сети (WiFi), которые используют частоты ISM.

Потребляемая мощность

Рабочее напряжение модуля составляет от 1,9 до 3,6 В, но хорошая новость заключается в том, что выводы согласуются с 5 В логикой, поэтому мы можем легко подключить его к Arduino или любому 5 В логическому микроконтроллеру без использования какого-либо преобразователя логического уровня.

Модуль поддерживает программируемую выходную мощность, а именно: 0 дБм, -6 дБм, -12 дБм или -18 дБм и потребляет невероятно мало, около 12 мА во время передачи при 0 дБм, что даже ниже, чем у одного светодиода.

И что самое приятное, он потребляет 26 мкА в режиме ожидания и 900 нА в режиме отключения. Вот почему данный модуль является беспроводным устройством для приложений с низким энергопотреблением.

Интерфейс

Модуль nRF24L01 + обменивается данными через 4-контактный последовательный интерфейс (SPI) с максимальной скоростью передачи данных 10 Мбит/с. Все параметры, такие как частотный канал (125 выбираемых каналов), выходная мощность (0 дБм, -6 дБм, -12 дБм или -18 дБм) и скорость передачи данных (250 кбит/с, 1 Мбит/с или 2 Мбит/с), можно настроить через SPI интерфейс.

Шина SPI использует концепцию Master и Slave, и в большинстве распространенных приложений: Arduino является Master, а модуль приемопередатчика nRF24L01 + — Slave. В отличие от шины I2C количество ведомых на шине SPI ограничено, на Arduino Uno можно использовать максимум два ведомых SPI, т.е. два модуля приемопередатчика nRF24L01 +.

Характеристики nRF24L01 +

Частотный диапазон 2,4 ГГц ISM Band
Скорость передачи по воздуху, max 2 Мбит / с
Формат модуляции GFSK
Максимум. Выходная мощность 0 дБм
Рабочее напряжение питания 1,9–3,6 В
Ток потребления, max 13,5 мA
Ток в режиме ожидания, min 26 мкA
Логические Входы 5 В совместимый
Дальность связи 800+ м (по прямой видимости)

Более подробную информацию по модулю можно посмотреть в datasheet.

На основе чипа nRF24L01 + доступно множество модулей. Ниже приведены самые популярные версии.

nRF24L01 + Беспроводной модуль

В первой версии используется встроенная антенна. Это позволило создать более компактную версию модуля. Однако небольшая антенна также означает меньшую дальность передачи. С этой версией модуля вы сможете общаться на расстоянии до 100 метров. Конечно, это на открытом воздухе без препятствий. Дальность передачи в помещении через стены будет немного меньше.

nRF24L01 + PA LNA модуль с внешней антенной

Вторая версия поставляется с разъемом SMA и внешней антенной, но это не основное отличие данной версии. Реальное отличие состоит в том, что эта версия поставляется со специальным чипом RFX2401C, который объединяет схемы коммутации PA, LNA и приема-передачи. Этот чип расширения диапазона вместе с внешней антенной помогает модулю достичь значительно большей дальности передачи — около 1000 м.

Что такое PA LNA?

PA обозначает усилитель мощности. Он просто увеличивает мощность сигнала, передаваемого с чипа nRF24L01 +. LNA означает усилитель с низким уровнем шума. Функция LNA состоит в том, чтобы чрезвычайно слабый и неопределенный сигнал от антенны (обычно порядка микровольт или ниже -100 дБм) усилить до более приемлемого уровня (обычно около 0,5…1 В)

Малошумящий усилитель (LNA) приемного тракта и усилитель мощности (PA) тракта передачи подключаются к антенне через дуплексер, который разделяет два сигнала и предотвращает перегрузку чувствительного входа LNA относительно мощного выхода PA.

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

Как работает радиомодуль nRF24L01 +?

Частота RF канала

Модуль приемопередатчика nRF24L01 передает и принимает данные на определенной частоте, называемой каналом. Кроме того, чтобы два или более приемопередающих модуля могли обмениваться данными друг с другом, они должны находиться на одном канале. Этот канал может быть любой частоты в диапазоне ISM 2,4 ГГц или, если быть более точным, он может составлять от 2,400 до 2,525 ГГц (от 2400 до 2525 МГц).

Каждый канал занимает полосу частот менее 1 МГц. Это дает нам 125 возможных каналов с интервалом 1 МГц. Таким образом, модуль может использовать 125 различных каналов, что дает возможность иметь сеть из 125 независимо работающих модулей в одном месте.

Канал занимает полосу пропускания менее 1 МГц при скорости передачи данных 250 Кбит/с и 1 Мбит/с. Однако при скорости передачи данных 2 Мбит/с полоса пропускания 2 МГц занята (шире, чем разрешение настройки частоты канала RF). Таким образом, чтобы обеспечить неперекрывающиеся каналы и уменьшить перекрестные помехи в режиме 2 Мбит/с, вам нужно сохранить дистанцию в 2 МГц между двумя каналами.

Частота выбранного вами канала устанавливается по следующей формуле:

Например, если вы выберете 108 в качестве канала для передачи данных, частота радиочастотного канала вашего канала будет 2508 МГц (2400 + 108).

NRF24L01+ Multiceiver

NRF24L01 + предоставляет функцию под названием Multiceiver. MultiCeiver — это аббревиатура от «Multiple Transmitters Single Receiver», что переводится как «Много Передатчиков Один Приёмник».

Здесь каждый радиочастотный канал логически разделен на 6 параллельных каналов данных, называемых Data Pipes. Другими словами, канал данных является логическим каналом в физическом радиоканале. Каждый канал данных имеет свой физический адрес (адрес канала данных) и может быть настроен. Это можно проиллюстрировать следующим образом:

nRF24L01 + Multiceiver — несколько передатчиков, один приемник

Чтобы упростить вышеприведенную диаграмму, представьте, что основной приемник действует как концентратор-приемник, собирающий информацию от 6 различных узлов передатчика одновременно. Приемник-концентратор может прекратить прослушивание в любое время и переключиться в режим передачи. Но это может быть сделано только для одного канала / узла за один раз.

Расширенный протокол ShockBurst

Модуль приемопередатчика nRF24L01 использует структуру пакета, известную как Enhanced ShockBurst. Эта простая структура пакета разбита на 5 различных полей, что показано ниже:

Первоначальная структура ShockBurst состояла только из полей Preamble, Address, Payload и Cyclic Redundancy Check (CRC). Усовершенствованный ShockBurst обеспечил более широкие функциональные возможности для более совершенной связи с использованием недавно представленного поля управления пакетами (PCF).

Эта новая структура хороша по ряду причин. Во-первых, она допускает полезную нагрузку переменной длины с спецификатором длины полезной нагрузки, то есть размер полезной нагрузки может варьироваться от 1 до 32 байтов.

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

Наконец, самое главное, каждое сообщение может запросить подтверждение, когда оно получено другим устройством.

nRF24L01 + Автоматическая обработка пакетов

Теперь давайте обсудим три сценария, чтобы лучше понять, как два модуля nRF24L01 + взаимодействуют друг с другом.

Транзакция с подтверждением и прерыванием

Это пример положительного сценария. Здесь передатчик начинает связь, отправляя пакет данных получателю. Как только весь пакет передан, он ожидает (около 130 мкс) подтверждения приема пакета (ACK).

Когда приемник получает пакет, он отправляет пакет ACK передатчику. При получении пакета ACK передатчик выдает сигнал прерывания (IRQ), чтобы указать, что готовы новые данные.

Транзакция с потерянным пакетом данных

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

Если передатчик не получает его в течение времени автоматической повторной передачи (ARD: Auto-Retransmit-Delay), пакет передается повторно. Когда повторно переданный пакет принят приемником, передается пакет ACK, который, в свою очередь, генерирует прерывание в передатчике.

Транзакция с потерянным подтверждением

Это опять-таки негативный сценарий, когда требуется повторная передача из-за потери пакета ACK. Здесь, даже если приемник получает пакет с первого раза, то из-за потери пакета ACK, передатчик считает, что приемник вообще не получил пакет.

Таким образом, после того, как время ARD истекло, он повторно передает пакет. Теперь, когда приемник получает пакет, содержащий тот же идентификатор пакета, что и предыдущий, он отбрасывает его и снова отправляет ACK-пакет.

Вся эта обработка пакетов выполняется автоматически чипом nRF24L01 + без участия микроконтроллера.

Распиновка модуля приемопередатчика nRF24L01 +

Давайте посмотрим на распиновку обеих версий радиомодуля nRF24L01 +.

  • GND — это контакт заземления.
  • VCC — обеспечивает питание для модуля. Это может быть где-то от 1,9 до 3,9 вольт. Вы можете подключить его к выводу 3,3 В вашей Arduino. Помните, что подключение его к выводу 5 В может привести к повреждению вашего модуля nRF24L01 +!
  • CE (Chip Enable) — активный-HIGH вывод. При выборе nRF24L01 будет либо передавать, либо получать, в зависимости от того, в каком режиме он находится в данный момент.
  • CSN (Chip Select Not) — активный-LOW вывод и обычно поддерживается на высоком уровне. Когда этот вывод становится низким, nRF24L01 начинает прослушивать данные на шине SPI и обрабатывает их соответствующим образом.
  • SCK (Serial Clock) — принимает тактовые импульсы, предоставляемые шиной SPI Master.
  • MOSI (Master Out Slave In) — является входом SPI для nRF24L01.
  • MISO (Master In Slave Out) — это выход SPI от nRF24L01.
  • IRQ — это вывод прерывания, который может предупредить мастер, когда новые данные доступны для обработки.

В следующей статье рассмотрим вопрос подключения модуля nRF24L01 + к Arduino.

Источник

Adblock
detector