Go Down

Topic: No consigo que se comuniquen mis nRF24l01 (Read 460 times) previous topic - next topic

manuelo94

Aug 14, 2019, 08:49 pm Last Edit: Aug 15, 2019, 01:29 pm by manuelo94
Hola chicos,

Quería saber si alguien me podría ayudar con el modulo nrf24l01, dado que no consigo que se conecten 2 módulos para establecer una conexión simple entre ellos y ya llevo 2 semanas y estoy muy frustrado.

Mis materiales son:

2 arduino nano.
2 nRF24L01 +PA +LNA.
1 potenciómetro.
cables dupont.

He hecho las conexiones según esta página, que creo que es la más básica

https://naylampmechatronics.com/blog/16_Tutorial-básico-NRF24L01-con-Arduino.html

Y lo único que consigo es que en el nrf24l01 receptor obtenga el mensaje:
"No hay datos de radio disponibles"

He probado algunas cosas ya, como:

-cablear directamente entre el nano y el nrf24l01
-poner un condensador entre vcc y gnd
-cambiar los pines ce y csn(que cuando desconecto en plena comunicación, aparecen todos los valores en 0)

Espero y deseo que alguien me pueda ayudar.

surbyte

#1
Aug 14, 2019, 10:25 pm Last Edit: Aug 15, 2019, 04:11 am by surbyte
Me enviaste un privado, te respondi, lee las normas del foro y publica de acuerdo a ellas.

Dos errores:

1. El título no puedes escribirse con mayúsculas asi que EDITALO

2. Los enlaces van con etiquetas, nada va como texto plano de modo que EDITALO también.


No dices que nRF24 usas con o sin antena. No es lo mismo alimentarlo con los 3.3V del arduino al que no tiene antena o no al que SI la tiene.
En ambos casos debes poner un capacitor electrolítico de 10uF 16V (la tensión mayor a 3.3V funciona cualquiera).
Es muy importante ese capacitor.

Si todo lo demas esta bien, debería funcionar.

Tienes este hilo (Proyecto Barco Velero RadioControl (Nano+NRF24)) en Proyectos que puede ser de ayuda.

Aguardo tus comentarios y espero tu EDICION de las dos faltas.

manuelo94

Gracias por la ayuda con este post, hice lo del condensador de 10uf pero no funciona.

manuelo94

#3
Aug 15, 2019, 01:48 pm Last Edit: Aug 15, 2019, 07:27 pm by surbyte Reason: Visualización de imágen
Esto es lo que me sale en el receptor cuando abro el monitor serie.


manuelo94

#4
Aug 15, 2019, 01:57 pm Last Edit: Aug 15, 2019, 08:00 pm by surbyte Reason: Visualización de imágen
Esto es lo que me sale en el emisor cuando abro el monitor serie.



surbyte

#5
Aug 15, 2019, 02:24 pm Last Edit: Aug 15, 2019, 03:17 pm by surbyte
Bueno mi amigo lee las normas y observa como se insertan las imágenes adjuntas para que puedan visualizarse.

Ahora una pregunta de tu problema, lo estas armando en un protoboard o dos?

Que mal lector soy a veces!! no leí esto debidamente.

2 nRF24L01 +PA +LNA.

Supongo que tienes alimentación con un regulador AMS1117 que le provee los 3.3V no?
Porque el tutorial habla del módulo nRF24 simple, que si puedes conectar a los 3.3V pero el que tiene antena consume 150mA y el Arduino no puede entregarlos.
Asi que por ahi esta tu problema.

manuelo94

#6
Aug 15, 2019, 06:33 pm Last Edit: Aug 15, 2019, 07:01 pm by manuelo94
Pues tengo este regulador de tensión,


Y me siguen apareciendo los mismos resultados en el receptor cuando lo conecto al regulador de voltaje:

"No hay datos de radio disponibles"

y cuando desconecto la alimentación, pone:

"Dato0= 0.00 V, Dato1= 0.00 ms, Dato2= 0.00"

pero en el emisor habré tocado algo, porque ahora si me aparece bien

"Datos enviados: 0.42 , 1006.00 , 3.14".

¿que crees que puede ser?

tauro0221

#7
Aug 15, 2019, 08:00 pm Last Edit: Aug 15, 2019, 08:02 pm by tauro0221
Ho.
Adjunto de un sketch que yo consegui para para ver si los nrf2401 estan bien conectados y ambos  funciona bien, Este programa es uno que seguro te va decir si los nrf2401 trabajan.

Copia el rx a uno de los arduino y tx al otro arduino y correlos y reporta el resultado.Recuerda que tienes que cambiar los pinesde tx y rx.

transmitter
Code: [Select]
[code]
// Load in the libraries
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

// Set the CE & CSN pins
#define CE_PIN   9
#define CSN_PIN 10

// This is the address used to send/receive
const byte rxAddr[6] = "00001";

// Create a Radio
RF24 radio(CE_PIN, CSN_PIN);

void setup() {
 
  // Start up the Serial connection
  while (!Serial);
  Serial.begin(9600);
 
  // Start the Radio!
  radio.begin();
 
  // Power setting. Due to likelihood of close proximity of the devices, set as RF24_PA_MIN (RF24_PA_MAX is default)
  radio.setPALevel(RF24_PA_MIN); // RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
 
  // Slower data rate for better range
  radio.setDataRate( RF24_250KBPS ); // RF24_250KBPS, RF24_1MBPS, RF24_2MBPS
 
  // Number of retries and set tx/rx address
  radio.setRetries(15, 15);
  radio.openWritingPipe(rxAddr);

  // Stop listening, so we can send!
  radio.stopListening();
}

