2.4G Wireless nRF24L01p with PA and LNA

From Wiki

Jump to: navigation, search



nRF24L01p(nRF24L01+) with PA and LNA is compatible with nRF24L01+(nRF24L01p),and there are same interface. These are add a power amplifier(PA) circuit and Low Noise Amplifier(LNA) circuit, which could transmit longer distances and more stable performance for industry standard.Increased PA and LNA, RF switch, band pass filter,formed a professional full two-way RF power amplifier, making effective communication for greatly increased.The transmission distance to reach 1000 meter with 2DB Antenna at 250kbps data rate on open area.
There are nRF24L01+ with PA(v1.0), the different version from diff.
You also could reference 2.4G Wireless nRF24L01p detailed parameters.
N24l01 figure20.jpg


Application Ideas


  • VCC is range of 1.9V~3.6V, do not exceed this range, otherwise it by destroyed the module.
  • Except of VCC and GND,the other pins can be direct connected to 5V Microprocessor's IO, needless level converter. Of course 3V Microprocessor's IO more applied.
  • If the Microprocessor isn't hardware SPI interface,could be simulated with ordinary IO.
  • If connected to 51 series MCU's P0, there is a 10K Pull-up resistor need,others Port needless.
  • If Microprocessor IO more than 10mA,need connect 2K resistive divider. It could direct connected to AVR Series.


Board Schematic

Wireless RF 2.4G RFM+PA+LAN03 02.jpg


Specification Value
Voltage 3-3.6V (recommended 3.3V)
Maximum output power +20 dBm
Emission mode current(peak) 115 mA
Receive Mode Current(peak) 45 mA
Power-down mode current 4.2 uA
Operating temperature -20 - 70 ℃
Sensitivity 2Mbps mode in received -92 dBm
Sensitivity 1Mbps mode in received -95 dBm
Sensitivity 250kbps mode in received -104 dBm
PA gain 20 dB
LNA gain 10 dB
LNA Noise figure 2.6 dB
Antenna Gain (peak) 2 dBI
2MB rate (Open area) 520 meter
1MB rate (Open area) 750 meter
250Kb rate (Open area) >1000 meter
Size 38.00mm * 16.46mm * 0.8mm

Pin definition and Rating

3 CE 4 CSN

Mechanic Dimensions


Please reference to 2.4G_Wireless_nRF24L01p

The Enhanced ShockBurst™ features enable significant improvements of power efficiency for bi-directional and uni-directional systems, without adding complexity on the host controller side. In Enhanced ShockBurst™ it is possible to configure parameters such as the maximum number of retrans- mits and the delay from one transmission to the next retransmission. All automatic handling is done without the involvement of the MCU. it could be for wireless mouse wireless keyboard.

ShockBurst™ makes it possible to use the high data rate offered by nRF24L01 without the need of a costly, high-speed microcontroller (MCU) for data processing/clock recovery.In ShockBurst™ TX, nRF24L01 automatically generates preamble and CRC, it compatable with nRF2401A, nRF24E1, nRF2402 and nRF24E2 communication.

If you want use 6 data pipe MultiCeiver™ for 1:6 star networks, selection Enhanced ShockBurst™ N24l01 figure04.jpg

nRF24L01 in a star network configuration.
An nRF24L01 configured as primary RX (PRX) will be able to receive data trough 6 different data pipes, see Figure 4. A data pipe will have a unique address but share the same frequency channel. This means that up to 6 different nRF24L01 configured as primary TX (PTX) can communicate with one nRF24L01 configured as PRX, and the nRF24L01 configured as PRX will be able to distinguish between them. Data pipe 0 has a unique 40 bit configurable address. Each of data pipe 1-5 has an 8 bit unique address and shares the 32 most significant address bits. All data pipes can perform full Enhanced ShockBurst™ functionality. nRF24L01 will use the data pipe address when acknowledging a received packet. This means that nRF24L01 will transmit ACK with the same address as it receives payload at. In the PTX device data pipe 0 is used to received the acknowledge, and therefore the receive address for data pipe 0 has to be equal to the transmit address to be able to receive the acknowledge. See Figure 5 for addressing example.

N24l01 figure05.jpg
Example on how the acknowledgement addressing is done.
An nRF24L01 configured as PTX with Enhanced ShockBurst™ enabled, will use the ShockBurst™ feature to send a packet whenever the microcontroller wants to. After the packet has been transmitted, nRF24L01 will switch on its receiver and expect an acknowledgement to arrive from the terminating part. If this acknowledgement fails to arrive, nRF24L01 will retransmit the same packet until it receives an acknowledgement or the number of retries exceeds the number of allowed retries given in the SETUP_RETR_ARC register. If the number of retries exceeds the number of allowed retries, this will show in the STATUS register bit MAX_RT and gives an interrupt. Whenever an acknowledgement is received by an nRF24L01 it will consider the last transmitted packet as delivered. It will then be cleared from the TX FIFO, and the TX_DS IRQ source will be set high. With Enhanced ShockBurst™ nRF24L01 offers the following benefits:

nRF24L01+ V2.0 module using external 2DB antenna that means need a SMA connector head antenna.

