Ардуино: радиомодуль nRF24L01

Радиомодуль nRF24L01

На прошлом уроке мы научились дистанционно передавать сигнал от одного устройства к другому с помощью радиомодуля с частотой 433 МГц. Этот модуль вполне пригоден для управления одним роботом или другим устройством, где требуется передача сигналов только в одном направлении и с небольшой скоростью (до 4 кб/с).

Если мы хотим передавать большие массивы данных в обоих направлениях, да еще и одновременно между несколькими устройствами, нам потребуется гораздо более «умное» устройство. Подходящим в данном случае можно назвать популярный радиомодуль nRF24L01, который мы и изучим на данном уроке.

Радиомодуль nRF24L01

Модуль nRF24L01 — это цифровой приемник и передатчик, заключенный в одной маленькой микросхеме. Размер платы, на которой размещается микросхема, необходимая обвязка и небольшая антенна составляет всего 15 x 29 мм. Краткая спецификация радиомодуля:

  • несущая частота: 2.4 ГГц;
  • рабочее напряжение: от 3.3 до 3.6 В;
  • дальность: до 100 м на открытом пространстве, и до 30 м в помещении;
  • скорость: <2 Мб/c (250kbps, 1Mbps и 2Mbps);
  • максимальная выходная мощность: +20 дБм;
  • коэффициент усиления антенны (пиковая): 2 dBi;
  • количество каналов: 125.

Для чего можно использовать этот радиомодуль? К примеру, для управления мобильным роботом: двигаем джойстик на пульте — робот едет в нужном направлении. В обратную сторону этот же робот может отправлять данные телеметрии: показания одометра, инклинометра, и разных других датчиков.

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

Вариант по-проще — погодная станция во дворе жилого дома, или на его крыше. Станция собирает данные и каждые 30 минут и отправляет их на другой nRF24L01, находящийся в квартире — тоже достойный вариант, ведь модуль может переключаться в режим низкого энергопотребления, что позволит оставить его без обслуживания на долгое время.

Займемся подключением nRF24L01 к Ардуино Уно. Наша задача — соединить радиоканалом два контроллера и осуществить передачу каких-нибудь данных между ними.

+1

Изменено:

Ардуино: радиомодуль nRF24L01: 19 комментариев

  1. Здравствуйте! Возникли проблемы с библиотекой SerialFlow. Если быть точнее, я её нигде не смог найти. Тот файл, который автор статьи выложил в сеть, вызывает ошибку в Arduino IDE. Буду благодарен за разъяснение данной проблемы.

    +1
  2. Здравствуйте! В вашей статье очень не хватает картинки с подписью номеров пинов на самом радиомодуле.

    +2
  3. Здравствуйте! Лично у меня возникала следующая проблема: я подключал выводы радиомодуля так, будто бы по картинкам с подписями они находятся с обратной стороны, т.е. зеркально, из-за того, что ножки на моем радиомодуле выведены не в лицевую сторону печатной платы, а в тыльную.

    Вдруг, у кого-нибудь еще есть такая проблема? Мне кажется, она заслуживает отдельного упоминания вместе с картинкой пинов на радиомодуле.

    +1
  4. Столкнулся с такой проблемой. Все сделал, как описано на сайте, но вместо значений таймера на передатчике мне выводятся какие- то квадраты да разные буквы и символы. В чем может быть проблема?

    +1
    • Вероятно в мониторе COM-порта стоит неправильная скорость.

      +1
  5. Здравствуйте. Возникает ошибка с SerialFlow rd(7,8); а именно no matching function for call to ‘SerialFlow::SerialFlow(int, int).

    +1
    • Нужно посмотреть SerialFlow.h файл, вероятно там установлен не тот тип передатчика в самом начале и соответственно используется другой конструктор объекта SerialFlow.

      +1
  6. Самое интересное, что автор пишет:
    «Главное, не путаем напряжение: стандартные для Ардуино 5 Вольт могут повредить модуль.»
    и при этом на схеме — макета заводит с ардуины +5В на плату))) От ардуины питать не рекомендуют, так как если модуль заработает, то однозначно работать будет криво! Данный модуль очень чувствителен к питанию, ардуиновского выхода по питанию ему явно не хватает.

    +4
    • Всё верно, для правильной работы лучше питать от 3.3 с внешнего стабилизатора с хорошим током. В примере же используется 5В, что, действительно, весьма рискованно, но стабильно работает некоторое время.
      Подредактируем урок, чтобы ни у кого не возникало желания рисковать здоровьем модуля:)

      +1
  7. Добрый день. А где скачать библиотеку SerialFlow уже под nrf24? Или скажите какой програмой редактировать .h -файлы…

    0
    • Для редактирования .h файла подойдет любой текстовый редактор. Блокнот, к примеру.

      0
  8. Добрый день.Подскажите, пожалуйста, по его документации у него 125 каналов, а объединяться могут только 6? Если стоит задача сделать 100 устройств, которые способны общаться между собой, то это нельзя реализовать с использованием NRF24L01?

    +1
    • Либо один приемник на каждые шесть передатчиков, либо сколько угодно передатчиков, но в режиме приема-передачи: делаешь запрос к конкретному передатчику, он переключается в режим передачи и отправляет данные.

      0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.