🛠 Nœud capteur sans fil : nRF24L01+ sur le bus SPI
Objectifs
Construire le montage emblématique de la Pro Mini : un nœud capteur sur batterie avec radio nRF24L01+ — l'architecture historiquement déployée par la bibliothèque MySensors sur Pro Mini + nRF24L01+. On câble le module sur le bus SPI matériel (10 SS, 11 MOSI, 12 MISO, 13 SCK), on réserve deux broches pour un debug série logiciel (SoftwareSerial fonctionne sur n'importe quelle broche numérique puisque l'unique UART matériel sert au programmateur) et on soigne l'alimentation du module.
Matériel
- 1 × Arduino Pro Mini 3,3 V/8 MHz (conseillé : le nRF24L01+ est un composant 3,3 V maximum)
- 1 × module nRF24L01+ (break-out 6 ou 8 broches)
- 1 × condensateur électrolytique 10-100 µF en découplage directement sur VCC/GND du module
- Alimentation : LiPo 3,7 V sur RAW (≤ 12 VDC via le régulateur linéaire embarqué) ou 3,3 V régulé externe sur VCC
- Bibliothèque RF24 (ou MySensors) ; un second module côté PC/gateway pour tester
- >
Code complet
// Reception nRF24L01+ via SPI matériel (13 SCK / 12 MISO / 11 MOSI)
#include <SPI.h>
#include <RF24.h>
#include <SoftwareSerial.h>
RF24 radio(9, 8); // CE=9, CSN=8 (libres de SPI)
SoftwareSerial dbg(6, 7); // debug série sans occuper D0/D1
const uint64_t PIPE = 0xF0F0F0F0E1LL;
void setup {
dbg.begin(9600);
radio.begin;
radio.openReadingPipe(1, PIPE);
radio.setChannel(100);
radio.setDataRate(RF24_1MBPS); // 1 Mbps plus robuste a 3,3 V
radio.setPALevel(RF24_PA_LOW); // puissance mini : menage la pile
radio.startListening;
dbg.println(F("noeud pret, ecoute..."));
}
void loop {
if (radio.available) {
char buf[32] = {0};
radio.read(buf, sizeof(buf) - 1);
dbg.print(F("msg: ")); dbg.println(buf);
}
}
Vérification attendue
Le module émetteur (autre Pro Mini ou gateway USB) envoie un message toutes les secondes ; le nœud l'affiche sur la liaison SoftwareSerial à 9600 bauds, l'UART matériel restant libre pour le téléversement via le connecteur 6 broches. Sans le condensateur de découplage, on observe des pertes aléatoires ou des resets au moment de l'émission — remettre le condo fait disparaître les pannes, preuve de son rôle.
Erreurs fréquentes
- Alimenter le nRF24L01+ en 5 V : le module est en 3,3 V maximum ; de nombreux modules « break-out » n'ont aucun régulateur et meurent instantanément.
- Oublier le condensateur de découplage : les pics d'émission font chuter la tension, le nRF se réinitialise en silence — symptôme classique des paquets perdus par salves.
- Déplacer SCK/MISO/MOSI sur d'autres broches : le SPI matériel de l'ATmega328P est figé à 13 SCK, 12 MISO, 11 MOSI (et 10 SS) ; seules CE et CSN sont libres.
- Utiliser Serial (D0/D1) pour le debug puis subir les collisions avec l'auto-reset du port de programmation : l'unique UART est déjà dévoué au connecteur 6 broches — d'où SoftwareSerial.
- Alimentation RAW > 12 V : le régulateur linéaire embarqué dissipe la différence en chaleur (12 V → 3,3 V = 8,7 V brûlés) ; sur LiPo, rester sous 12 V et limiter la puissance radio.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-poussoir.inoArduinopwm-fade.inoArduinocapteur-lumiere-ldr.inoArduinoservo-balayage.inoArduinoruban-neopixel.inoArduino