Nrf24l01 подключение к ардуино мега 2560

Как подключить и использовать NRF24L01 с Arduino

Для проекта нам понадобятся:

1 Описание и характеристики приёмопередатчика NRF24L01

NRF24L01 – миниатюрный (4×4 мм) приёмопередатчик на одном чипе. Он очень дешёвый, при этом обеспечивает устойчивую радиосвязь на расстояниях в десятки метров (а при усилении и с хорошей антенной – сотни метров в зоне прямой видимости), и поэтому получил широкое распространение среди радиолюбителей. Основные технические характеристики чипа nRF24L01:

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

Внешний вид и назначение выводов приёмопередатчика nRF24L01

Для организации приёма и передачи понадобятся как минимум два подобных модуля с nRF24L01.

Выводы приёмопередатчика nRF24L01

Название Назначение Примечание
GND Земля
VDD Питание 1,9…3,6 В. Если сигнал на MOSI/MISO >3,6 В, то питание не более 2,7…3,3 В.
CE Цифровой вход Chip Enable. Активирует режим приёма или передачи. Активный уровень «1» (HIGH).
CSN Цифровой вход SPI Chip Select. Режим выбора устройства SPI. Активный «0» (LOW).
SCK Цифровой вход SPI Clock. Линия синхронизации SPI.
MOSI Цифровой вход Вход данных SPI от контроллера к nRF24L01. Толерантность к 5 В.
MISO Цифровой выход Выход данных SPI от nRF24L01 к контроллеру. Толерантность к 5 В.
IRQ Цифровой выход Пин прерывания. Активный «0» (LOW).

По традиции, сначала подключим nRF24L01 к Arduino и проверим его работоспособность, используя существующие библиотеки. А затем детально рассмотрим протокол управления и научимся работать с приёмопередатчиком без библиотек.

2 Подключение приёмопередатчика nRF24L01к Arduino

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

Схема подключения nRF24L01 к Arduino

Модули подключаются одинаково, как можно догадаться. А программы в Ардуино будут разные. Один модуль будет работать в режиме приёмника, а другой – передатчика. Но сначала необходимо загрузить библиотеку для nRF24L01 и установить её обычным способом. Библиотека прилагается также в конце статьи.

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

Скетч передатчика nRF24L01 (разворачивается)

В другую Ардуинку загрузим скетч приёмника:

Скетч приёмника nRF24L01 (разворачивается)

В моём случае макет с подключёнными модулями выглядит так:

Подключение передатчика и приёмника nRF24L01 к Arduino

Часто пользователи сообщают о проблемах в питании данных модулей nRF24L01. Это проявляется в том, что приёма нет. В таком случае попробуйте припаять на свободное место модуля конденсатор ёмкостью 1…2 пФ.

Передатчик nRF24L01 подключён к Arduino Nano

Запустим монитор последовательного порта для платы Arduino, которая управляет приёмником nRF24L01. В мониторе мы увидим, что 1 раз в секунду нам приходят пакеты, 31 байт в которых не меняется, а последний, 32-ой, байт содержит увеличивающийся счётчик.

Принимаемые радиоприёмником nRF24L01 пакеты в мониторе последовательного порта

Мы убедились, что модули работают, и что мы можем с помощью них передавать и принимать данные по радиоканалу. Теперь залезем под «капот» и разберёмся, как же управлять приёмопередатчиком nRF24L01.

3 Режимы работы и управление приёмопередатчиком nRF24L01

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

Режим выключения (power down mode)

В этом режиме чип потребляет минимальный ток, но может принимать команды по SPI от контроллера.

Режим ожидания (standby mode)

Есть два режима ожидания.

Первый режим ожидания (Standby-I) используется для снижения потребления. В этом режиме чип принимает команды по SPI, быстро переходит в режим передачи, и так же быстро возвращается обратно в режим ожидания 1. Для перехода в этот режим нужно подать на CE «HIGH» и в регистре CONFIG установить бит PWR_UP в «1».

Второй режим ожидания (Standby-II) более энергозатратен по сравнению с первым: чип работает полностью, и устройство готово к приёму и передаче практически моментально (около 130 мкс). Как только в передающем буфере оказываются данные, микросхема nRF24L01 начинает передачу. Для перехода в этот режим нужно держать CE в «HIGH» и в регистре CONFIG должен быть установлен бит PWR_UP в «1».

Режим приёма (RX mode)

Это режим, в котором чип nRF24L01 используется как приёмник. При этом он постоянно сканирует эфир на наличие валидных пакетов. Как только валидный пакет будет найден, он помещается в свободный слот приёмного буфера. Если буфер полностью заполнен, то пакет игнорируется.

Для перехода в режим приёма нужно установить биты PWR_UP и PRIM_RX в «1», и вывод CE установить в «HIGH». Режим будет держаться до тех пор, пока контроллер не переключит его в другой (например, режим ожидания или выключения).

Режим передачи (TX mode)

Режим передачи используется для передачи данных.

Для перехода в режим приёма нужно установить бит PWR_UP в «1», бит PRIM_RX в «0», и вывод CE установить в «HIGH». Данные передаются пакетами максимальной длиной по 32 байта. Режим будет держаться до тех пор, пока передаётся пакет. По окончанию передачи пакета чип перейдёт в режим ожидания 2 (standby-II).

Важно не держать nRF24L01 в режиме передачи дольше 4 мс! Чип поддерживает расширенный режим Enhanced ShockBurst, который соблюдает это требование. Кроме того, этот режим обеспечивает автоматическую обработку пакетов.

В таблице ниже сведены все условия для управления режимами чипа.

Источник

Урок 26.4 Соединяем две arduino по радиоканалу через nRF24L01+

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

В этом уроке мы научимся соединять две arduino по радиоканалу ISM диапазона, используя радио модуль nRF24L01+, на расстоянии до 100 м. Если использовать радио модули NRF24L01+PA+LNA, то расстояние между arduino можно увеличить до 1 км, не меняя код скетча.

Преимущества:

  • Отсутствие проводов между arduino.
  • Высокая скорость передачи данных, до 2 Мб/с. Выше чем у шин I2C и UART.
  • Полудуплексная связь. Режим работы модулей (приёмник / передатчик) можно менять в процессе их работы.
  • Высокая помехозащищенность. Данные в пакетах принимаются с проверкой CRC.
  • Контроль доставки данных. Приемник отправляет передатчику сигнал подтверждения приёма данных (без смены режима работы).
  • Возможность выбора одного из 128 каналов связи. Шаг каждого канала равен 1 МГц (от 2,400 ГГц до 2,527 ГГц).
  • Возможность одновременной работы до 6 передатчиков на одном канале.

Недостатки:

  • Модули nRF24L01+ работают в радиочастотном диапазоне ISM (Industrial, Scientific, Medical) 2,4 ГГц, на котором работают WiFi, Bluetooth и другие устройства, например радио телефоны и даже СВЧ печи. Эти устройства могут «глушить» некоторые каналы данного диапазона. Поэтому вблизи таких устройств дальность связи между модулями, на некоторых каналах, резко уменьшается. Увеличить дальность можно сменив канал связи на любой из 128 доступных модулям nRF24L01+.
  • При выборе скорости 2 Мб/с, задействуются сразу два канала (выбранный и следующий за ним).
  • Модули питаются от напряжения 3,3 В постоянного тока. Но их можно запитать от 5 В через адаптер nRF24L01+.

Нам понадобится:

  • Радио модуль nRF24L01+ х 2шт.
  • Адаптер к модулю nRF24L01+ х 2шт.
  • Arduino х 2шт.
  • Trema Shield х 2шт.
  • Trema Slider х 1шт.
  • Trema потенциометр х 1шт.
  • Trema четырехразрядный LED индикатор х 1шт.
  • Сервопривод x 1шт.
  • Набор проводов «мама-мама» для подключения радио модулей х 1 комплект.

Для реализации проекта нам необходимо установить библиотеки:

  • Библиотека RF24 (для работы с радио модулями nRF24L01+).
  • Библиотека iarduino_4LED, (для работы с Trema четырехразрядным LED индикатором).
  • Библиотеки SPI и Servo входят в стандартный набор Arduino IDE.

О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki — Установка библиотек в Arduino IDE .

Видео:

Схема подключения:

Оба радио модуля nFR24L01+ подключены, через адаптер, к аппаратной шине SPI. Trema четырехразрядный LED индикатор подключён к цифровым выводам D2 и D3 (можно подключить к любым выводам Arduino). Сервопривод подключён к цифровому выводу D4 (можно подключить к любым выводам). Trema потенциометр и слайдер подключены к аналоговым входам A1 и A0 (можно подключить к любым аналоговым входам). Питание адаптера nFR24L01+ взято с контактов GND и Vcc (5 В).

Если Вы будете подключать модуль nFR24L01+ без адаптера, то модуль требуется запитать от напряжения 3,3 В постоянного тока.

Адаптер nRF24L01+ Arduino Uno Назначение
CE 9 (меняется в скетче) Выбор режима: приёмник / передатчик
CSN (CS/SS) 10 (меняется в скетче) Шина SPI — выбор устройства
SСK 13 (SCK) Шина SPI — линия тактирования
MO 11 (MOSI) Шина SPI — линия данных (от мастера к ведомому)
MI 12 (MISO) Шина SPI — линия данных (от ведомого к мастеру)
IRQ Не используется Прерывание

Алгоритм работы:

Передатчик:

При старте (в коде setup) скетч настраивает работу радио модуля в режим передачи данных, указывая номер канала, скорость передачи, мощность передачи и идентификатор трубы. После чего, постоянно (в коде loop), считывает показания с Trema потенциометра и Trema слайдера, сохраняя их в массив data, и отправляет его радио модулю для передачи.

Приёмник:

При старте (в коде setup) скетч настраивает работу радио модуля, указывая те же параметры что и у передатчика, но в режим приёма данных, а также инициирует работу с LED индикатором и сервоприводом. После чего, постоянно (в коде loop), проверяет нет ли в буфере данных, принятых радио модулем. Если данные есть, то они читаются в массив data, после чего значение 0 элемента (показания Trema слайдера) выводится на LED индикатор, а значение 1 элемента (показания Trema потенциометра) преобразуются в градусы и используется для поворота сервопривода.

Источник

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

Источник

Adblock
detector