Автомобили

Как только он поступил в продажу, многие захотели понять — новый это или просто переделанный автомобиль? Конечно, можно долго ломать голову, но нам интересны другие характеристики этой модели. Говоря простым языком, Лада Приора седан — это сейчас тот автомобиль, который тянет весь великий и могучий АВТОВАЗ.

 

  • Доллар - 30.4199
  • Евро   -  39.2173
Авто за рубежом » Автомобили »

Описание подключения nrf24l01 к Arduino, распиновка и библиотеки

Опубликовано: 27.08.2018

В этой статье мы поговорим о nrf24l01 — одном из самым популярных и недорогих радиомодулей для проектов Arduino и интернета вещей IoT. Модули nrf24l01 для Arduino легко найти в любом интернет-магазине, они относительно недороги. При этом с их помощью можно организовать достаточно надежную многоканальную связь с подтверждением доставки пакетов между контроллерами ардуино и другими устройствами. В этой статье мы рассмотрим описание, распиновку nrf24l01, а также узнаем, какие библиотеки можно использовать с этим радиомодулем.

Описание модуля NRF24L01

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

NRF24l01 – это высокоинтегрированная микросхема с пониженным потреблением энергии (ULP) 2Мбит/с для диапазона 2,4 ГГц. При помощи модуля можно связать несколько устройств для передачи данных по радиоканалу. Можно объединить до семи приборов в одну общую радиосеть на частоте 2,4 ГГц, один из модулей будет выступать в роли ведущего, остальные – ведомые. Радиомодуль NRF24l01 стоит дешево, поэтому его можно встретить в самых разных проектах – от умного дома до различных самодельных роботов.

Характеристики nrf24l01

Низкие затраты энергии; Наличие усовершенствованного ускорителя аппаратного протокола ShockBurst; Операционная система ISM; Скорость передачи данных 250 Кбит/с, 1 Мбит/с и 2 Мбит/с; Полная совместимость со всеми стандартными сериями nRF24L Nordic, а также сериями nRF24E и nRF240; Напряжение питания 3,3В; Рабочие температуры от -40С до 85С, температуры хранения от -40С до 125С; Дальность связи до 100 м.

Основой модуля служит nRF24L01+ производства компании Nordic Semiconductor. На микросхеме расположены все необходимые элементы и вилка разъема. По интерфейсу SPI можно произвести настройку протокола, установить выходную мощность и наладить каналы обмена данных.

Сфера применения модуля nrf24l01

Одним из самых главных компонентов проектов IoT являются средства коммуникации. nrf24l01 можно с успехом применять в следующих областях:

Мобильная электроника; Компьютеры; Автоматизированные системы; Различные элементы «умного дома» — сигнализация, регулирование температуры и другие функции; Игры; Бытовая электроника.

В плату nRF24L01+ входят синтезатор частот, демодулятор, усилители и другие составляющие. Рабочая частота модуля определяется номером канала, диапазон частот, в котором происходит связь, 2,4 – 2,483 ГГц. Каналы располагаются через 1 МГц, то есть нулевому соответствует частота 2,4ГГц, каналу 83 – 2,483 ГГц.

Модуль имеет 4 рабочих режима – выключение (Power Down), спящий режим (Standby), прием данных(RX mode), передача данных (TX Mode). В режиме приема данных RX потребление тока выше, чем в режиме передачи данных TX.

За стабильную и надежную передачу и прием данных отвечает протокол Enhanced ShockBurst. Принимающее устройство должно давать ответ о приеме данных, подтверждая таким образом обратную связь.

Распиновка NRF24L01

Помимо выходов питания линии сигналов могут подключаться к контактам с питающим напряжением 5 В. Вход устройства, которое подключается к плате, должен потреблять ток не выше 10 мА.

Микросхема содержит следующие выходы:

GND – земля; VCC – напряжение питания 3,3В CE – высокий уровень микросхемы; CSN – включение низкого уровня микросхемы. В этом случае устройство реагирует на SPI команды; SCK – такт SPI, максимальное значение 10 МГц; MOSI – передача информации от контроллера; MISO – прием данных в контроллер; IRQ – сигнал для аппаратного прерывания.

Организация питания nrf24l01

Во время запуска микроконтроллера могут возникнуть проблемы, которые связаны с тем, что не предусмотрена нужная сила тока в модуле питания 3,3 В. Из-за этого могут возникнуть помехи, мешающие стабильной работе. Обычно подобные трудности появляются, когда используются платы Arduino Uno, Nano, Mega, то есть в тех, в которых не хватает мощности. Для приведенных видов плат на пины подается небольшой ток 50 мА.

Существует несколько методов решения этой проблемы:

Подключение конденсатора к микросхеме на 3, 3 В(+) и землю GND (-). Емкость лучше выбирать 10 мкФ и более. Дополнительный источник напряжения на 3,3 В. Разработка отдельной платы, установка на нее модуля nRF24L01 и добавление конденсаторов на 1 и 10 мкФ. Применение YourDuinoRobo1, который обладает дополнительным регулятором на 3,3 В.

Различные версии модуля NRF24L01

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

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

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

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

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

Внешний вид макета представлен на рисунке ниже.

При подключении важно не перепутать напряжение – 5 Вольт могут вывести модуль из строя.

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

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

Как видно, на  адаптере имеется 2 вида разъемов. Двухрядный разъем используется для подключения радиомодуля, однорядный – для соединения с Ардуино. Отдельно расположены выходы на питание (5В) и землю.

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

Программирование nRF24L01

Для написания скетчей в среде ARDUINO IDE нужно установить 2 библиотеки — RF24 и SerialFlow. Первая нужна для работы с модулем, вторая – для пакетной передачи данных. Ссылки на скачивание библиотек вы найдете в конце статьи.

Пример программы для передатчика. В первую очередь создается объект класса SerialFlow:

SerialFlow rd(9,10);

В этой строке 9 и 10 – это свободные пины с Ардуино, к которым подключаются контакты CN и CSN.

Настройка формата передаваемых пакетов производится в функции setup:

rd.setPacketFormat(2, 1);

Первый аргумент (в данном случае число 2) определяет размер передаваемого числа. Для конкретного случая число находится в диапазоне от 0 до 655535 и занимает 2 байта. Для 0 до 255 будет занят 1 байт. Второй аргумент  — количество чисел.

Далее нужно настроить адреса передатчика и приемника:

rd.begin(0xF0F0F0F0E1LL,0xF0F0F0F0D2LL);

Первым аргументом записывается адрес передатчика, вторым – адрес приемника.

Цикл loop выполняет отправку пакетов.

Пример программы для приемника. При получении данных приемник должен сигнализировать об этом. Данные будут отправляться в монитор порта Arduino IDE.

В коде так же записывается объект SerialFlow и настраиваются необходимые параметры пакета данных. Изменения происходят в строчке

rd.begin(0xF0F0F0F0D2LL,0xF0F0F0F0E1LL);

Теперь первым аргументом должен быть указан адрес приемника, а вторым – передатчика.

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

Помимо библиотек RF24 и SerialFlow существует и другая — библиотека Mirf . Выбор той или иной библиотеки определяется удобством работы.

Операторы для передачи данных между двумя модулями с помощью библиотеки Mirf:

payload = PAYLOAD; — задает размеры буфера для приема. На payload установлено ограничение – максимальный размер равен 32 байтам. setRADDR((byte*)’serv1′); — выбор адреса приемника (размер не менее 3 байт и не более 5 байт). setTADDR((byte *)’clie1′); — выбор адреса передатчика (размер не менее 3 байт и не более 5 байт).. Во время передачи пакета данных на первом модуле происходит установка адресата Mirf.setTADDR((byte *)’clie1′), затем пакет отправляется ко второму модулю. После этого на втором модуле устанавливается Mirf.setTADDR((byte *)’serv1′) и возвращается ответ на первый модуль. isSending() – проверка окончания передачи данных. dataReady() – проверка получения входящего пакета. getData((byte *) &data); — чтение полученных пакетов в переменную data. send((byte *) &data); — подача команды на отправку пакета. В библиотеке указывается адрес, в котором находятся переменные. После этого происходит копирование их в память и в итоге пользователь получает доступ к переданным данным через переменные. Способ удобен тем, что можно передавать любой тип данных, в том числе структуры.

