Высказывания и цитаты:

Лучше один раз умереть, чем всю жизнь быть рабом

  • 21Янв
    AVR

    На сегодняшний день во многих устройствах дистанционного управления реализованы функции передачи информации пакетами, работа в двустороннем режиме, контроль приема, обмен информацией между несколькими модулями. В качестве примера, такими представителями являются устройства, работающие по стандартам Wi-Fi  или Bluetooth. Эти протоколы настолько популярны, что не нуждаются в рекламе, а модули, работающие по этим протоколам, обычно есть у каждого смартфона. В качестве отдельного модуля полноценного Wi-Fi можно взять  ESP8266, стоимостью около 2.7 доллара на aliexpress.com, а в качестве Bluetooth можно взять HC-05 стоимостью около 1.2 доллара на том же сайте.

    Но для моих целей не требуется унификация с другими устройствами — кроме моих собственных (к тому же сложными устройствами обычно труднее управлять). Я остановился на очень интересной разработке — модуле nRF24L01+,который работает на частоте 2.4ггц, поддерживает скорость обмена до 2Mbps, имеет возможность работы на прием и на передачу, аппаратную проверку контрольной суммы и стоит около 1 доллара. Его datasheet можете скачать отсюда nRF24L01_Product_Specification_v2_0.pdf (1Мб).

    nRF24L01

    Рекомендую посмотреть следующий форум — проект, с которого я начал читать, а вот ссылка из него на обсуждение nRF24L01 очень полезная информация!!!

    Распиновка и размеры модуля:
    nrf24l01_PCB2SCK (Serial ClocK) — тактирование.
    MOSI (Master Out Slave In) — вход данных.
    MISO (Master In Slave Out) — выход данных.
    CE — Выбор ведомого на шине SPI из нескольких устройств.
    SCN — выбор режима приема/передача.
    IRQ — выход прерывания, для сигнала контроллеру о принятии данных.

    Описание работы: несмотря на то, что модуль питается напряжением от 1.8 до 3.6 вольта, его входа толерантны 5 вольтам — подключаем входа напрямую к микроконтроллеру, обмен информацией между микроконтроллером и модулем идет по интерфейсу spi, что позволяет реализовать аппаратно этот обмен. Но в своей программе обмен реализован программно — мне не нужны большие скорости. Хочу обратить внимание, что дальность передатчика на скорости 1 Mbps больше, чем на скорости 2Mbps. Мне удалось получить уверенную связь на расстоянии в сто метров через три бетонные стены при максимальной мощности передатчика (составляет 0 dB).

    В приемнике и передатчике надо выбрать адрес (3-5 байт), настраивается один раз. Выбираем канал (от 0 до 125), увеличение канала на 1 увеличивает смещение частоты на 1Мгц в большую сторону. Длина посылки имеет размер от 1 до 32 байтов. Далее идет контрольная сумма 1 или 2 байта. Обо всех настройках я не буду писать — их вы можете посмотреть в моей программе, а за основу была взята программа с форума (ссылка выше) на Atmel Studio. Мне нравится среда разработки CodeVision, поэтому оптимизировал ее под эту среду и после написал свой кусок кода. Я использовал CodeVision2.05 версии, так как моя предыдущая версия в Windows 7 не работала.

    Итак, делаем две проверочные платы, платы будут одинаковые, как для приемника так и для передатчика (так удобнее).

    123

    Рисунок печатных плат в SprintLayout и исходные коды приемника и передатчика находятся в архиве  2_buttons.rar. При компиляции проектов будут появляться Warning: функция есть, но нигде не используется — так и должно быть, потому что функции для передачи одни, а для приема другие.

    Алгоритм работы программы — используется односторонняя связь, при нажатии кнопки на передатчике должен загореться светодиод на приемнике, при отпускании кнопки — светодиод гаснет. Опрос кнопок происходит через определенные интервалы времени и выдается посылка, поэтому при потерях связи светодиод может остаться гореть дальше, если горел до потери связи.

    Чтобы это исправить, надо ввести проверку, была ли посылка в течении, например, 0.3 секунды, если нет — погасить светодиод. Это реализовано в следующем архиве (программа написана, но еще не протестирована, выложу позже). Кроме того в следующем архиве реализовано пропорциональное управление.

    В настоящее время статья не дописана, сейчас я тестирую архив с пропорциональным управлением

     

7 комментариев

WP_Cloudy
  • santa пишет:

    Здравствуйте! Будет ли продолжение темы с пропорциональным управлением? Очень интересует

  • вадим пишет:

    ну очень тема хороша вот купил собрал правда не понял

  • автор пишет:

    Спасибо за комментарии). Так как эта тема заинтересовала, я хочу поделиться архивом с исходными кодами и печатными платами машинки на дистанционном управлении от 4 кнопок. При нажатии на какую-нибудь из кнопок, происходит включение двух сервомоторов: вперед, назад, разворот влево, разворот вправо. Вместо светодиодов используйте электрическую схему подключения сервомоторов из моей темы на сайте Робот с ультразвуковым датчиком расстояния Hc-Sr04.

    Ссылка на архив машинка на дистанционном управлении от 4 кнопок
    Программа с использованием пропорционального управления написана давно, но к сожалению, пропало желание его проверять… поэтому не хочу выкладывать сырой код.

  • Tika пишет:

    Здравствуйте — нет возможности соединить передатчика и приемника в 1 целое как на схеме подсоединения — работа блока возможности на прием и передачу в 1 блоке. Спасибо.

  • Tika пишет:

    По возможности на 3 команды. Спасибо за терпение.

  • rick-braun пишет:

    Подскажите пожалуйста, как организовать определение расстояния между двумя такими приемо-передатчиками? Какова будет скорость работы?

  • Дмитрий пишет:

    Простите, в шапке написано что используется Nrf24L01+, а ссылка на даташит Nrf24L01 без полюса. Это разные блоки в плане инициализации и не совместимости адресации нескольких регистров. И самое интересное — под какие трансмитеры Ваше радиоуправление?

Ваш ответ

Внимание: Модератор оставляет за собой право редактировать или удалять комментарии.

Подтвердите, что Вы не бот — выберите человечка с поднятой рукой: