10 de julio de 2026 · 11 min

Estación meteorológica inalámbrica: sensor afuera, pantalla adentro

Un nodo exterior con DHT22 y NRF24L01 que transmite a un receptor con pantalla OLED y reloj DS3231. El proyecto perfecto para aprender radiofrecuencia — con el truco del capacitor que evita el 90% de las fallas.

arduinonrf24l01dht22oledproyectos

Este proyecto es un favorito de Instructables y foros de todo el mundo, y es nuestro preferido para explicar comunicación por radio: un nodo con sensor de temperatura y humedad instalado afuera (galería, patio, invernadero) que transmite cada pocos segundos a un receptor adentro con pantalla OLED, hora y fecha. Sin WiFi, sin router, sin apps: radio pura de 2.4 GHz con alcance de 30–100 metros.

Los dos módulos del proyecto

Nodo exterior (transmisor): Arduino Nano + DHT22 + NRF24L01, alimentado con fuente USB o pilas. Base interior (receptor): Arduino Nano + NRF24L01 + OLED SSD1306 + RTC DS3231.

Lista de compra

ComponenteCantidadPara qué
Arduino Nano2Uno por nodo
NRF24L012La radio de 2.4 GHz
DHT221Temperatura y humedad
OLED SSD1306 128x64 I2C1La pantalla
RTC DS32311Hora y fecha con precisión
Capacitor electrolítico 10 µF2El héroe silencioso (leé abajo)
Cables dupont H-H1 juego

El detalle que define el éxito: alimentar bien el NRF24L01

El NRF24L01 es el módulo con más fama injusta de “venir fallado”. La realidad: funciona a 3.3 V (¡no a 5 V!) y consume picos de corriente al transmitir que el regulador 3.3 V del Nano apenas banca. El resultado clásico: transmisiones que a veces llegan y a veces no, y un cliente convencido de que el módulo está roto.

La solución cuesta centavos: soldá (o enchufá) un capacitor de 10 µF directamente entre VCC y GND del módulo, lo más cerca posible de los pines. Ese capacitor entrega los picos que el regulador no llega a dar. Con eso, el 90% de los “NRF24 fallados” resucitan.

Conexionado

NRF24L01 → Nano (idéntico en ambos nodos):

Transmisor — DHT22: datos → pin 2, VCC → 5V, GND → GND.

Receptor — OLED y RTC (ambos I2C, comparten bus):

Código del transmisor

Instalá las librerías RF24 (TMRh20), DHT sensor library (Adafruit) desde el gestor del IDE.

#include <SPI.h>
#include <RF24.h>
#include <DHT.h>

RF24 radio(9, 10);           // CE, CSN
DHT dht(2, DHT22);
const byte DIRECCION[6] = "BYP01";

struct Paquete {
  float temperatura;
  float humedad;
};

void setup() {
  dht.begin();
  radio.begin();
  radio.openWritingPipe(DIRECCION);
  radio.setPALevel(RF24_PA_HIGH);  // MAX si hay distancia
  radio.setDataRate(RF24_250KBPS); // mas lento = mas alcance
  radio.stopListening();
}

void loop() {
  Paquete p;
  p.temperatura = dht.readTemperature();
  p.humedad = dht.readHumidity();
  if (!isnan(p.temperatura)) {
    radio.write(&p, sizeof(p));
  }
  delay(5000);  // el DHT22 no da mas de una lectura cada 2 s
}

Código del receptor

Sumá Adafruit SSD1306, Adafruit GFX y RTClib.

#include <SPI.h>
#include <RF24.h>
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <RTClib.h>

RF24 radio(9, 10);
Adafruit_SSD1306 oled(128, 64, &Wire, -1);
RTC_DS3231 rtc;
const byte DIRECCION[6] = "BYP01";

struct Paquete {
  float temperatura;
  float humedad;
};
Paquete p = {0, 0};

void setup() {
  oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  rtc.begin();
  // Descomenta UNA vez para poner en hora, despues volve a comentar:
  // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  radio.begin();
  radio.openReadingPipe(0, DIRECCION);
  radio.setPALevel(RF24_PA_HIGH);
  radio.setDataRate(RF24_250KBPS);
  radio.startListening();
}

void loop() {
  if (radio.available()) {
    radio.read(&p, sizeof(p));
  }
  DateTime ahora = rtc.now();

  oled.clearDisplay();
  oled.setTextColor(SSD1306_WHITE);
  oled.setTextSize(1);
  oled.setCursor(0, 0);
  char linea[24];
  snprintf(linea, sizeof(linea), "%02d/%02d/%04d   %02d:%02d",
           ahora.day(), ahora.month(), ahora.year(),
           ahora.hour(), ahora.minute());
  oled.print(linea);

  oled.setTextSize(2);
  oled.setCursor(0, 20);
  oled.print(p.temperatura, 1);
  oled.print(" C");
  oled.setCursor(0, 44);
  oled.print(p.humedad, 0);
  oled.print(" %");
  oled.display();
  delay(500);
}

Errores comunes

  1. NRF24 a 5 V. Lo quema o lo deja inestable. VCC va al pin 3.3V del Nano.
  2. Sin el capacitor de 10 µF. Transmisión intermitente, alcance ridículo. Ponelo siempre.
  3. OLED que no arranca: la mayoría usa dirección I2C 0x3C, pero algunas vienen en 0x3D. Si la pantalla queda negra, probá la otra.
  4. DHT22 leyendo NaN: falta la resistencia pull-up de 10 kΩ en el pin de datos (los módulos con placa ya la traen; el sensor “pelado” no).
  5. Alcance pobre: alejá el NRF24 de los cables del motor/fuente, y usá RF24_250KBPS como en nuestro código — menos velocidad, más alcance.

Para llevarlo más lejos

Todo el proyecto en un pedido

Los dos Nano, las radios, el DHT22, la OLED, el RTC y hasta el capacitor de 10 µF: está todo en electronicabyp.com.ar con envío a toda Argentina. ¿Dudas del conexionado? Escribinos por WhatsApp — este proyecto lo conocemos de memoria.


¿Necesitás los componentes de esta guía? Los encontrás en electronicabyp.com.ar — hacemos envíos a toda Argentina. Para cotizaciones por cantidad, escribinos por WhatsApp.