user78446: Im building an RC car project and using 2 NRF24's for communication. I own an Arduino Uno, Nano and Nano Every. The NRF's work great with the Uno and Nano in any combinations but using a Nano Every either as TX or RX doesn't work.
I have tried the NRF24 and NRFLite and both say "Cannot communicate with radio".
When using the NRFLite library examples Basic_TX on the Uno/Nano and Basic_RX on the Nano Every, the Uno/Nano says transmission was successful even though the Every says "Cannot communicate with radio". This lasts about 1 second before the Uno/Nano says the transmission failed again. This happens every time you reset the Every. It is as if the NRF24 gets powered on but then is unable to communicate with the Every.
I am using power adapters for the NRF's and powering them through the 5v pin. No luck with capacitors either. Have swapped out all the wires and also double checked all connections.
Is there something wrong with the Nano Every? Does it work with a NRF24 for anyone?
I have completely ran out of ideas to fix this.
Thank you in advance

user80099: I stucked with the same problem too when use nRF24L01+ and Arduino Nano Every to transmit data to Arduino Uno with nRF24L01+. So I have solved the problem as follows below. I hope it could help you and for somebody else.

First of all you should add Arduino megaAVR Boards in the boards manager.

1.1 It is first necessary to add the URL of their Boards Manager JSON file in: File > Preferences > Additional Boards Manager URLs and Paste the link: https://raw.githubusercontent.com/amperka/iskra-boards/master/package_amperka_index.json
1.2. Then go to Tools>Boards Manager, search Arduino SAMD Boards and install it

1.3. Choose Arduino Nano Every in Tools>Board>Arduino megaAVR Boards>Arduino Nano Every


Upload the library for RF24. It must be compatible for architecture megaavr because  Arduino Nano Every uses Microchip ATmega4809. I use the latest version RF24-1.4.1.
Here is the link to the library: https://www.arduinolibraries.info/libraries/rf24

You should check whether you connected nRF24L01+ and arduino correctly.


The pinout of Arduino Uno is as follows:
5V - VCC if you connect nRF24L01+ via nRF24L01+ adapter (I use adapter)
or 3.3V - VCC without adapter
GND - GND
9 pin - CE
10 pin - CSN
11 pin - MOSI
12 pin - MISO
13 pin - SCK
not connected - IRQ
However, I use another pinout for Arduino Nano Every. When I use the same pinout as Arduino Uno it can't find nRF24L01+. You can check it in Serial Monitor by using a sketch below. If you get zeros in the third line, for example, something like this: RX_ADDR_P0-1 = 0x0000000070 0x0000000000. It means that Arduino Nano Every isn't connected to nRF24L01+ correctly and Arduino Nano Every doesn't see it.
I suppose the problem with the library of RF24 and it should be fixed. Perhaps I'm wrong and the problem with another things.
So I use the following pinouts for Arduino Nano Every:
5V - VCC if you connect nRF24L01+ via nRF24L01+ adapter (I use adapter)
or 3.3V - VCC without adapter
GND - GND
10 pin - CE
A3 - CSN (if you will get zeros in the third line RX_ADDR_P0-1 in Serial Monitor then change A3 to another one. You can vary pin from A5 and so on until A0). do not use A7 and A6 because on some model dev boards, A6 and A7 are analog input only.
11 pin - MOSI
12 pin - MISO
13 pin - SCK
not connected - IRQ
The sketch for checking:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(10,A3);  // for arduino nano every
//RF24 radio(9,10); // for arduino uno

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

Here is the correct output in Serial Monitor
the third line without zeros: RX_ADDR_P0-1  = 0xf0f0f0f0d2 0xc2c2c2c2c2
SPI Speedz  = 10 Mhz
STATUS      = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1    = 0xf0f0f0f0d2 0xc2c2c2c2c2
RX_ADDR_P2-5    = 0xc3 0xc4 0xc5 0xc6
TX_ADDR     = 0xf0f0f0f0d2
RX_PW_P0-6  = 0x20 0x20 0x20 0x20 0x20 0x20
EN_AA       = 0x00
EN_RXADDR   = 0x02
RF_CH       = 0x00
RF_SETUP    = 0x14
CONFIG      = 0x0f
DYNPD/FEATURE   = 0x38 0x38
Data Rate   = 1 MBPS
Model       = nRF24L01+
CRC Length  = 16 bits
PA Power    = PA_HIGH
ARC     = 15

the next two lines are a list of available channels that should be read from top to bottom (i.e. we have 127 channels, еру channels are presented in 16-bit version, the first line is the first digit of each of 127 channels, the second line is the second digit of each of 127 channels).
00000000000000001111111111111111222222222222222233333333333333334444444444444444555555555555555566666666666666667777777777777777

