A collection of Arduino projects for NRF24L01 wireless communication modules, featuring range testing, wireless chat, and diagnostic tools.
- π‘ Wireless Chat System - Real-time bidirectional text communication
- π Range Testing - Professional packet loss analysis with LED indicators
- π§ Diagnostic Tools - Hardware testing and troubleshooting utilities
- π± User-Friendly - Clean Serial Monitor interface with visual feedback
- π― Reliable - Tested pin configurations and error handling
nrf24-arduino-projects/
βββ nrf24_chat_terminal_a/ # Wireless chat - Terminal A
βββ nrf24_chat_terminal_b/ # Wireless chat - Terminal B
βββ nrf24_range_transmitter/ # Range test transmitter
βββ nrf24_range_receiver/ # Range test receiver
βββ nrf24_diagnostic/ # Hardware diagnostic tool
βββ scripts/
β βββ install_dependencies.ps1 # PowerShell installer
β βββ install_dependencies.sh # Linux/macOS installer
β βββ install_dependencies.bat # Windows batch installer
βββ docs/
β βββ WIRING.md # Detailed wiring guide
β βββ TROUBLESHOOTING.md # Common issues and solutions
β βββ API.md # Code documentation
βββ examples/ # Additional example code
βββ LICENSE # MIT License
βββ README.md # This file
- 2x Arduino Uno (or compatible)
- 2x NRF24L01 wireless modules
- Jumper wires
- Arduino IDE
- RF24 library by TMRh20
-
Clone the repository:
git clone https://github.com/adamivie/nrf24-arduino-projects.git cd nrf24-arduino-projects -
Install dependencies:
Windows (PowerShell):
.\scripts\install_dependencies.ps1
Linux/macOS:
./scripts/install_dependencies.sh
-
Wire your NRF24L01 modules (see Wiring Guide)
| NRF24L01 Pin | Arduino Uno Pin | Description |
|---|---|---|
| VCC | 3.3V | Power (3.3V only!) |
| GND | GND | Ground |
| CE | 7 | Chip Enable |
| CSN | 8 | SPI Chip Select |
| SCK | 13 | SPI Clock |
| MOSI | 11 | SPI Data Out |
| MISO | 12 | SPI Data In |
The wireless chat system allows real-time text communication between two Arduino boards through their Serial Monitors.
- Upload
nrf24_chat_terminal_a.inoto first Arduino - Upload
nrf24_chat_terminal_b.inoto second Arduino - Open Serial Monitor for both (9600 baud)
- Set line ending to "Newline" or "Both NL & CR"
NRF24L01 Wireless Chat - Terminal A
====================================
Type your message and press Enter to send
Messages from Terminal B will appear below
------------------------------------
Terminal A> Hello from Arduino A! [SENT]
Terminal B> Hi there! This is Arduino B.
Terminal A> The wireless chat works great! [SENT]
Terminal B> I agree! Crystal clear communication.
Terminal A>
- β Bidirectional communication
- β Real-time message display
- β Visual feedback (SENT/FAILED status)
- β Character echo as you type
- β Clean interface with proper formatting
Professional range testing with packet statistics and LED status indicators.
- Continuous packet transmission with counters
- Real-time packet loss calculation
- Signal strength estimation
- LED status indicators for transmission/reception
- Detailed statistics output
- Upload transmitter code to first Arduino
- Upload receiver code to second Arduino
- Start close together to verify communication
- Gradually increase distance while monitoring packet loss
- Record maximum reliable range
Hardware testing utilities to troubleshoot NRF24L01 connection issues.
Comprehensive hardware test that checks:
- SPI communication
- Register read/write operations
- Multiple pin configurations
- Power supply verification
Low-level SPI testing without RF24 library dependencies.
| Problem | Solution |
|---|---|
| "Radio initialization failed" | Check wiring, verify 3.3V power |
| No communication | Try different CSN pin (7 instead of 8) |
| Intermittent connection | Add 10Β΅F capacitor between VCC/GND |
| Range too short | Check antenna orientation, reduce interference |
See TROUBLESHOOTING.md for detailed solutions.
- Wiring Guide - Detailed connection diagrams
- Troubleshooting - Common issues and fixes
- API Reference - Code documentation
- Examples - Additional sample code
Contributions are welcome! Please feel free to submit issues, feature requests, or pull requests.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- TMRh20 for the excellent RF24 library
- Arduino community for inspiration and support
- NRF24L01 datasheet authors for technical specifications
- π Issues: GitHub Issues
- π¬ Discussions: GitHub Discussions
- π§ Email: adamivie@example.com
If you find this project helpful, please consider giving it a star! β
Made with β€οΈ for the Arduino community