NRF24L01 + no comunicación

0

Tengo dos tipos diferentes de módulos NRF24L01 + y estoy teniendo dificultades con uno de los modelos. Vea las imágenes a continuación para ver cómo las tengo conectadas. Puedo enviar / recibir mensajes usando el Modelo B pero no puedo enviar / recibir paquetes usando el Modelo A. Cuando miro en línea, sugirieron usar un condensador de 4.7μf entre la alimentación y la tierra, pero esto no ayudó. . Al principio pensé que era un problema de energía, pero también intenté conectarlos a una fuente de alimentación de 3.3v, pero esto no hizo nada. Cuando conecto el módulo, solo obtengo signos de interrogación o líneas vacías a través del monitor serie. También he adjuntado una copia de mi código. No creo que sea un problema con el cableado porque funciona con el Modelo B pero no con el Modelo A. Si alguien ha trabajado con este modelo específico anteriormente y tiene un ejemplo de funcionamiento, se lo agradecería mucho.

Modelo A)

ModeloB)

Diagrama de cableado

Sender

#include<SPI.h>#include"RF24.h"

RF24 myRadio (7, 8);
byte addresses[][6] = {"0"};

struct package
{
  int id=1;
  float temperature = 18.3;
  char  text[100] = "Text to be transmitted";
};


typedef struct package Package;
Package data;


void setup()
{
  Serial.begin(115200);
  delay(1000);
  myRadio.begin();  
  myRadio.setChannel(115); 
  myRadio.setPALevel(RF24_PA_MAX);
  myRadio.setDataRate( RF24_250KBPS ) ; 
  myRadio.openWritingPipe( addresses[0]);
  delay(1000);
}

void loop()
{
  myRadio.write(&data, sizeof(data)); 

  Serial.print("\nPackage:");
  Serial.print(data.id);
  Serial.print("\n");
  Serial.println(data.temperature);
  Serial.println(data.text);
  data.id = data.id + 1;
  data.temperature = data.temperature+0.1;
  delay(1000);

}

Receptor

#include <SPI.h>  
#include "RF24.h" 

RF24 myRadio (7, 8); 
struct package
{
  int id=0;
  float temperature = 0.0;
  char  text[100] ="empty";
};

byte addresses[][6] = {"0"}; 



typedef struct package Package;
Package data;

void setup() 
{
  Serial.begin(115200);
  delay(1000);
  pinMode(3, OUTPUT);

  myRadio.begin(); 
  myRadio.setChannel(115); 
  myRadio.setPALevel(RF24_PA_MAX);
  myRadio.setDataRate( RF24_250KBPS ) ; 
  myRadio.openReadingPipe(1, addresses[0]);
  myRadio.startListening();

}


void loop()  
{

  if ( myRadio.available()) 
  {
    Serial.print("working");
    while (myRadio.available())
    {
      myRadio.read( &data, sizeof(data) );
    }
    Serial.print("\nPackage:");
    Serial.print(data.id);
    Serial.print("\n");
    Serial.println(data.temperature);
    Serial.println(data.text);
    makeBlink();
  }

}

void makeBlink(){
  digitalWrite(3, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(3, LOW);    // turn the LED off by making the voltage LOW
  delay(1000); 
}
    
pregunta Jim

1 respuesta

1

El LDO de 3.3 V en el Nano está en el FT232RL USB / UART y tiene una capacidad nominal de solo 50 mA de corriente externa máxima. Si se utiliza más corriente de la que puede suministrar, se corromperán todos los datos en el canal USB, por lo que no me sorprende que obtenga datos dañados cuando conecte las placas del módulo de alimentación.

Los módulos NRF24L01 + que llama modelo A tienen un amplificador de potencia de RF separado en ellos que dibuja picos de 250-350 mA y NO funcionarán conectados a un Arduino Nano como se muestra. (Tengo ambos tipos de módulos y no veo diferencias operativas entre ellos aparte de la fuente de alimentación externa para el módulo más grande)

Estos módulos de alta potencia deben alimentarse por separado con su propio regulador de 3.3 V. Solo puedo asumir que conectaste los módulos incorrectamente a una fuente externa.

Hay disponibles pequeños reguladores basados en 1117-3.3 (800 mA), y puede leer aquí por ayuda en esos.

    
respondido por el Jack Creasey

Lea otras preguntas en las etiquetas