Существуют недорогие радимодули nRF24L01+ ,которые работают на частоте 2.4ггц и поддерживают скорость передачи до 2Mbps.Радиоканал на данных радиомодулях может обмениваться информацией в оба направления. Радиосеть может состоять из нескольких устройств на базе nRF24L01+ или NRF24LE1.
nRF24L01+ - отличный вариант для объединения отдаленных модулей в системе умного дома внутри помещений без прокладки проводов.
Технические характеристики:
-Частота передачи/приема 2.4ггц.
- Дальность до 100 м.В помещении - до 30 м.
- Скорость до 2 Мб.Возможные варианты: 250kbps, 1Mbps и 2Mbps.
- Интерфейс взаимодействия с микроконтроллером- SPI. Выводы толеранты к 5 вольтам.
- Напряжение: 3-3.6В (рекомендуется 3,3) В. При попытке подключения 5 В вывод из строя маловероятен,но работать устройство отказывается..
- Максимальная выходная мощность: 0 dBm
- Коэффициент усиления антенны (пиковая): 2dBm
-Количество каналов: 126. Нулевой канал начинается с 2400мгц и далее с шагом 1 мгц,например 70 канал находится соответственно на 2470мгц. При установке скорости 2мгц занимается ширина двух каналов..
Даташит на устройство nRF24L01+ : nRF24L01Pluss_Preliminary_Product_Specification_v1_0.pdf.
Существует, но уже не встречается в продаже модуль nRF24L01 (без плюса) - это более старая версия радиомодуля,в которой нет поддержки скорости 250кб и ниже чувствительность по сравнению с nRF24L01+. Так же в нем нет некоторых режимов работы.
Даташит на устройство nRF24L01: nRF24L01P.pdf.
Примерная цена за 1 штуку: 1$.
Радиомодуль возможно подключить к любому микроконтроллеру, который имеет интерфейс SPI , а так же к миникомпьютерам, например Raspberry PI.
Встречается несколько разновидностей разводки печатной платы и соответственно распиновка подключения отличается - смотрите фото выше. Для увеличения максимального растояния существуют так же радиомодули с уситителем и внешней антенной:
Данный радиомодуль может не иметь в комплекте саму антенну - её можно использовать от старого WI-FI роутера или WI-FI сетевой карты. Существуют аналогичные модули со встроенной керамической антенной. Подключение аналогично распиновке, указанной на предыдущем фото.
Заявленная дальность до 1100 метров при скорости 250кбит. При 1мбит - 750 метров. А при скорости 2мбит- 520 метров. Скорее всего эти параметры указаны при отсутсвии препятствий и если все радиомодули в радиосети будут именно такие. Рекомендую уменьшать избыточную мощность через setPALevel (библиотека Nf24) или напрямую в регистре RF_SETUP.
Цена от 5$ на Ebay по наименованию NRF24L01+PA+LNA.
Назначение выводов:
SCK (Serial ClocK) — тактирование (синхронизация).
MOSI / MI (Master Out Slave In) — вход данных.
MISO / MO (Master In Slave Out) — выход данных.
CE/SS - Выбор ведомого на шине SPI из нескольких устройств.
SCN - выбор режима приема/передача , фактически тот же CE.
IRQ - выход прерывания,чаще всего не используется. Необходим для немедленной реакции микроконтроллера при приеме нового пакета данных.
GND - земля,масса,минусовая шина.
Vcc -питание модуля 3.3в. Для надежной работы паралельно питанию как можно ближе к радиомодулю рекомендуется подключить электролитический конденсатор не менее 100мкф , а так же керамический на 0.1 мкф.
Библиотека для работы с nRF24L01+ в Arduino RF24 . В архиве имеется так же библиотека для работы c Raspberry PI в папке librf24-rpi.Между Arduino и Raspberry возможен обмен данными.
Библиотеку и пример работы с nRF24L01+ на Си можно посмотреть тут.
Ограничения библиотек: В радиосеть могут объеденены максимум до 6 радиомодулей. Радиомодуль может работать только максимум с 6 адресами, но клиенты могут иметь и одинаковые адреса ,тем самым увеличив максимальное количество клиентов в радиосети. Длинна переданого пакета не больше 32 байт.
В интернете можно найти и другие библиотеки для работы с Arduino.
P.S: Существуют радиомодули NRF24LE1 со встроеным микроконтроллером на базе 8051-compatible, к которым сразу можно подключать датчики или реле. Подробнее тут.
Подключение nRF24L01+ к Arduino
Таблица подключения радиомодуля к платам Arduino:
Arduino UNO | Arduino Mega | |
SCK | 13 | 52 |
MOSI | 11 | 51 |
MISO | 12 | 50 |
CSN | 10* | 53** |
CE/SS | 9* | 48** |
* - при установке иницилизации в скетчке командой RF24 radio(9,10);
** - при установке иницилизации в скетчке командой RF24 radio(48,53);
Выводы СЕ и CSN могут быть назначены любые свободные.
Питание подключается с соотвествующих выводов платы Arduino: GND и 3.3V.
Пример скетча клиента тут , сервера - тут.
Подключение nRF24L01+ к Raspberry PI
Raspberry PI | |
SCK | 11 |
MOSI | 9 |
MISO | 10 |
SCN | 8* |
CE | 25* |
Нумерация выводов по BCM GPIO. Карту пинов можно посмотреть на страничке Работа с GPIO и датчиками.
Подключение nRF24L01+ к компьютеру через USB
Статья находится тут. Количество подключаемых клиентов - до 20-30 штук.