
Давно уже обзавелся я этими модулями, да все никак руки до них не доходили попробовать. В общих чертах, это радиомодули, работающие на частоте 2.4 ГГц с подключением к микроконтроллеру по SPI-интерфейсу. Для работы требуется напряжение в диапазоне от 1,8 до 3,6 вольт, входы/выходы толерантны к 5 вольтам, поэтому при подключении к пяти вольтовым устройствам дополнительные согласующие цепи ставить нет необходимости.
Для подключения радиомодуля выведена гребенка контактов, распиновка приведена ниже:
Так как на плате модуля предусмотрен разъем для подключения, для удобства собрал небольшую платку. На этой отладочной плате стоит микроконтроллер Atmega8A с обвязкой из внешнего кварца, кнопки сброса и пары светодиодов, ответный разъем под модуль и разъем для подключения программатора.
Схема всего этого дела выглядит следующим образом:
Для подключения радиомодуля использованы ножки аппаратного SPI микроконтроллера, поэтому разъемы подключения модуля и подключения программатор дублируют друг друга. Это сделано, чтобы удобней было прошивать микроконтроллер на отладночной платке, например, если использовать программатор который подает на схему 5 вольт, а для NRF24L01 это слишком большое напряжение. Чтобы перепрошить управляющий микроконтроллер, достаточно выдернуть трансивер с платы, перепрошить и всунуть его обратно – без лишней возни с перепайкой.
Код для работы с модулем целиком взят с примера AN #151 на официальном сайте mcselec.com Я только разделил программную часть приемника от программной части передатчика.
Код приемника залил в микроконтроллер на тестовой платке. Плату подключил к компьютеру через переходник USB-UART на FT232RL, а питание (3,3 вольта) у меня подается через программатор USBasp
Горит зеленый светодиод (D1) – приемник готов к работе. При приеме данных загорается красный светодиод (D2)
Вторую схему – для передатчика – собрал на макетке по той же схеме. Разъем на трансивере оказался не подходящим для того чтобы вставлять плату в макетку и поэтому соединил все проводами.
Скорость для соединения приемника с терминалом выставляется 19200 бод. При старте приемник напечатает “RX_device” а дальше – то, что получит с передатчика. В примере передаются постоянные данные “AA+BB+CC+11+#посылки”
На скрине ниже видно, что номера посылки прыгают, это из-за того что я включал/выключал передатчик пока бродил по двору (максимальное удаление метров 30-40). А видимо проверка CRC в приемнике не пропускала некоторые посылки от передатчика из-за ошибок передачи.
На мое удивление, когда искал примеры использования этих трансиверов с Bascom-AVR, ничего кроме вышеозвученного апнота #151 не находилось. Хотя в среде ардуинщиков эти трансиверы весьма распространены и под них написано уже куча кода и библиотек. Надо исправлять ситуацию 🙂 Особенно радует цена на них – мне мои достались по 5$ за пару http://www.ebay.com/).
Сначала у меня возникли проблемы с зависанием модуля при передаче данных, но спасибо товарищу Valera18 который протестировал эти модули и указал на существующие ошибки в коде. Теперь работает как надо!
Ниже доступны для скачивания материалы статьи:
печатная плата под модуль nRF24L01 в формате DipTrace
документация на чип трансивера
>>>использование радиомодулей NRF24L01
Оптимизированный код от пользователя Valera18
В коде удаленны не используемые (действия и регистры).
Данная прошивка передаёт данные “AA+BB+CC+11+№посылки”.
Внимание!!! прошивка только для “ПЕРЕДАТЧИКА” Attiny2313, специально оптимизирована, занимает 37% в памяти.http://avrproject.ru/nrf24l01/peredatchik_dlja_attiny2313.bas
Внимание!!! прошивка только для “ПЕРЕДАТЧИКА” Atmega8, специально оптимизирована, занимает 9% в памяти.http://avrproject.ru/nrf24l01/peredatchik_dlja_atmega8.bas
Внимание!!! прошивка только для “ПРИЁМНИКА” Atmega8, специально оптимизирована, занимает 11% в памяти.http://avrproject.ru/nrf24l01/priemnik_dlja_atmega8.bas
Теперь для проектов свободного места в памяти “много”.
Последние статьи
- Лучшая практика проектирования при размещении компонентов печатной платы
- Android 6.0 на lancer X
- Простой усилитель мощности класса АВ своими руками.
- Двухтактный ультралинейный ламповый УНЧ на EL84 (6П14П).
- Люксметр на ATmega8 и цифровом датчике BH1750
- Контроллер для светодиодной ленты с ИК управлением
- Самодельный LED светильник на основе ИК датчика HC-SR501
- Простой усилитель низкой частоты на TDA7377 и NE5532
- Простейший звонок с двумя мелодиями
- LED Cube 8x8x8 на Arduino с RTC