🛠 Nœud capteur sans fil : nRF24L01+ sur le bus SPI

Arduino Pro Mini · avance · Schéma : IMG-pro-mini-avance-8-promini-node-sans-fil.svg — Arduino Pro Mini 3,3 V pilotant un module nRF24L01+ via le bus SPI (broches 10 SS, 11 MOSI, 12 MISO, 13 SCK), condensateur de découplage sur l'alimentation du module, debug série via SoftwareSerial

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

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

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales