Wemos d1 mini с nrf24l01

Тема в разделе "ESP8266, ESP32", создана пользователем Webring, 19 ноя 2019.

Метки:
  1. Webring

    Webring Нуб

    Здравствуйте! Вчера потребовалось соединить nrf c платой wemos. Столкнулся со следующей проблемой
    при загрузке кода, который отлично работает на других платах. Ругается на "fdevopen"
    Использовал этот код:
    Код (C++):
    #include <SPI.h>
    #include "nRF24L01.h"
    #include "RF24.h"

    RF24 radio(9,10); // инициализировать модуль на пинах 9 и 10 Для Уно
    //RF24 radio(9,53);// Для Меги

    const uint8_t num_channels = 128;
    uint8_t values[num_channels];
    void setup(void)
    {
      Serial.begin(9600);
      printf_begin();
      radio.begin();
      radio.setAutoAck(false);
      radio.startListening();

      radio.printDetails();  // Вот эта строка напечатает нам что-то, если все правильно соединили.
      delay(5000);              // И посмотрим на это пять секунд.

      radio.stopListening();
      int i = 0;    // А это напечатает нам заголовки всех 127 каналов
      while ( i < num_channels )  {
        printf("%x",i>>4);
        ++i;
      }
      printf("\n\r");
      i = 0;
      while ( i < num_channels ) {
        printf("%x",i&0xf);
        ++i;
      }
      printf("\n\r");
    }
    const int num_reps = 100;

    void loop(void)
    {
      memset(values,0,sizeof(values));
      int rep_counter = num_reps;
      while (rep_counter--) {
        int i = num_channels;
        while (i--) {
          radio.setChannel(i);
          radio.startListening();
          delayMicroseconds(128);
          radio.stopListening();
          if ( radio.testCarrier() )
            ++values[i];
        }
      }
      int i = 0;
      while ( i < num_channels ) {
        printf("%x",min(0xf,values[i]&0xf));
        ++i;
      }
      printf("\n\r");
    }
    int serial_putc( char c, FILE * ) {
      Serial.write( c );
      return c;
    }

    void printf_begin(void) {
      fdevopen( &serial_putc, 0 );
    }
    Ошибка:
    Код (C++):
    nrf_listen_air:65:29: error: 'fdevopen' was not declared in this scope

    exit status 1
    'fdevopen' was not declared in this scope
     
    Схема подключения:
    [​IMG]
    [​IMG]

    Ссылка на информацию о wemos d1 mini
     
  2. Neon_1

    Neon_1 Нерд

    Вы не те пины инициализируетe, cs и csn

    Код для уно или Меги, для wemos другие пины
     
  3. parovoZZ

    parovoZZ Гуру

    не надо сказок. fdevopen - это что такое?
     
  4. Webring

    Webring Нуб

    Пины менял.
     
  5. Webring

    Webring Нуб

    код проверял на UNO, Mega, Nano и всё работает. Что это сказать не могу, код не мой. listen_air от alexGyver. Вот репозиторий из которого брал.
     
  6. DetSimen

    DetSimen Guest

    Дак надо у него на форуме и спрашивать.
     
  7. parovoZZ

    parovoZZ Гуру

    fdevopen описана в авээровской stdio.h. Логично предположить, что ESP ни AVR ни разу, поэтому надо писать свою реализацию, искать в заголовках к ESP или кем-то написанную.
     
  8. Neon_1

    Neon_1 Нерд

    принимал данные на wemos с nrf24 без каких либо проблем, но не передавал
     
  9. Webring

    Webring Нуб

    Отправлять пробовал?
     
  10. Neon_1

    Neon_1 Нерд

    нет не пробовал