Tengo ya una semana de estar lidiando con unas placas nRF24L01 que compré en mi país.
Siguiendo el tutorial de este enlace:
Tanto para el emisori como el receptor, y cambiando el código en los pines 9 y 10 que están al revés, obtengo resultados muy desalentadores:
El emisor lee los datos de un joystick perfectamente y los envía, según la comunicación en serie
Pero, en el caso del receptor, los resultados son estos:
El orden de los cables sería el siguiente tanto para el emisor como para el receptor:
VCC (Cable rojo a 3.3); CSN (cable azul a pin 9), MOSI (cable amarillo a pin 11), IRQ ->Libre
GND (Cable negro); CE (cable verde a pin 10) , SCK (cable blanco a pin 13) , MISO (cable naranja a pin 12)
Pongo los colores para llevar mismo orden.
Las fotos son del emisor, pero el receptor está exactamente igual cableado.
Además, le puse a los módulos un capacitor de 100 microFaradios y 25 V para evitar las caídas de potencia.
Estoy usando un clon de un arduino nano tanto en emisor como en receptor, luego de que los Arduionos Nano Every me dieran algún problema. Pero también he probado esta misma configuración con un arduino uno original.
Alguna idea de por qué no funcionan?
Código del receptor:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
//https://naylampmechatronics.com/blog/16_tutorial-basico-nrf24l01-con-arduino.html
//https://forum.arduino.cc/t/simple-nrf24l01-2-4ghz-transceiver-demo/405123/3
//Declaremos los pines CE y el CSN
#define CE_PIN 10
#define CSN_PIN 9
//Variable con la dirección del canal que se va a leer
byte direccion[5] ={'R','o','b','o','t'};
//creamos el objeto radio (NRF24L01)
RF24 radio(10, 9);
//vector para los datos recibidos
int datos[2];
void setup()
{
//inicializamos el NRF24L01
radio.begin();
radio.setAutoAck(false);
//radio.printDetails();
//inicializamos el puerto serie
Serial.begin(9600);
//Abrimos el canal de Lectura
radio.openReadingPipe(1, direccion);
//empezamos a escuchar por el canal
radio.startListening();
}
void loop() {
uint8_t numero_canal;
//if ( radio.available(&numero_canal) )
if ( radio.available() )
{
//Leemos los datos y los guardamos en la variable datos[]
radio.read(datos,sizeof(datos));
//reportamos por el puerto serial los datos recibidos
Serial.print("Dato 0= " );
Serial.print(datos[0]);
Serial.print(", ");
Serial.print("Dato 1= " );
Serial.print(datos[1]);
Serial.println(".");
}
else
{
Serial.println("No hay datos de radio disponibles");
}
delay(1000);
}