0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef


then the level of noisiness of the channels is displayed.
There are noise from the channel 09 to the channel 3f approximately.
this noise from my wifi router and some another electronics.
you should choose free channels for your purpose.
00000010114663444533233300000000001000011233544433221100112223212010000000000000000000000000000000000000000000000000000000000000

00200000035575656777697332111321022125625559643632551111000333012000000000100000010001000000001000000000000011010000000000000000

00000001135a9a767767c89a85646565866555645897434644445200121212122000000000000000000000001000000000000000011000000010000000000000

00101000035567667357878a51123341220322335373542222122000112313112000000001010000000001000000020000000010000000000000100000000010

11000011047587577457694521122232111121243247542232210100002222111000000000100002000002000000000000000000000000000010000000000000

Note:

Check Tools. There should be:
Board:Arduino Nano Every;
Registers emulation: "ATMEGA328";
Port:COM#(Arduino Nano Every).

some transmission errors can occur due to poor contacts between wires and pins of arduino, so the wires should be soldered.


If everything is ok, then you can use your sketches for the receiver and transmitter respectively. Good luck!

78446: <p>Im building an RC car project and using 2 NRF24's for communication. I own an Arduino Uno, Nano and Nano Every. The NRF's work great with the Uno and Nano in any combinations but using a Nano Every either as TX or RX doesn't work.</p>
<p>I have tried the NRF24 and NRFLite and both say &quot;Cannot communicate with radio&quot;.</p>
<p>When using the NRFLite library examples Basic_TX on the Uno/Nano and Basic_RX on the Nano Every, the Uno/Nano says transmission was successful even though the Every says &quot;Cannot communicate with radio&quot;. This lasts about 1 second before the Uno/Nano says the transmission failed again. This happens every time you reset the Every. It is as if the NRF24 gets powered on but then is unable to communicate with the Every.</p>
<p>I am using power adapters for the NRF's and powering them through the 5v pin. No luck with capacitors either. Have swapped out all the wires and also double checked all connections.</p>
<p>Is there something wrong with the Nano Every? Does it work with a NRF24 for anyone?</p>
<p>I have completely ran out of ideas to fix this.
Thank you in advance</p>
 80099: <p>I stucked with the same problem too when use nRF24L01+ and Arduino Nano Every to transmit data to Arduino Uno with nRF24L01+. So I have solved the problem as follows below. I hope it could help you and for somebody else.</p>
<ol>
<li>First of all you should add Arduino megaAVR Boards in the boards manager.</li>
</ol>
<p>1.1 It is first necessary to add the URL of their Boards Manager JSON file in: File &gt; Preferences &gt; Additional Boards Manager URLs and Paste the link: <a href="https://raw.githubusercontent.com/amperka/iskra-boards/master/package_amperka_index.json" rel="nofollow noreferrer">https://raw.githubusercontent.com/amperka/iskra-boards/master/package_amperka_index.json</a></p>
<p>1.2. Then go to Tools&gt;Boards Manager, search Arduino SAMD Boards and install it</p>
<p><a href="https://i.stack.imgur.com/Jqag3.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Jqag3.png" alt="enter image description here" /></a></p>
<p>1.3. Choose Arduino Nano Every in Tools&gt;Board&gt;Arduino megaAVR Boards&gt;Arduino Nano Every</p>
<p><a href="https://i.stack.imgur.com/nowU0.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/nowU0.png" alt="enter image description here" /></a></p>
<ol start="2">
<li><p>Upload the library for RF24. It must be compatible for architecture megaavr because  Arduino Nano Every uses Microchip ATmega4809. I use the latest version RF24-1.4.1.
Here is the link to the library: <a href="https://www.arduinolibraries.info/libraries/rf24" rel="nofollow noreferrer">https://www.arduinolibraries.info/libraries/rf24</a></p>
</li>
<li><p>You should check whether you connected nRF24L01+ and arduino correctly.</p>
</li>
</ol>
<p>The pinout of Arduino Uno is as follows:
5V - VCC if you connect nRF24L01+ via nRF24L01+ adapter (I use adapter)
or 3.3V - VCC without adapter</p>
<p>GND - GND</p>
<p>9 pin - CE</p>
<p>10 pin - CSN</p>
<p>11 pin - MOSI</p>
<p>12 pin - MISO</p>
<p>13 pin - SCK</p>
<p>not connected - IRQ</p>
<p>However, I use another pinout for Arduino Nano Every. When I use the same pinout as Arduino Uno it can't find nRF24L01+. You can check it in Serial Monitor by using a sketch below. If you get zeros in the third line, for example, something like this: RX_ADDR_P0-1 = 0x0000000070 0x0000000000. It means that Arduino Nano Every isn't connected to nRF24L01+ correctly and Arduino Nano Every doesn't see it.
I suppose the problem with the library of RF24 and it should be fixed. Perhaps I'm wrong and the problem with another things.</p>
<p>So I use the following pinouts for Arduino Nano Every:
5V - VCC if you connect nRF24L01+ via nRF24L01+ adapter (I use adapter)
or 3.3V - VCC without adapter</p>
<p>GND - GND</p>
<p>10 pin - CE</p>
<p>A3 - CSN (if you will get zeros in the third line RX_ADDR_P0-1 in Serial Monitor then change A3 to another one. You can vary pin from A5 and so on until A0). do not use A7 and A6 because on some model dev boards, A6 and A7 are analog input only.</p>
<p>11 pin - MOSI</p>
<p>12 pin - MISO</p>
<p>13 pin - SCK</p>
<p>not connected - IRQ</p>
<p>The sketch for checking:</p>
<pre><code>#include &lt;SPI.h&gt;
#include &lt;nRF24L01.h&gt;
#include &lt;RF24.h&gt;

