Взаимодействие nRF24L01 с Arduino: удаленное управление серводвигателем
В то время как интернет вещей (IoT), межмашинное общение и тому подобное становятся всё более популярными, потребность в беспроводной связи становится всё более востребованной, и всё больше машин/устройств общаются друг с другом в облаке. Разработчики используют множество систем беспроводной связи, таких как Bluetooth Low Energy (BLE 4.0), Zigbee, ESP43 Wi-Fi модули, RF модули 433 МГц, Lora, nRF и т.д., и выбор посредника зависит от типа приложения, в котором она используется.
Одним из популярных беспроводных посредников для локальной сети является nRF24L01. Эти модули работают на частоте 2,4 ГГц (диапазон ISM) со скоростью передачи данных от 250 кбит/с до 2 Мбит/с, что является легальным во многих странах и может использоваться в промышленных и медицинских приложениях. Также утверждается, что при наличии соответствующих антенн эти модули могут передавать и принимать сигналы на расстоянии до 100 метров между ними. Интересно! Итак, в этом уроке мы узнаем больше об этих модулях nRF24L01 и о том, как связать их микроконтроллерной платформой, такой как Arduino. Мы также поделимся некоторыми решениями для часто возникающих проблем при использовании этого модуля.
Взаимодействие nRF24L01 с Arduino: удаленное управление серводвигателем
Знакомство с RF модулем nRF24L01
Модули nRF24L01 являются приемопередающими модулями, то есть каждый модуль может отправлять и принимать данные, но поскольку они полудуплексные, в какой-либо момент времени они могут либо передавать, либо принимать данные. Модуль содержит микросхему nRF24L01 от Nordic semiconductors, которая отвечает за передачу и прием данных. Микросхема обменивается данным с помощью интерфейса SPI и, следовательно, может легко взаимодействовать с любыми микроконтроллерами. С Arduino всё становится намного проще, так как для нее доступны библиотеки. Распиновка стандартного модуля nRF24L01 показана ниже.
|
Распиновка модуля nRF24L01
Рабочее напряжение модуля составляет от 1,9 В до 3,6 В (как правило, 3,3 В). Модуль потребляет очень маленький ток, составляющий всего 12 мА при нормальной работе, что делает его эффективным при использовании с аккумуляторами, и, следовательно, он может работать даже от элементов питания размером с монету. Несмотря на то, что рабочее напряжение составляет 3,3 В, большинство выводов толерантны к 5 В и, следовательно, могут напрямую подключаться к 5-вольтовым микроконтроллерам, таким как Arduino. Еще одним преимуществом использования этих модулей является то, что каждый модуль имеет 6 каналов связи (pipeline). Это означает, что каждый модуль может связываться с 6 другими модулями для передачи и приема данных. Это делает данный модуль пригодным для создания сетей с топологиями «звезда» и «ячеистая» в приложениях IoT. Кроме того, они имеют широкий диапазон адресов из 125 уникальных идентификаторов, поэтому в закрытом пространстве мы можем использовать 125 таких модулей, не мешающих друг другу.
Взаимодействие nRF24L01 с Arduino
В этом руководстве мы узнаем, как связать nRF24L01 с Arduino, управляя серводвигателем, подключенным к одной плате Arduino, путем изменения потенциометра, подключенного к другой плате Arduino. Для простоты мы использовали один модуль nRF24L01 в качестве передатчика и один в качестве приемника, но каждый модуль может быть отдельно запрограммирован для передачи и приема данных.
Принципиальная схема подключения модуля nRF24L01 к Arduino приведена ниже. Для разнообразия я использовал UNO для приемной части и Nano для предающей части. Но для других плат Arduino, таких как Mini и Mega, логика подключения остается неизменной.