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.
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);
}