# Optimized High Speed Driver for nRF24L01(+) 2.4GHz Wireless Transceiver

@tableofcontents

## Design Goals

This library fork is designed to be...

- More compliant with the manufacturer specified operation of the chip, while allowing advanced users
  to work outside the recommended operation.
- Utilize the capabilities of the radio to their full potential via Arduino
- More reliable, responsive, bug-free and feature rich
- Easy for beginners to use, with well documented examples and features
- Consumed with a public interface that's similar to other Arduino standard libraries

## News

See the releases' descriptions on
[the library's release page](http://github.com/nRF24/RF24/releases) for a list of
changes.

> [!IMPORTANT]
> There's going to be major changes in v2.0.
> As of v1.5, there is [newer API](migration.md) that should be used instead of
> the @ref deprecated "deprecated API".
>
> See our [migration guide](migration.md) to understand what you should update in your code.

## Useful References

- [RF24 Class Documentation](classRF24.html)
- [Support & Configuration](pages.html)
- [Source Code](https://github.com/nRF24/RF24/)
- [Datasheets](https://github.com/nRF24/RF24/tree/master/datasheets)

### Additional Information and Add-ons

- [RF24Network](http://nRF24.github.io/RF24Network): OSI Network Layer for multi-device communication. Create a home sensor network.
- [RF24Mesh](http://nRF24.github.io/RF24Mesh): Dynamic Mesh Layer for RF24Network
- [RF24Ethernet](http://nRF24.github.io/RF24Ethernet): TCP/IP Radio Mesh Networking (shares Arduino Ethernet API)
- [RF24Audio](http://nRF24.github.io/RF24Audio): Realtime Wireless Audio streaming
- [nrf_to_nrf](https://github.com/TMRh20/nrf_to_nrf): OSI Layer 2 radio driver for NRF52x radios. Replaces RF24 layer for new radio devices.
- [RF24G](https://hobietime.github.io/RF24G/html/): Create a true mesh of up to 7 nrf24l01 and/or nrf52x devices
- [TMRh20 Blog: RF24 Optimization Overview](http://tmrh20.blogspot.com/2014/03/high-speed-data-transfers-and-wireless.html)
- [TMRh20: RPi/Linux with RF24Gateway](http://tmrh20.blogspot.com/2016/08/raspberry-pilinux-with-nrf24l01.html)
- [All TMRh20 Documentation Main Page](http://tmrh20.github.io/)

### More Information

- [Project Blog: TMRh20.blogspot.com](http://TMRh20.blogspot.com)
- [Maniacal Bits Blog](http://maniacalbits.blogspot.ca/)
- [Original Maniacbug RF24Network Blog Post](https://maniacbug.wordpress.com/2012/03/30/rf24network/)
- [ManiacBug on GitHub](https://github.com/maniacbug/RF24) (Original Library Author)
- [MySensors.org](http://www.mysensors.org/) (User friendly sensor networks/IoT)

## Platform Support Pages

- [Arduino](arduino.md) (Uno, Nano, Mega, Due, Galileo, etc)
- [ATTiny](attiny.md)
- [Pico SDK support](pico_sdk.md)
- [Linux Installation](linux_install.md) (or the alternative [instructions using CMake](using_cmake.md)),
  ([Linux/RPi General](rpi_general.md), [MRAA](mraa.md) supported boards (Galileo, Edison, etc), LittleWire)
- [Cross-compilation](cross_compile.md) for linux devices
- [Python wrapper](python_wrapper.md) available for Linux devices

### General µC Pin layout

@see also the individual board [support pages](pages.html) for more info

Observe

![pinout.jpg](images/pinout.jpg)

The table below shows how to connect the the pins of the NRF24L01(+) to different boards.
CE and CSN are configurable.

| PIN | NRF24L01 | Arduino UNO | ATtiny25/45/85 [0] | ATtiny44/84 [1] | LittleWire [2]          | RPI        | RPi -P1 Connector |
| --- | -------- | ----------- | ------------------ | --------------- | ----------------------- | ---------- | ----------------- |
| 1   | GND      | GND         | pin 4              | pin 14          | GND                     | rpi-gnd    | (25)              |
| 2   | VCC      | 3.3V        | pin 8              | pin 1           | regulator 3.3V required | rpi-3v3    | (17)              |
| 3   | CE       | digIO 7     | pin 2              | pin 12          | pin to 3.3V             | rpi-gpio22 | (15)              |
| 4   | CSN      | digIO 8     | pin 3              | pin 11          | RESET                   | rpi-gpio8  | (24)              |
| 5   | SCK      | digIO 13    | pin 7              | pin 9           | SCK                     | rpi-sclk   | (23)              |
| 6   | MOSI     | digIO 11    | pin 6              | pin 7           | MOSI                    | rpi-mosi   | (19)              |
| 7   | MISO     | digIO 12    | pin 5              | pin 8           | MISO                    | rpi-miso   | (21)              |
| 8   | IRQ      | -           | -                  | -               | -                       | -          | -                 |

- [0] https://learn.sparkfun.com/tutorials/tiny-avr-programmer-hookup-guide/attiny85-use-hints
- [1] http://highlowtech.org/?p=1695 The ATTiny2313 is unsupported due to lack of sufficient memory resources.
- [2] http://littlewire.github.io/