N24l01 figure17.jpg

Hardware Installation


Includes important code snippet. Demo code like :
Includes important code snippet. If you want transmission max distance, the nRF24L01 Demo For Arduino code for Arduino should change one line:

// TX_PWR:0dBm, Datarate:2Mbps, LNA:HCURR<br>
// TX_PWR:0dBm, Datarate:250kbps, LNA:HCURR<br>

The Demo pins to Arduino as below:

GND – GND, VCC – 3.3V, CS – D8, CSN – D9, SCK – D10, MOSI – D11, MISO – D12, IRQ – D13

Download the code below into the TX Arduino (transmit) — This code will drive the nRF24L01 module to send out data form 0×00 to 0xFF .

Note: between the write TX_FIFO and clear RX_DR or TX_DS or MAX_RT interrupt flag, would better not serial print anything, which maybe case ACK failed.

void setup()
   SPI_DIR = ( CE + SCK + CSN + MOSI);
   SPI_DIR &=~ ( IRQ + MISO);
   //  attachInterrupt(1, _ISR, LOW);// interrupt enable
   init_io();                        // Initialize IO port
   unsigned char status=SPI_Read(STATUS);
   Serial.print("status = ");
   Serial.println(status,HEX);      // read the mode’s status register, the default value should be ‘E’
   Serial.println("*******************TX_Mode Start****************************");
   TX_Mode();                       // set TX mode
void loop()
   int k = 0;
     for(int i=0; i<32; i++)
         tx_buf[i] = k++;
     unsigned char status = SPI_Read(STATUS);                // read register STATUS's value
     if(status&TX_DS)                                        // if receive data ready (TX_DS) interrupt
       SPI_Write_Buf(WR_TX_PLOAD,tx_buf,TX_PLOAD_WIDTH);     // write playload to TX_FIFO
     if(status&MAX_RT)                                       // this is retransmit than  SETUP_RETR
       SPI_Write_Buf(WR_TX_PLOAD,tx_buf,TX_PLOAD_WIDTH);     // disable standy-mode
     SPI_RW_Reg(WRITE_REG+STATUS,status);                    // clear RX_DR or TX_DS or MAX_RT interrupt flag

Download the code below into the RX Arduino (receive) – This code will drive the nFR24L01 module to receive the data that transmit form the TX module and print it to serial port.

Note: clear RX_FIFO must bellow Read_FIFO

void setup()
   SPI_DIR = ( CE + SCK + CSN + MOSI);
   SPI_DIR &=~ ( IRQ + MISO);
   //  attachInterrupt(1, _ISR, LOW); // interrupt enable
   init_io();                        // Initialize IO port
   unsigned char status=SPI_Read(STATUS);
   Serial.print("status = ");
   Serial.println(status,HEX);      // read the mode’s status register, the default value should be ‘E’
   Serial.println("*****************RX_Mode start******************************R");
   RX_Mode();                        // set RX mode
void loop()
     unsigned char status = SPI_Read(STATUS);                // read register STATUS's value
     if(status&RX_DR)                                        // if receive data ready (TX_DS) interrupt
       SPI_Read_Buf(RD_RX_PLOAD, rx_buf, TX_PLOAD_WIDTH);    // read playload to rx_buf
       SPI_RW_Reg(FLUSH_RX,0);                               // clear RX_FIFO
       for(int i=0; i<32; i++)
           Serial.print(" ");
           Serial.print(rx_buf[i],HEX);                      // print rx_buf
       Serial.println(" ");
     SPI_RW_Reg(WRITE_REG+STATUS,status);                    // clear RX_DR/TX_DS/MAX_RT interrupt flag


The projects and application examples. These file are a sample code for your reference.

Bill of Materials (BOM) /parts list

All the components used to produce the product.


Please list your question here:


If you have questions or other better design ideas,

Version Tracker

Revision Descriptions Release
update tp v3.1 now Initial public release date

Bug Tracker

Bug Tracker is the place you can publish any bugs you think you might have found during use. Please write down what you have to say, your answers will help us improve our products.

Additional Idea

The Additional Idea is the place to write your project ideas about this product, or other usages you've found. Or you can write them on Projects page.


   *nRF24L01_sch.pdf                                   Schematic of the nRL24L01 module
   *nRF24L01_Specification_v2_0.pdf                    Datasheet of the nRL2401 chip
   *NRF24L01.JPG                                       Pin map of the nRF24L01 module
   *Demo_80S52.rar                                     Demo code for nRF24L01 module on 80S52
   *acceptavrnrf24l01.rar                              Accept date demo for nRF24L01 module on AVR
   *sendavrnrf24l01.rar                                Send data demo for nRF24L01 module on AVR

How to buy

Click here to buy: http://www.elecfreaks.com/estore/nrf24l01p-pa-lna-v3-1-rfm05.html

See Also

Other related products and resources.


This documentation is licensed under the Creative Commons Attribution-ShareAlike License 3.0 Source code and libraries are licensed under GPL/LGPL, see source code files for details.

External Links

Links to external webpages which provide more application ideas, documents/datasheet or software libraries

Personal tools