Передача структур nrf24l01

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

Во время работы со структурами нужно внимательно рассчитать ее размер и указать PAYLOAD. Общий размер структуры будет равен сумме всех размеров составляющих ее переменных.

Основные элементы кода:

#define ADDR «mod0» //указывается адрес модуля

#define NEXT «mod1» //указывается адрес следующего модуля

boolean iamfirst=true;//начинает ли этот модуль цепочку?

#define PAYLOAD 5 //размер полезной нагрузки

Все модули в итоге будут получать одинаковый скетч, в котором различаться будут только переменные ADDR, NEXT и iamfirst.

Скачать библиотеки nrf24l01

Основная библиотека для работы с модулем — RF24 . В библиотеке содержится огромное количество примеров программ. Важно отметить, что во время записи программы в ардуино нужно отключить модуль передатчика. Также перед первой инициализацией нужно сделать паузу в 2 секунды после подачи напряжения. Перед началом работы функцию RF24::flush_tx нужно сделать публичной и очистить буфер передачи перед отправкой новых сообщений.

Другая библиотека nrf24l01 – SerialFlow . Эта библиотека нужна для того, чтобы задавать формат передаваемого пакета, устанавливать функции для упаковки информации в пакет и их распаковки.

Библиотека Mirf . Эта библиотека является альтернативой вышеописанной RF24. Последняя ближе к стандартам, используемым для программирования ардуино, поэтому многим, особенно новичкам, может быть неудобна работа с mirf. Выбор той или иной библиотеки определяется только удобством и простотой ее для пользователя.

Выводы по nrf24l01

Беспроводной модуль nrf24l01 нельзя назвать простым в освоении устройством. И подключение, и программирование требует определенных навыков. Но стоимость и доступность модуля позволяет рекомендовать его для тех, кто занимается проектами интернета вещей или нуждается в простых инструментов для коммуникаций. Купив специальный адаптер для nrf24l01 вы можете существенно упростить подключение к ардуино. А использование библиотек позволяет максимально упростить код. Старайтесь не покупать модули nrf24l01 дешево у совсем уж неизвестных продавцов, и тогда никаких проблем с работой ваших проектов не будет.

Новости

    Где купить билеты жд

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

    Квитки на поїзд Київ

    Очень часто ездию по стране. Приобретаю квитки на поїзд Київ только через настоящий сервис. Всегда удачно.

    Жд билеты в Харькове

    Необходимо приобрести жд билеты Харьков? Рекомендую обратиться к интернет-сервису Proizd.ua. Настоящий сервис направлен

    Где заказать билеты онлайн

    Если вам необходимо в срочном порядке приобрести залізничні квитки, тогда я бы вам посоветовал воспользоваться услугами настоящего интернет-ресурса.

    За наличные и по безналу по всей России
    Смысл понятия "безналичные расчеты" очевиден - это расчеты без использования наличных денег, совершаемые путем перечисления средств с одного банковского счета на другой. Участниками безналичных расчетов

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

    Газель 405 двигатель инжектор
    Двигатель ЗМЗ-405 производится ОАО «Заволжский моторный завод» - основным поставщиком силовых агрегатов для Горьковского автозавода. Этот мотор является модернизированным вариантом известного,

    Диагностика автомобиля перед покупкой
    Полная диагностика автомобиля перед покупкой     Выбирая автомобиль, хоть какой человек глядит не только лишь на его прекрасные наружные данные, да и  на технические свойства.  Объемы движков, типы приводов,

    Выхлопная система ваз 2107 инжектор
    Вдруг, ни с того, ни с сего, при полном комфорте при езде на любимой «семёрке» возникает непонятный «рык» на подгазовке. Водитель выключает магнитолу и прислушивается. После каждого нажатия на педаль

    Бензонасос ваз 2107 инжектор
    Бензонасос - является ахиллесовой пятой всех автомобилей отечественного производства. Практически на каждом ВАЗе или Москвиче, водитель хоть раз сталкивался с проблемой отсутствия подачи топлива в двигатель.

Анекдоты

Где можно получить права на вождение танка и бронетранспортёра? Господи, катайтесь так! Кто вас остановит?!
rss