Мой вариант подключения и проверки радиомодуля NRF24L01
Всем доброго времени суток, в этой статье я постараюсь максимально доходчиво объяснить как подключить радиомодуль NRF24L01 к плате Arduino UNO, при этом сделать унифицированной не только конфигурацию железа, но и сам скетч, который будет впоследствии залит в UNO.
Итак, начинаем. В интернете много людей интересуется, как правильно подключить данный радиомодуль к плате Arduino UNO, у многих возникают вопросы как сделать это попроще. Мною было прочитано много статей, и я постарался сделать свой уникальный вариант подключения модуля NRF24L01.
Не буду вдаваться в подробности какие виды этих радиомодулей бывают, об этом будет отдельная статья. Всё просто - вы купили радиомодули NRF24L01, теперь применим их, и проверим их работу.
Для начала, уточню - работать мы будем с библиотекой RF24.h, эта библиотека довольно таки гибкая, содержит больше примеров и функционала чем библиотека Mirf.h(о ней тоже в отдельной статье). Так используем же её основные функции. Что нам понадобится? Всё то что указано в списке:
- Плата Arduino UNO x2
- Радиомодуль NRF24L01 x2
- Светодиоды x4
- Резисторы 220 Ohm x4
- Резисторы 10k x2
- Простые кнопки x2
- Touch Sensor x2
- Соединительные провода
Touch Sensor - это емкостная кнопка(на принципиальной схеме это S2), реагирующая на касание пальцем, у меня были именно две такие, и поэтому я решил их использовать. Но если у вас таких нет можно взять обычные, придется немного переделать скетч и схему подключений. Сразу нужно привести распиновку модуля NRF24L01, модули эти как я уже писал бывают нескольких типов, но распиновка у всех одинаковая. Подробная распиновка на рисунке ниже, показывает, где какие контакты, далее будет приведена таблица подключения к Arduino UNO.
Важно. При подключении радиомодуля не перепутать контакты "Земля" и "Питание 3,3В", если это произошло то скорее всего радиомодуль выйдет из строя. Поэтому будьте внимательны, выполняя подключение.
В нижеследующей таблице указано подключение радиомодуля к Arduino UNO. Цвета проводов при подключении соответствуют цветам на картинке с принципиальной схемой.
Arduino UNONRF24L01Цвет провода3V3Питание 3,3ВОранжевыйGND"Земля"Синий9СЕЖелтый10SCNЗеленый13SCKФиолетовый11MOSIКоричневый12MISOОранжевый
Все остальные компоненты, нужно подключить так как указано на принципиальной схеме. В итоге, у вас должно получиться два устройства, с одинаковой конфигурацией железа и подключения самого железа. Принципиальная схема:
Когда два идентичных прибора будут собраны, приходит время залить скетч в оба. После скетча я сделаю некоторое разъяснение как работает программа, ну а пока, сам скетч:
Вкратце опишу, как работает собранное устройство. Когда включается устройство, то сразу после инициализации переходит в режим радиоприёма, то же самое касается и второго устройства. При нажатии и удержании в нажатом состоянии кнопки S1, включается светодиод LED2(Смотрите принципиальную схему выше), который означает переход устройства в режим передачи. Если, при нажатой кнопке S1, нажать на сенсорную кнопку S2, то на другом устройстве загорится светодиод LED1, сигнализирующий об успешном приёме данных с радиопередатчика.
Таким же способом можно проверить и второе устройство, в общем я постарался сделать унифицированный скетч и принципиальную схему для двух устройств приёмо/передачи. На самом деле, библиотека RF24 содержит более расширенный функционал, чем тот что применен в моей статье, но об этом будет написано в другой теме.
И еще напоследок, испытание этих двух приборов в полевых условиях(плотная бетонная застройка жилого района), показала довольно таки неплохой результат - 150 метров уверенного приёма/передачи. Хотя на открытой местности, как заявляет производитель модулей NRF24L01, сигнал должен покрывать расстояние в 1000 метров без проблем, да, я забыл сказать что мной были использованы модули с внешней антенной и встроенным усилителем. Тот модуль что показан на принципиальной схеме выше, уверенно покрывает расстояние в 20 метров.
Небольшая ложка дегтя - для тех кто захочет повторить схему. Модули NRF24L01 не очень дружат с платой Arduino Nano, всё из-за просадки напряжения в 3.3 вольт на плате Nano. Можно припаять полярный конденсатор номиналом 47mf * 25V к разъёмам питания платы(об этом можно прочитать на многих форумах по электронике), но этот решение малоэффективно. Как вариант, использовать силовые шилды для Arduino Nano, либо пользоваться платой Arduino Uno.