RF24 radio(10,A3);  // for arduino nano every
//RF24 radio(9,10); // for arduino uno

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;
  while ( i &lt; num_channels )  {
    printf(&quot;%x&quot;,i&gt;&gt;4);
    ++i;
  }
  printf(&quot;\n\r&quot;);
  i = 0;
  while ( i &lt; num_channels ) {
    printf(&quot;%x&quot;,i&amp;0xf);
    ++i;
  }
  printf(&quot;\n\r&quot;);
}
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 &lt; num_channels ) {
    printf(&quot;%x&quot;,min(0xf,values[i]&amp;0xf));
    ++i;
  }
  printf(&quot;\n\r&quot;);
}
int serial_putc( char c, FILE * ) {
  Serial.write( c );
  return c;
}

void printf_begin(void) {
  fdevopen( &amp;serial_putc, 0 );
}
</code></pre>
<p>Here is the correct output in Serial Monitor
the third line without zeros: RX_ADDR_P0-1  = 0xf0f0f0f0d2 0xc2c2c2c2c2</p>
<pre><code>SPI Speedz  = 10 Mhz
STATUS      = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1    = 0xf0f0f0f0d2 0xc2c2c2c2c2
RX_ADDR_P2-5    = 0xc3 0xc4 0xc5 0xc6
TX_ADDR     = 0xf0f0f0f0d2
RX_PW_P0-6  = 0x20 0x20 0x20 0x20 0x20 0x20
EN_AA       = 0x00
EN_RXADDR   = 0x02
RF_CH       = 0x00
RF_SETUP    = 0x14
CONFIG      = 0x0f
DYNPD/FEATURE   = 0x38 0x38
Data Rate   = 1 MBPS
Model       = nRF24L01+
CRC Length  = 16 bits
PA Power    = PA_HIGH
ARC     = 15
</code></pre>
<p>the next two lines are a list of available channels that should be read from top to bottom (i.e. we have 127 channels, еру channels are presented in 16-bit version, the first line is the first digit of each of 127 channels, the second line is the second digit of each of 127 channels).</p>
<pre><code>00000000000000001111111111111111222222222222222233333333333333334444444444444444555555555555555566666666666666667777777777777777

0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef

</code></pre>
<p>then the level of noisiness of the channels is displayed.
There are noise from the channel 09 to the channel 3f approximately.
this noise from my wifi router and some another electronics.
you should choose free channels for your purpose.</p>
<pre><code>00000010114663444533233300000000001000011233544433221100112223212010000000000000000000000000000000000000000000000000000000000000

00200000035575656777697332111321022125625559643632551111000333012000000000100000010001000000001000000000000011010000000000000000

00000001135a9a767767c89a85646565866555645897434644445200121212122000000000000000000000001000000000000000011000000010000000000000

00101000035567667357878a51123341220322335373542222122000112313112000000001010000000001000000020000000010000000000000100000000010

11000011047587577457694521122232111121243247542232210100002222111000000000100002000002000000000000000000000000000010000000000000
</code></pre>
<p>Note:</p>
<ol>
<li><p>Check Tools. There should be:
Board:Arduino Nano Every;
Registers emulation: &quot;ATMEGA328&quot;;
Port:COM#(Arduino Nano Every).</p>
</li>
<li><p>some transmission errors can occur due to poor contacts between wires and pins of arduino, so the wires should be soldered.</p>
</li>
</ol>
<p>If everything is ok, then you can use your sketches for the receiver and transmitter respectively. Good luck!</p>
