Wireless Chat Using Arduino & NRF24L01+ 2.4GHz RF Transceiver
It has been quite some time since I’ve tinkered with an Arduino, and this go around I decided to learn something new.
The [NRF24L01](http://amzn.to/3iFalxX(opens in a new tab)) 2.4GHz Transceiver is an extremely affordable wireless chip, I managed to pickup 10 units for around $12. This chip allows sending and receiving on the 2.4GHz wireless band .
Lucky for us there is a great Arduino library just waiting to be imported, thanks maniacbug !
So what did I set out to accomplish you ask? Why a chat application of course!


Components
- ARDUINO UNO R3
 - NRF24L01+ 2.4GHz Wireless RF Transceiver Module
 - 400 Pin Solderless Breadboard
 - Elegoo Multicolored Breadboard Jumper Wires
 - Arduino w/Breadboard Holder by superwoodle
 
Source Code
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define CE_PIN   9
#define CSN_PIN 10
const byte Address[5] = {'N','e','s','s','y'};
RF24 radio(CE_PIN, CSN_PIN);
String username = "";
String dataInput;
char dataToSend[32];
char dataReceived[32];
void setup() {
    Serial.begin(9600);
    Serial.println("Enter username...");
    radio.begin();
    radio.setDataRate(RF24_250KBPS);
    radio.setRetries(3, 5);
    radio.openWritingPipe(Address);
    radio.openReadingPipe(1, Address);
}
void loop() {
  // set username
  while (username == "") {
    if ( Serial.available() ) {
      username = Serial.readStringUntil('\n');
      Serial.print("Welcome ");
      Serial.println(username);
    }
  }
  // listen for radio data
  radio.startListening();
  if ( radio.available() ) {
    // read data from radio
    radio.read( &dataReceived, sizeof(dataReceived) );
    Serial.println(dataReceived);  
  }
  if( Serial.available() ) {
    // stop listening on radio
    radio.stopListening();
    // get serial input
    dataInput = "[" + username + "] " + Serial.readStringUntil('\n');
    Serial.println(dataInput);
    dataInput.toCharArray(dataToSend, 32);
    // send data
    radio.write( &dataToSend, sizeof(dataToSend) );  
  }
}