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

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

  1. Oleg_7

    Oleg_7 Гик

    Алекс, очень интересная тема про softSPI , подскажите по подробнее, как все это дело прописать и подключить?!! ( для модуля nrf24) HELP !!!! )
     
  2. Oleg_7

    Oleg_7 Гик

    Подскажи пожалуйста, как перенести SD на software SPI. ??? ничего не получается....((( Буду презнателен за программный код! )
     
  3. AlexVS

    AlexVS Гик

    Что конкретно вам не понятно? Библиотеки DigitalIO и RF24 скачали, подключили?
    Далее в файле RF24_config.h нужно раскомментировать строчку в начале #define SOFTSPI, а так же найти комментария //change these pins to your liking// и указать на каких пинах организуете softSPI, у меня например
    Код (C++):

    const uint8_t SPI_MODE = 0;
    MISO_PIN = 13;
    MOSI_PIN = 10;
    SCK_PIN = 12;
    Не забываем закомментить #define SOFTSPI, если решили вернуть nRF24 на аппаратный SPI (например в другом проекте).
    Ну и последнее, в коде своего проекта вставляем строку инициализации
    Код (C++):
    SoftSPI<SOFT_SPI_MISO_PIN, SOFT_SPI_MOSI_PIN, SOFT_SPI_SCK_PIN, SPI_MODE> spi;
    Вобщем то все!
    Ссылки на библиотеки:
    https://github.com/TMRh20/RF24
    https://github.com/greiman/DigitalIO
     
    FigaroVL нравится это.
  4. Oleg_7

    Oleg_7 Гик

    Большое спасибо за ответ, я все так и делал, но при компиляции выдает ошибку, что все переменные типа SOFT_SPI_MISO_PIN, SOFT_SPI_MOSI_PIN.. не определены !! У меня arduino DUE......
     
  5. AlexVS

    AlexVS Гик

    Открываем файл RF24_config.h и ищем там определение SOFT_SPI_MISO_PIN, SOFT_SPI_MOSI_PIN. Код в библиотеке будет выглядеть примерно так (в зависимости от версии)
    Код (C++):
    #if defined (ARDUINO) && !defined (__arm__) && !defined (__ARDUINO_X86__)
          #if defined SPI_UART
            #include <SPI_UART.h>
            #define _SPI uspi
          #elif defined SOFTSPI
          // change these pins to your liking
          //
          const uint8_t SOFT_SPI_MISO_PIN = 16;
          const uint8_t SOFT_SPI_MOSI_PIN = 15;
          const uint8_t SOFT_SPI_SCK_PIN = 14;
          const uint8_t SPI_MODE = 0;
          #define _SPI spi
       
          #else    
            #include <SPI.h>
            #define _SPI SPI
          #endif
    Просто у меня в скетче, в качестве коммента используется сокращенное обозначение
    Код (C++):
    MISO_PIN = 13;
    MOSI_PIN = 10;
    SCK_PIN = 12;
    Еще раз напомню: В RF24_config.h необходимо раскомментить строчку
    Код (C++):
     #define SOFTSPI
     
  6. DimiDr0l

    DimiDr0l Нуб

    помогите примером для приёмо-передачи данных между двумя nrf.
    пример чата был бы кстати))
     
  7. Oleg_7

    Oleg_7 Гик

    Да, все именно так((
    вот код скетча:

    #include <SPI.h>
    #include <DigitalIO.h>
    #include <nRF24L01.h>
    #include <RF24.h>

    RF24 radio(53, 52); // Arduino Due
    SoftSPI<SOFT_SPI_MISO_PIN ,SOFT_SPI_MOSI_PIN, SOFT_SPI_SCK_PIN, SPI_MODE> spi;

    +прикладываю RF24_config.h, та все как Вы сказали.....
    и вот ошибки:

    input_radio:8: error: 'SOFT_SPI_MISO_PIN' was not declared in this scope
    input_radio:8: error: 'SOFT_SPI_MOSI_PIN' was not declared in this scope
    input_radio:8: error: 'SOFT_SPI_SCK_PIN' was not declared in this scope

    Не пойму, в чем не так?..... может RF24_config.h, не понимает/не определяет Arduino Due ??...
     

    Вложения:

    • RF24_config.h
      Размер файла:
      4,3 КБ
      Просмотров:
      919
  8. AlexVS

    AlexVS Гик

    Либо у вас имеется 2 набора библиотек и вы внесли изменения в ту библиотеку, которая не используется. При компиляции IDE выводит лог, там можно найти такие строки
    Код (C++):

    Используем библиотеку DigitalIO версии 2015.11.25 из папки: D:\YandexDisk\Arduino\mStation\Arduino\libraries\DigitalIO
    Используем библиотеку RF24 в папке: D:\YandexDisk\Arduino\mStation\Arduino\libraries\RF24 (legacy)
    Используем библиотеку RF24Network в папке: D:\YandexDisk\Arduino\mStation\Arduino\libraries\RF24Network (legacy)
    Используем библиотеку EEPROM версии 2.0 из папки: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\EEPROM
    Используем библиотеку Time версии 1.4 из папки: D:\YandexDisk\Arduino\mStation\Arduino\libraries\Time
    Используем библиотеку SPI версии 1.0 из папки: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI
    Используем библиотеку Ethernet версии 1.0.5 из папки: D:\YandexDisk\Arduino\mStation\Arduino\libraries\Ethernet
    ............................
     
    Либо все дело в DUE, к сожалению у меня его нет, поэтому я не могу попробовать.
     
  9. AlexVS

    AlexVS Гик

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

    Oleg_7 Гик

    Либа у меня одна, я проверял..( Значит дело в Due...

    Вот что интересно: я добавил объявление всех этих пино в файл еще и + после строки
    // Define _BV for non-Arduino platforms and for Arduino DUE
    const uint8_t SOFT_SPI_MISO_PIN = 16;
    const uint8_t SOFT_SPI_MOSI_PIN = 15;
    const uint8_t SOFT_SPI_SCK_PIN = 14;
    const uint8_t SPI_MODE = 0;
    и ошибки компиляции пропали, но радио все равно молчит на новых пинах, а продолжает работать на стандартной шине SPI. как так ? может что еще надо добавлять в скетч кроме строки SoftSPI<SOFT_SPI_MISO_PIN ,SOFT_SPI_MOSI_PIN, SOFT_SPI_SCK_PIN, SPI_MODE> spi; ??
     
  11. Oleg_7

    Oleg_7 Гик

    вот файл RF24_config.h
     

    Вложения:

    • RF24_config.h
      Размер файла:
      4,4 КБ
      Просмотров:
      497
  12. AlexVS

    AlexVS Гик

    Нет, больше никаких дополнительных строк не нужно,
    Там есть еще одно ключевое определение: #define _SPI spi
    Как раз spi стоит в конце строки инициализации.
     
  13. Oleg_7

    Oleg_7 Гик

    тогда не понятно..... А вы можете мне прислать Ваш файл RF24_config.h , вдруг заработает?! )
     
  14. AlexVS

    AlexVS Гик

    Вы перенесли определение #define _SPI spi туда же куда и определение пинов?
     

    Вложения:

    • RF24_config.h
      Размер файла:
      4,9 КБ
      Просмотров:
      462
  15. Oleg_7

    Oleg_7 Гик

    Попробовал Ваш файл - все равно ругается, говорит

    input_radio:18: error: 'SOFT_SPI_MISO_PIN' was not declared in this scope
    input_radio:18: error: 'SOFT_SPI_MOSI_PIN' was not declared in this scope
    input_radio:18: error: 'SOFT_SPI_SCK_PIN' was not declared in this scope

    RF24/RF24.h:57:11: error: 'SOFT_SPI_MISO_PIN' was not declared in this scope
    SoftSPI<SOFT_SPI_MISO_PIN, SOFT_SPI_MOSI_PIN, SOFT_SPI_SCK_PIN, SPI_MODE> spi;

    пробовал на НАНО - хотя бы компилируется без ошибок, на Дуе -нет. может другая либа нужна для due....?
     
  16. AlexVS

    AlexVS Гик

    Скорее всего - Да.
     
  17. Kremnev8

    Kremnev8 Нуб

    а как поступать если после запуска скетча (того что в самом начале) я получил переодическую зашумленность всех каналов ?
    bandicam 2016-02-25 18-45-35-638.jpg
     
  18. brother

    brother Нерд

    Приветствую всех!
    Подключил сие "чудо" к андурино уно. Конденцатор итп... все вроде сделал по рекомендациям.
    Тестовый скетч заработал без нареканий.
    Что хочу сделать: у меня есть пульт управления от китайского квадрокоптера, он работатет на частоте 2.4Ghz.
    Как можно найти его "вещание" и узнать, какие команды он шлет при нажатии различных кнопок и смещении джойстиков?
    Хочу управлять с этого пульта своим роботом сделаным на андурино...
     
  19. BGreen

    BGreen Нерд

    Есть крутой проект мульти-протокольного управления. https://github.com/goebish/nrf24_multipro
     
  20. brother

    brother Нерд

    Вот именно - крутой!
    Разбирать столько чужого кода?
    Может проще написать минимум своего?