void loop() {

  // Set up a message and a timestamp to it using millis()
  String str = "Hello world! ";
  str += String( millis() );
 
  // http://stackoverflow.com/questions/7383606/converting-an-int-or-string-to-a-char-array-on-arduino
  // Length (with one extra character for the null terminator)
  int str_len = str.length() + 1;
 
  // Prepare the character array (the buffer)
  char char_array[str_len];
 
  // Copy it over
  str.toCharArray(char_array, str_len);

  // Ace, let's now send the message
  radio.write(&char_array, sizeof(char_array));
 
  // Let the ourside world know..
  Serial.print("Sent Message: ");
  Serial.print( char_array );
  Serial.println("");
 
  // Wait a short while before sending the other one
  delay(2000);
}
[/code]

receiver
Code: [Select]
[code]
// Load up the libraries
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

// define the pins
#define CE_PIN   9
#define CSN_PIN 10

// Create a Radio
RF24 radio(CE_PIN, CSN_PIN);

// The tx/rx address
const byte rxAddr[6] = "00001";

void setup()
{

  // Start the serial
  Serial.begin(9600);
  while(!Serial);
  Serial.println("NRF24L01P Receiver Starting...");
 
  // Start the radio, again set to min & slow as I'm guessing while testing theire really close to each other
  radio.begin();
  radio.setPALevel(RF24_PA_MIN);   // RF24_PA_MIN ,RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
  radio.setDataRate( RF24_250KBPS ); // RF24_250KBPS, RF24_1MBPS, RF24_2MBPS
 
  // Set the reading pipe and start listening
  radio.openReadingPipe(0, rxAddr);
  radio.startListening();
 
}

void loop()
{
  if (radio.available())
  {
    // the buffer to store the received message in
    char text[100] = {0};
   
    // Now read the message, old examples have done = radio.read(), that doesn't work anymore!!!
    radio.read(&text, sizeof(text));
   
    // Print the message out to the COM window
    Serial.println("Received Message: ");
    Serial.print(text);
    Serial.println("");
  }
}
[/code]


manuelo94

Hola tauro0221,

No he entendido muy bien esto

Recuerda que tienes que cambiar los pinesde tx y rx.

¿Tengo que cambiar los pibes de ce y csn?

No se muy bien que es lo que hay que hacer, espero tu respuesta, un saludo.

tauro0221

Hi,
Pido disculpas me equivoque de modulo. Son lo CE y CSN. Mira el sketch donde pones los pines dependiendo que arduino usas. Arduino uno son CE=9 y CSN= 10.Estaba trabajando con GPS y me confundi.

manuelo94

No te preocupes, jajaja, muchas gracias,

¿la configuración de los pines ce y csn en el  arduino uno, también vale para arduino nano?

Por cierto que se me había olvidado comentar que uso el IDE de arduino en un mac ¿pasa algo si uso un mac para mi proyecto?

Gracias por responder con tanta rapidez.

tauro0221

Hi,
No creo que sea un problemapues despues que te puedes comunicar no hay problema. Si quires puedes hacer una prueba  y es de escribir un programita que mande un mesaje a la pantalla si lo recibes entonces no tienes problemas.Yo desconozco mac.

manuelo94

#12
Aug 16, 2019, 08:45 am Last Edit: Aug 16, 2019, 08:49 am by manuelo94
Buenos dias,

Hice lo que me dijiste pero me todavía sigo sin poder comunicarme.

En el emisor creo que todo funciona correctamente:




Pero en el receptor no funciona muy bien.


Conectado todo bien, me sale este mensaje en el monitor serial y se queda así todo el rato:




Cuando desconecto el regulador de voltaje, me sale este mensaje:



¿Que estoy haciendo mal?, muchas gracias, espero vuestra respuesta.

tauro0221

Hi,
Segun tu mesaje en la pantalla el modulo tx esta enviando la data y el otro esta listo para recibir la data. El programa lo que haces es que el transmisor envia los millisegundos como data y el recibidor si lo recibe te dice el tiempor que tomo la transmison. Demuestra que no se a sean podido comunicar.. Yo tengo ese mismo TX/RX y los tengo trabajando y al principio no se comunicaban y use ese programa y me dio a entender que el problema era en my programa.Esos mesajes te dicen que no tienes problemas con el MAC. Que usas para hacer las conecciones. Estas usando un breadboard?. Tienes que tener cuidado pues algunas veces no hacen buenas conecciones.Si tienes un voltimetro mide las resistencias de los cables  de un punto al otro para ver si estan buenas. Si todo lee bien entonces puedes ser que uno de los modulos tengan problemas.

manuelo94

#14
Aug 16, 2019, 09:19 am Last Edit: Aug 16, 2019, 01:51 pm by manuelo94
Buenos dias Tauro, muchas gracias por contestar tan rápidamente,

Las conexiones las hago con cables dupont, directamente entre los modulos, sin utilizar protoboard ni nada, te adjunto foto:






He estado mirando continuidad de los cables y todos parecen estar bien.

¿Que opinais?

Go Up