NRF24L01+ пример инициализации

Форум, с конкретными примерами и реальными задачами и их решением.
Пишите в личку (admin, LEV-PRAV, mim) ссылки на темы, достойные быть скопированы сюда.

Модератор: Иван Николаевич

Re: NRF24L01+ пример инициализации

Сообщение Вячеслав (Вячеслав) » 05 июн 2017, 17:10

Добрый день.
Пытаюсь использовать Ваш материал для организации передачи данных с передатчика (там 2 датчика DS18B20 с pic16f88 и батарейное питание) на приемник (там LCD16x2, кнопка запроса данных и pic16f876A). В наличии только 1 nRF24 с антенной и 2 шт. - без. Все узлы без +.
Где-то прочитал, что можно увеличить расстояние устойчивой связи припаяв два "уса" из провода по18 см. к проводникам антенны у модулей без LNA.
nRF24_anten.jpg

Ещё:
".....Правовые нормы использования радиочастот
Диапазон частот 2400 – 2500 МГц относится к т.н. международному «промышленному научному и медицинскому диапазону радиочастот» (ISM band).
Использование радиоэлектронных средств в России регулируется Правилами регистрации радиоэлектронных средств и высокочастотных устройств. Раздел «Изъятия из перечня радиоэлектронных средств и высокочастотных устройств, подлежащих регистрации» определяет перечень радиочастотного оборудования, не подлежащего регистрации. В частности, пункт 24 разрешает использование частот 2400-2483,5 Мгц в устройствах малого радиуса действия, используемых «в сетях беспроводной передачи данных в полосе радиочастот 2400 - 2483,5 МГц, с максимальной эквивалентной изотропно излучаемой мощностью передатчика не более 100 мВт при использовании прямого расширения спектра и других отличных от псевдослучайной перестройки рабочей частоты видов модуляции ... при максимальной спектральной плотности эквивалентной изотропно излучаемой мощности 2 мВт/МГц».
Т.е. допускается использование передатчиков nRF24L01 на каналах 0...83 (2400...2483 МГц) без усилителей мощности сигнала.
Условия использования частот в диапазоне от 2500Мгц изложены в п.13:
«Пользовательское (оконечное) оборудование передающее, включающее в себя приемное устройство, работающее в полосах радиочастот 2300 - 2400 МГц, 2500 - 2690 МГц, 3400 - 3450 МГц и 3500 - 3550 МГц, с допустимой мощностью излучения передатчика не более 1 Вт, в том числе встроенное либо входящее в состав других устройств»
Т.е. допускается использование модулей nRF24L01 на каналах 100...125 (2500...2525 МГц) с усилителем мощности.
Как видно, документ не описывает использование частот в диапазоне 2484 – 2499 МГц. Т.е. использовать каналы 84...99 (2484...2499 МГц) передатчиков nRF24L01 не допускается.".....
Статья: "Подключение модулей связи 2,4ГГц на базе чипов nRF24L01+ к микроконтроллеру "
Автор: Погребняк Дмитрий
Попытаюсь переписать Ваши макросы для PIC. Насколько это трудоемко -не знаю, так не делал.
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Вячеслав
Имя: Вячеслав
(Саратов)
Суперконсульт
Суперконсульт
Информация о пользователе

Re: NRF24L01+ пример инициализации

Сообщение andrewproffi (Андрей) » 05 июн 2017, 17:55

Да я видел эти нормы.
для переделки на PIC думаю просто нужно разобраться с подключение неиспользуемых выводов DAC и NVM, сделать по аналогии, а остальное просто общение с регистрами модуля.
Удачи!
Аватар пользователя
Ник: andrewproffi
Имя: Андрей
(Томск)
Суперконсульт
Суперконсульт
Информация о пользователе

Re: NRF24L01+ пример инициализации

Сообщение Вячеслав (Вячеслав) » 08 июн 2017, 06:57

andrewproffi писал(а):для переделки на PIC думаю просто нужно разобраться

Есть вопросы по уточнению макросов:
1. В файле FC5_AVR_SPI_Legacy.c оставлены только 3 функции, а в окне компонента SPI добавлены 16 макросов с началом имени NRF_ ( для файла ххх. fcc). Из них только 7 оригинальных, остальные меняют только имена бывших уже там файлов и там же оставленных. Дублирование для эстетики? Как выбирал соотношение количества функций для файла ххх.с и xxx.fcc?
2. Не получается во FC изменить имя макроса и записать прототип функции ни через окно "изменить свой код", ни через окно "новый макрос" , хотя код макроса доступен. Просвети, если не трудно, как и чем созданы приведенные тобой макросы?
FC5_SPI_Legacy_name_prototyp.jpg
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Вячеслав
Имя: Вячеслав
(Саратов)
Суперконсульт
Суперконсульт
Информация о пользователе
Вернуться наверх

Re: NRF24L01+ пример инициализации

Сообщение andrewproffi (Андрей) » 08 июн 2017, 08:50

для корректной работы моего исправленного компонента. ОБЯЗАТЕЛЬНО заменить компонент FC5_AVR_SPI_Legacy.c тем, который лежит в архиве под последним видео на предыдущей страницы, и внимательно посмотреть видео.
думаю после замены компонента проблемы исчезнут
хотя замена видимо не поможет, если вы для pic делаете. тогда либо самостоятельно переделывать FC5_AVR_SPI_Legacy.c - удалить из него лишние на мой взгляд функции, либо оставить их в покое просто добавлять новые макросы вручную.
Аватар пользователя
Ник: andrewproffi
Имя: Андрей
(Томск)
Суперконсульт
Суперконсульт
Информация о пользователе
Вернуться наверх

Re: NRF24L01+ пример инициализации

Сообщение Вячеслав (Вячеслав) » 15 июн 2017, 16:48

andrewproffi писал(а):для корректной работы моего исправленного компонента....

1. Добрый человек, в окне макроса NRF_INT в самом коде макроса у Вас есть строка:
DDRB|=(1<<PB2); //определили B2 как выход.
Кажется, теперь она лишняя (думаю, из предыдущего варианта решения). Мне это помешало прямо импортировать Ваш xxx.fcc для PIC.
3. Вот результат работы заимствованного у Вас файла макросов для PIC:
p88_send_4_byte_FC5.jpg

p88_send_4_byte_Proteus.jpg

Мне кажется-это обнадеживает. Долго не мог понять: как получается прототип. Описание разработчик пишет телеграфным стилем. Перешел во FC4 и её окошкам создания макросов, стало понятнее. Видимо сам пропустил этот момент.
3. Можно использовать сл. прием: после задания имени и прототипа нового макроса код писать удобным редактором. У меня- Notepad. Там в заголовках макросов файла xxx.fcc- кракозябы, а код писать - вполне удобно.
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Вячеслав
Имя: Вячеслав
(Саратов)
Суперконсульт
Суперконсульт
Информация о пользователе
Вернуться наверх

Re: NRF24L01+ пример инициализации

Сообщение andrewproffi (Андрей) » 16 июн 2017, 05:40

Вячеслав писал(а):1. Добрый человек, в окне макроса NRF_INT в самом коде макроса у Вас есть строка:
DDRB|=(1<<PB2); //определили B2 как выход.
Кажется, теперь она лишняя (думаю, из предыдущего варианта решения). Мне это помешало прямо импортировать Ваш xxx.fcc для PIC.

3. Можно использовать сл. прием: после задания имени и прототипа нового макроса код писать удобным редактором. У меня- Notepad. Там в заголовках макросов файла xxx.fcc- кракозябы, а код писать - вполне удобно.


1 - это вывод SS интерфейса SPI, про него нельзя забывать, сам не знал пока МИМ не сказал. У вашего МК это вывод RB5 его НЕОБХОДИМО либо использовать как CSN, либо как у меня в макросе определить как ВЫХОД.
3. хорошая идея. надо попробовать. а то если файлы .fcc открывать в notepade то половина символов не корректна, что усложняет его редактирование. попробую в следующий раз писать в нотпаде может отображение будет нормальным.
Аватар пользователя
Ник: andrewproffi
Имя: Андрей
(Томск)
Суперконсульт
Суперконсульт
Информация о пользователе
Вернуться наверх

Re: NRF24L01+ пример инициализации

Сообщение Вячеслав (Вячеслав) » 16 июн 2017, 15:12

andrewproffi писал(а):1 - это вывод SS интерфейса SPI, про него нельзя забывать

Если смотреть схему блока MSSP (для PIC), то пин SS обозначен входом. Для аппаратного SPI смогу использовать его по назначению, если МК будет slave. У меня пассивен nRF24, этот пин оставлю для связи в покое. Вот дополнительная картинка с расшифровкой кодов (сверху) записи ТХ-данных (4 байта) и сигналом CSN с вывода RA3.
send_4_byte.jpg

Кажется, можно двигать проект далее. Жаль нет полноценной модели nRF24 в Proteus-e. Приходится осторожничать на поворотах.
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Вячеслав
Имя: Вячеслав
(Саратов)
Суперконсульт
Суперконсульт
Информация о пользователе
Вернуться наверх

Re: NRF24L01+ пример инициализации

Сообщение Taska (Максим) » 16 июн 2017, 21:10

В покое его оставлять нельзя, подтяни к питанию.
Аватар пользователя
Ник: Taska
Имя: Максим
(Кривой Рог)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: NRF24L01+ пример инициализации

Сообщение Вячеслав (Вячеслав) » 17 июн 2017, 05:51

Taska писал(а):подтяни к питанию.

Схема, что привел, только для тестов. Собираюсь передавать данные с двух DS18B20 -это передатчик на р88 (18 pin). Выводы МК в железе задействую так или иначе.
Вопрос к Андрею - более сведущему по космической связи: можно ли ещё упростить Ваш файл xxx.fcc? Преломить его для моего случая. Про передатчик написал, приемник - p876 (28 pin) с дисплеем и кнопкой запроса данных c передатчика.
1. В макросе Defines описаны 4 слота подключения SPI, можно ли оставить один для моего случая?
2. Скорее философский.
Общение МК с nRF24 имеет 2 формата:
- команда,
- команда плюс байты данных.
Само собой они для чтения и записи (из/в) трансивер. И каждый раз во время записи в него команды, nRF24 выдает на линию содержимое рг. STATUS.
Вопрос: можно ли оставить только три макроса общения с nRF24, функционально: запись команды, запись команды и данных, чтение кода из регистра? Моя задача простая.
3. Можно ли для инициализации трансивера использовать #include? Может это проще.
PS. По первому вопросу: в Proteus-e команды проходят.
Аватар пользователя
Ник: Вячеслав
Имя: Вячеслав
(Саратов)
Суперконсульт
Суперконсульт
Информация о пользователе
Вернуться наверх

Re: NRF24L01+ пример инициализации

Сообщение andrewproffi (Андрей) » 17 июн 2017, 07:27

Вячеслав писал(а): можно ли ещё упростить Ваш файл xxx.fcc? Преломить его для моего случая. Про передатчик написал, приемник - p876 (28 pin) с дисплеем и кнопкой запроса данных c передатчика.
1. В макросе Defines описаны 4 слота подключения SPI, можно ли оставить один для моего случая?
2. Скорее философский.
Общение МК с nRF24 имеет 2 формата:
- команда,
- команда плюс байты данных.
Само собой они для чтения и записи (из/в) трансивер. И каждый раз во время записи в него команды, nRF24 выдает на линию содержимое рг. STATUS.
Вопрос: можно ли оставить только три макроса общения с nRF24, функционально: запись команды, запись команды и данных, чтение кода из регистра? Моя задача простая.
3. Можно ли для инициализации трансивера использовать #include? Может это проще.
PS. По первому вопросу: в Proteus-e команды проходят.


упростить можно удалив не нужные макросы, но смысла в этом не вижу. программа в которой модуль работал и в режиме приемника и в режиме передатчика с выводом информации на дисплей заняла 3кб.
1. я их не трогал, думаю можно
2. так у меня в макросе и есть ТОЛЬКО ЭТИ ФУНКЦИИ просто я добавил наиболее часто используемые чтобы не вспоминать номера регистров и не высчитывать число которое нужно записать.
3. я не знаю как это делать
Аватар пользователя
Ник: andrewproffi
Имя: Андрей
(Томск)
Суперконсульт
Суперконсульт
Информация о пользователе
Вернуться наверх

Пред.След.

Вернуться в Готовые решения и примеры

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей