Arduino NRF24L01

De The Linux Craftsman
Aller à la navigation Aller à la recherche

Partie électronique

Le composant

Le NRF24L01 utilise le protocole SPI pour communiquer et fonctionne sur la bande des 2.4GHz

NRF24L01.jpg
NRF24L01 diagram.jpg
NRF24L01 Broches

Le NRF24L01 intègre un contrôleur qui permet de modifier la puissance d'émission, le canal, de le mettre en mode veille, etc...

Le montage

Le montage suivant utilise 7 fils : 2 pour l'alimentation, 4 pour le SPI et 1 pin CE

NRF24L01 board diagram.png

N'oubliez pas qu'il faut le même montage de l'autre côté pour pouvoir émettre et recevoir...

Partie logicielle

Envoyer un message

Voila un exemple qui permet d'envoyer un message :

#include  <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

RF24 radio(7, 8);

char ON[] = "on";
char OFF[] = "of";
const uint8_t address[] = { 0x01, 0x02, 0x03, 0x04, 0x05 };

void setup(void) {
  Serial.begin(9600);
  if(!radio.begin()){
    Serial.print(F("Radio fail"));
    while(true);
  }
  radio.openWritingPipe(address);
  Serial.println(F("Ready"));
}

void loop(void) {
  radio.write(ON, sizeof(ON));
  delay(1500);
  radio.write(OFF, sizeof(OFF));
  delay(1500);
}

Recevoir un message

Voila un exemple qui permet de recevoir le message et d'allumer une LED sur la broche 3 :

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

RF24 radio(7, 8);

char msg[3];
const uint8_t address[] = { 0x01, 0x02, 0x03, 0x04, 0x05 };
int LED1 = 3;

void setup(void) {
  Serial.begin(9600);
  if (!radio.begin()) {
    Serial.print(F("Radio fail"));
    while (true);
  }
  radio.openReadingPipe(1, address);
  radio.startListening();
  pinMode(LED1, OUTPUT);
  Serial.println(F("Ready"));
}

void loop(void) {
  if (radio.available()) {
    radio.read(msg, sizeof(msg));
    Serial.println(msg);
    if (strcmp(msg, "on") == 0) {
      digitalWrite(LED1, HIGH);
    }else if (strcmp(msg, "of") == 0) {
      digitalWrite(LED1, LOW);
    }
    delay(100);
  }
}