nRF24L01+ : побеждаем модуль.

Тема в разделе "Проводная и беспроводная связь", создана пользователем ИгорьК, 19 июн 2014.

  1. parovoZZ

    parovoZZ Гуру

    И ещё не понятен момент - если на SPI больше устройств не планируется (а по схеме это очевидно), то CSN можно смело прижимать к земле. А вот ногой CE я бы всёж управлял с МК. Иначе сразу после отправки пакета nrf уйдёт в режим StandByII вместо StandByI. А StandByII весьма жручий по питанию.
     
  2. Noobeum

    Noobeum Нуб

    Два пина планировались на I2C сенсор, еще один на оптический энкодер (на прерываниях).

    Слушать с компьютера? Мне почему-то кажется что это и пинов массу займет и толку будет немного...

    Есть еще двухпиновая схема подключения SPI, но это есть разновидность трехпиновой с полудуплексом на MI-MO. Из такого двухпинового полудуплекса можно надо полагать сделать трехпиновый с CE.

    С другой стороны разочаровываюсь в 85 проце. Ну ладно там 13 проц, он дохлый как червяк. Но 85 вроде уже резвиться должен, а выходит из коробки там ничерта не фурычит. Попробую решить задачу на нано, а там поглядим...


    п.с. а что не так с конденсаторной зарядкой то? повесить CE на отдельный пин может и сподручнее, да лишних ног нет.
     
  3. parovoZZ

    parovoZZ Гуру

    А зачем она? Пин CSN имеет смысл использовать тогда, когда нам нужны ноги MOSI и MISO, т.к. при CSN = 1 nrf свои ноги MISO и MOSI переводит в Z состояние (про SCK не знаю) и мы их можем использовать как захочется. Если это не нужно, то CSN можно повесить на землю.
    Ага. Через мост SPI -> UART. Код я где-то выкладывал для 328 камня.
     
  4. Noobeum

    Noobeum Нуб

    А какие тогда есть еще трехпиновые подключения? Повесить CSN на землю и контролировать CE ? Сомневаюсь что RF24-либа заточена на такой вариант (вариант с конденсатором она точно поддерживает).
     
  5. parovoZZ

    parovoZZ Гуру

    Каким образом? SCK - это тактирующий сигнал.
    А сколько необходимо ещё свободных ног?
     
  6. Noobeum

    Noobeum Нуб

    Я видел два варианта экономного подключения:
    1) трехпиновый. этот я притом пробовал и он работал на быстроразводной плате.
    суть в том что SCK, MISO, MOSI подключаются на МК, а CE, CSN вешают на обвязку (в данном случае на зарядку-разрядку конденсатора)

    2) двухпиновый. SCK и MIMO полудуплекс вешают на две ноги МК, а CE, CSN на такой же обвязке как и в случае с трехпиновым вариантом



    В моем случае мне нужно еще три ноги: две на I2C и одна на цифровое прерывание от оптического энкодера (оптопары). таким образом изначально планировалось отдать на rf24 не более трех ног.
    Точнее даже так: я как увидел трехногое подключение так загорелся идеей сделать это на аттини85. но пока подзабил, пробую на нано сделать...
     
  7. parovoZZ

    parovoZZ Гуру

    MISO и MOSI превращаешь в SCL и SDA в перерывах между общениями с NRF
    а с энкодера точно одна нога? Собственно, последняя нога у МК и осталась.
    я понимаю с attinyX5 переехать на attinyX4(1) или attunyX313, но сразу на 328...
     
  8. Noobeum

    Noobeum Нуб

    У меня еще есть три наны, остальные сгорели в этом месяце :)

    С энкодера да, одна нога. Оптический энкодер оптопара. Один излучающий ИК-диод и один приемник. Если луч замыкается то будет грубо говоря 0.7В при тех резисторах что я выставляю обычно, а если размыкается то 4.2 (или наоборот, но это не суть важно). Этого достаточно чтобы ловить прерывания на МК.
    Выпаял оптопару с такого (см ниже), добавил свою обвязку в минимуме, работает. По хорошему на этой платке еще компаратор стоит, но мне как то и без него неплохо. Может с компаратором оптопара дольше прослужит, не могу сказать.
    [​IMG]


    А насчет использовать miso-mosi как i2C-soft идея конечно хорошая.
    Я так понимаю что при этом не потребуется перенастраивать заново рф24, главное ему не подавать на CE и SCK ничего...
    Тогда выходит что для связи рф24-аттини85 нужно 4 пина, а SCK повесить куда - на землю ?
     
  9. parovoZZ

    parovoZZ Гуру

    Если scn у нрф на плюсе, он не реагирует на сигналы SPI и ноги висят в воздухе (про sck не знаю). А с CE надо даташит поглядеть - во сне ему вроде тоже пофиг (собственно это и доказывает то, что CE можно притянуть к плюсу). В качестве таксирующего для I2C можно использовать все тот же SCK.
     
  10. parovoZZ

    parovoZZ Гуру

    А направление как определять?
     
  11. Noobeum

    Noobeum Нуб

    Направление не требуется, только энкодер.


    Запустил вчера на нано, В общем то запустилось сразу и наверняка, даже как то скучно стало.
    Что интересно: нана тратит примерно 2мс на отправку трех пакетов по 32 байта (подтверждение отключено, ACK=0)
    мега принимает. при этом счетчик принятых пакетов примерно в 45-50 раз медленнее чем счетчик отправленных пакетов. При том что мега выводит на экран только каждый сотый принятый пакет (то есть консоль не самый медленный элемент).

    Где-то вычитал что лучше делать задержку в 20мс после отправки (чтобы рф24 не перегрелась)... Впрочем, надеюсь это не понадобится. Сейчас буду обвешивать сенсорами, а пока данных наберется на полный пакет, то как раз 20мс и должны пройти...
     
  12. parovoZZ

    parovoZZ Гуру

    если так, то надо раза три хотя бы отправлять один и тот же пакет.
    либо шумно, либо косяк в коде. какой канал?
    надо читать не где-то, а в даташите. А там написано, что передача должна длиться не более 4 ms, а далее передышка длительностью 130 мкс для калибровки RF генератора
    при излучаемой мощности в 1 мВт (а у китайских с алика и того меньше) греться там попросту нечему.
     
  13. Noobeum

    Noobeum Нуб

    У меня такая задумка что принимать не обязательно все пакеты без исключений. По крайней мере пока. Потом будет видно что да как.

    Нашел косяк кажется, в общем удается отправить 170 пакетов в секунду (с учетом считываний и калькуляции и фильтрования данных). На передачу радио уходит 1-2мс, на генерацию 12 значений с сенсоров 4-6мс. Думаю нормально...

    Переделал вывод в консоль на приемнике раз в секунду...
    Поставил на всякий случай задержку в 1мс после работы радио.

    Что ж. Хороши что хотя бы этот вопрос решился. Буду дальше работать вглубь =)
    Хочу сейчас подружить ethernet-шилд с rf24 yа одной ардуине, гнать данные в сеть. Можно конечно обзавестись переходником сразу на комп, но мне проще будет по сети ловить данные на компьютере для обработки. Все равно эта обработка пока что временный этап...
     
  14. parovoZZ

    parovoZZ Гуру

    А никто не покупал новые платки под кодовым названием E01-ML01? Они почему-то дороже старых (180-250 руб), но зато есть с гнездом под антенну. Ну всякие там high quality, murata, sdk и прочие громкие названия))) И цоколевка у SMD варианта немного другая. В местном лабазе старая платка лежит за 120 руб. Стоит переплатить и утянуть новую с алика? Я хочу сразу 10, но так, чтобы не абасраца.
     
  15. если то производства CDSENET, то брал у них CC1101, сделано качественно, переплатить смысл есть.
     
  16. parovoZZ

    parovoZZ Гуру

    Ну да, оно. Ещё какой-то ебайт торгует. По ходу одна контора, только двери разные.
     
  17. Oleg_7

    Oleg_7 Гик

    У меня на IRQ постоянно высокий уровень, соответственно не могу использовать прерывание,... ((( хотя приемник работает ок. В чем может быть дело ?
     
  18. parovoZZ

    parovoZZ Гуру

    Надо разрешить прерывания. Их там всего три - получен пакет, пакет доставлен и пакет не доставлен. Какие нужны, такие и разрешаем.
     
  19. Oleg_7

    Oleg_7 Гик

    Код (C++):
    attachInterrupt(1, check_radio, CHANGE);
    прописываю в setap или что то еще надо добавить?....
     
  20. Oleg_7

    Oleg_7 Гик

    проверил на приемнике: прерывание срабатывает, но один раз. а потом все..... не работает. остальные входящие прерывание не реагирует... странно