Радиомодуль nRF24LE1 - это интегрирование решение nRF24L01 и микроконтроллера совместимого 8051 с низким потреблением.К радиомодулю можно сразу подключить датчики , реле и другие устройства.Программирование осуществляется через интерфейс SPI.
Цена устройства примерно от $ 5 на торговой площадке Ebay.
Технические характеристики
Характеристики самого радиомодуля наследуются от nRF24L01:
Поддерживаемые скорости передачи:250kbps, 1Mbps и 2Mbps.
Количество каналов: 125.
Характеристики микроконтроллера:
Существуют 3 разновидности корпуса микросхемы : QFN24 (4×4 mm) , QFN32 (5×5 mm) , QFN48 (7×7 mm).У каждой версии расположение интерфейсов I2C , UART, SPI отличается (см. 131 страницу даташита) ! На данной справочной страничке размещены фото и основные параметры для версии корпуса QFN32.
Тактовая частота 16мгц.
Доступная flash память для программы 16кб.
ОЗУ (RAM) память 1 кб.
7 выводов поддерживают 6..12 битных АЦП .
2 PWM - ШИМ выводы.
А так же имеются интерфейсы : I2C , UART, SPI.
Напряжение питания 1,9В...3,6В.
Ток потребления: в рабочем режиме 5..6мА, в спящем режиме 1мкА.
Даташит на устройство nRF24LE1_OTP_Product_Specification_rev1_2.pdf.
Программирование радиомодуля
Подключение программатора осуществляется к данным выводам для каждой версии корпуса:
Так же для заливки прошивки используется вывод PROG.На его необходимо подать высокий уровень для загрузки прошивки и для выгрузки прошивки.RESET как и при работе должен подтянут на плюс.
Загрузить программу в устройство возможно несколькими способами:
- Программатор NRF24LE1 Downloader mPro (такое название встречается на Ebay.) .Его примерная цена от $ 30.
- C помощью Raspberry PI.
- C помощью USBasp.
Среда разработки
Для разработки прошивки используется компилятор SDCC http://sdcc.sourceforge.net/
Используя SDK ,в которой имеется масса готовых функций для работы с модулем,можно реализовывать например управление радиомодулем,GPIO и другими возможностями не вникая сильно в архетектуру микроконтроллера.
#include <stdint.h> #include <stdio.h> //подключение необходимых функций: #include "src/gpio/src/gpio_pin_configure.c" #include "src/gpio/src/gpio_pin_val_clear.c" #include "src/gpio/src/gpio_pin_val_set.c" #include "delay.h" #include "src/delay/src/delay_us.c" #include "src/delay/src/delay_s.c" #include "src/delay/src/delay_ms.c" void main() { // мигаем портом P0_0 gpio_pin_configure(GPIO_PIN_ID_P0_0, // укажем необходимые параметры GPIO_PIN_CONFIG_OPTION_DIR_OUTPUT | GPIO_PIN_CONFIG_OPTION_OUTPUT_VAL_CLEAR | GPIO_PIN_CONFIG_OPTION_PIN_MODE_OUTPUT_BUFFER_NORMAL_DRIVE_STRENGTH); while(1) { gpio_pin_val_set(GPIO_PIN_ID_P0_0); //установка 1 delay_ms(500); gpio_pin_val_clear(GPIO_PIN_ID_P0_0); //установка 0 delay_ms(500); } }
Скачать пример можно тут.
Ниже будут публиковаться библиотеки для работы с радиомодулем:
millisNrf.zip - Попытка реализовать функцию millis() аналогично arduino , использует нулевой таймер микроконтроллера.
Библиотека для работы с приемо-передающей частью nRF24LE1. Настройка и управление в ней почти все аналогично библиотеке Arduino RF24.
Так же разработан конструктор беспроводного клиента на базе nRF24LE1, в котором можно создать и скачать готовую прошивку для беспроводных датчиков и удаленного управления устройствами.