🛠 Nœud capteur sans fil : nRF24L01+ sur le bus SPI
Objetivos
Construir el montaje emblemático de la Pro Mini: un nodo de sensor con batería y radio nRF24L01+ — la arquitectura históricamente desplegada por la biblioteca MySensors en Pro Mini + nRF24L01+. Se cablea el módulo en el bus SPI por hardware (10 SS, 11 MOSI, 12 MISO, 13 SCK), se reservan dos pines para un debug serie por software (SoftwareSerial funciona en cualquier pin digital ya que el único UART por hardware sirve al programador) y se cuida la alimentación del módulo.
Material
- 1 × Arduino Pro Mini 3,3 V/8 MHz (recomendado: el nRF24L01+ es un componente de máximo 3,3 V)
- 1 × módulo nRF24L01+ (break-out de 6 u 8 pines)
- 1 × condensador electrolítico de 10-100 µF en desacoplo directamente sobre VCC/GND del módulo
- Alimentación: LiPo 3,7 V en RAW (≤ 12 VDC a través del regulador lineal integrado) o 3,3 V regulado externo en VCC
- Biblioteca RF24 (o MySensors); un segundo módulo en el PC/gateway para probar
- >
Código completo
// Reception nRF24L01+ via SPI materiel (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 serie 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);
}
}
Verificación esperada
El módulo emisor (otra Pro Mini o gateway USB) envía un mensaje cada segundo; el nodo lo muestra en la conexión SoftwareSerial a 9600 baudios, quedando el UART por hardware libre para la carga del programa a través del conector de 6 pines. Sin el condensador de desacoplo, se observan pérdidas aleatorias o reinicios en el momento de la emisión — volver a colocar el condensador hace desaparecer los fallos, lo que demuestra su función.
Errores frecuentes
- Alimentar el nRF24L01+ con 5 V: el módulo es de máximo 3,3 V; muchos módulos «break-out» no tienen ningún regulador y se dañan instantáneamente.
- Olvidar el condensador de desacoplo: los picos de emisión hacen caer la tensión, el nRF se reinicia silenciosamente — síntoma clásico de paquetes perdidos en ráfagas.
- Mover SCK/MISO/MOSI a otros pines: el SPI por hardware del ATmega328P está fijo en 13 SCK, 12 MISO, 11 MOSI (y 10 SS); solo CE y CSN son libres.
- Usar Serial (D0/D1) para el debug y sufrir colisiones con el auto-reset del puerto de programación: el único UART ya está dedicado al conector de 6 pines — de ahí SoftwareSerial.
- Alimentación RAW > 12 V: el regulador lineal integrado disipa la diferencia en forma de calor (12 V → 3,3 V = 8,7 V quemados); con LiPo, mantenerse por debajo de 12 V y limitar la potencia de radio.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.inoArduinobouton-poussoir.inoArduinopwm-fade.inoArduinocapteur-lumiere-ldr.inoArduinoservo-balayage.inoArduinoruban-neopixel.inoArduino