Описание
модуль nRF24LE1
Описание с Хабра
Описание nRF24LE1
Существует 3 варианта корпуса чипа: QFN24 (4×4 mm), QFN32 (5×5 mm), QFN48 (7×7 mm). И периферия I2C, UART, SPI у каждого варианта находятся на разных выводах (см с 131 страницы даташита). Здесь я рассмотрю вариант QFN32 и технические характеристики будут относится к нему.
Радиопередающая часть полностью аналогична «безмозглому» варианту nRF24L01+:
2.4 Ггц,125 каналов. Поддерживаемые скорости 250kbps, 1Mbps и 2Mbps и т.д.
Встроенный же 8051-совместимый микроконтроллер имеет следующие параметры:
- Тактовая частота 16мгц.Частотой можно управлять (понижать до 125кгц) в реальном времени.
- Доступная flash память для программы 16кб.
- ОЗУ (RAM) память 1 кб.
- 1 кб. NVRAM (EEPROM память)
- 7 выводов поддерживают 6..12 битных АЦП.
- Два восьмибитных PWM (ШИМ) вывода.
- А так же имеются интерфейсы: I2C, UART, SPI.
- Напряжение питания 1,9В…3,6В.
- Программирование через slave SPI.
Программирование nRF24LE1 через Raspberry PI
Прошить nRF24LE1 возможно через «родной» программатор, который относительно дорог — около $30 на Ebay. Цена мне конечно не понравилась и на просторах интернета был найден вариант программатора на основе Raspberry PI github.com/derekstavis/nrf24le1-libbcm2835. Исходный код программатора был немного модифицирован и русифицирован — пришлось переводить с португальского. Модифицированную версию можно скачать по ссылке в конце статьи.
Для программирования радиомодуля необходимо подключить выводы SPI согласно таблице:
Вывод PROG nRF24LE1 необходимо подключить к 24 выводу GPIO на Raspberry PI. FCSN подключаем аналогично на СЕ0 (вывод 8) .Reset подтягиваем на плюс. Не забываем подключить GND к минусу и VDD к +3.3в.
Карта нумерации выводов радиомодуля может быть разная(из-за разного корпуса микросхемы и разводки печатной платы) и обычно данную информацию можно найти там же где продается сам nRF24LE1, например при покупке на Ebay карта нумерации указывается на странице товара.
Для заливки прошивки воспользуемся скомпилированной программой nrf24le1 используя следующие команды:
- ./nrf24le1 test — выводит тестовую информацию nRF24LE1 (InfoPage).
- ./nrf24le1 write — прошьет файл main.bin, лежащий в этой же папке в nRF24LE1.
- ./nrf24le1 read -создаст дамп прошивки из nRF24LE1 под имененем main-dump.bin .
Программирование nRF24LE1 через USBasp
После изучения варианта прошивки через Raspberry PI, был разработан свой вариант более простой, который может реализовать любой пользователь, программирующий микроконтроллеры AVR и имеющий на вооружении программатор USBasp. Про данный программатор ранее я упоминал, реализовав на нём несколько разнообразных устройств в том числе nRF24L01-USB.
Для данной идеи был использован тот же исходный код программатора под Raspberry PI. А USBasp перепрограммирован в USB-SPI переходник используя библиотеку V-USB.
Программатор на базе USBasp относительно медленный -вся прошивка в 16кб. «заливается» за 12 секунд, но это компенсируется ценой — все же цена этого программатора $3, а не $30.
Подключение nRF24LE1 к USBasp в следущем порядке, по нумерации десяти контактного разъема:
Кстати, неясно толерантны ли выводы nRF24LE1 к 5 Вольтам и нужны ли делители на резисторах для согласования уровней между nRF24LE1 и USBasp. В итоге я не использовал делители и никаких негативных последствий не получил — Вы можете так же не устанавливать делители, но на свой страх и риск. Например у nRF24L01+ выводы толеранты и допускают подключение 5 Вольтовым микроконтроллерам.
Все действия по программированию аналогичны программированию через Raspberry PI.
Пишем первые программы на nRF24LE1
Для написания программы я воспользовался бесплатным кросс платформенным компилятором SDCC sdcc.sourceforge.net.
nRF24LE1 имеет SDK, где расписаны основные функции для работы с микроконтроллером.Этот SDK проверен и поправлен мною. Он собран из нескольких источников.
В данный момент доделываю пример для работы с nRF24L01-USB. Уже реализовано чтение датчика DHT22 и управление нагрузками по радиоканалу. В будущем планирую сделать примерный аналог библиотеки Arduino RF24 -осталось доделать пару функций.
В целом, после программирования на микроконтроллерах AVR программирование nRF24LE1 мне показался не чуть не сложным.
UPD: Забыл упомянуть, что компилятор создает hex файл, а программаторам нужен бинарный. Для преобразования файла можно воспользоваться утилитой hex2bin. Можно прописать команду hex2bin -p 00 main.ihx в make файл.
Какие подручные железки можно ещё переделать под программирование nRF24LE1 ?
Подойдет любой аналогичный мини компьютеру Raspberry PI, например Cubieboard.
Можно реализовать программатор на Arduino. Возможно займусь таким вариантом.
Любой микроконтроллер с аппаратной поддержкой USB, например STM-ки.
Исходные коды и пример:
Программатор на Raspberry PI
Программатор на USBasp (обновлено 5.02.14)
SDK
led_delay
Даташит
Отзывы
Отзывов пока нет.