Componentes · 11 min de lectura

Sensor de temperatura DS18B20 con Arduino, ESP32 y Pico

Cómo conectar el DS18B20 a Arduino: 1-Wire, pull-up de 4,7 kΩ, sonda sumergible, varios sensores en un pin, código OneWire y DallasTemperature, ESP32 y Pico.

El DS18B20 es un sensor de temperatura digital y una de las formas más precisas y flexibles de medir temperatura con Arduino. Mide de −55 °C a +125 °C, ofrece una precisión de ±0,5 °C entre −10 °C y +85 °C y envía el resultado como un número digital, no como una tensión analógica, así que la lectura no se degrada ni con cables largos. Su gran baza es la comunicación 1-Wire: puedes conectar decenas de DS18B20 a un único pin de datos y leer cada uno por separado mediante su propia dirección única.

En este artículo aprenderás cómo funciona el DS18B20, la lógica del bus 1-Wire, por qué necesita siempre una resistencia pull-up de 4,7 kΩ, la versión de sonda sumergible y los colores de sus cables. Después veremos paso a paso el código para uno y para varios sensores con las librerías OneWire y DallasTemperature, la lectura sin bloqueos en el ESP32 y su uso con MicroPython en la Raspberry Pi Pico. Al final encontrarás las causas y soluciones de los errores habituales de −127 °C y 85 °C.

Sensor de temperatura digital DS18B20
DS18B20: sensor de temperatura digital en encapsulado TO-92 de tres patillas. El mismo chip se vende también como sonda sumergible dentro de un tubo de acero inoxidable.

¿Qué es el DS18B20 y cómo funciona?

Dentro del DS18B20 hay un elemento sensor de temperatura, un convertidor analógico-digital, una pequeña memoria (scratchpad) y un número de serie único de 64 bits grabado de fábrica. Cuando el microcontrolador envía la orden de medida, el sensor mide la temperatura, guarda el resultado en su memoria como un número de dos bytes y espera a que lo lean. Como la medida la hace el propio sensor, no hay errores debidos a la entrada analógica de Arduino, a su tensión de referencia ni a la resistencia del cable. A diferencia de un termistor NTC, tampoco necesitas tablas de calibración ni fórmulas: el valor que lees está directamente en grados Celsius.

CaracterísticaValor
Rango de medida−55 °C … +125 °C
Precisión±0,5 °C (entre −10 °C y +85 °C)
ResoluciónSeleccionable de 9 a 12 bits (0,5 °C … 0,0625 °C)
Tensión de alimentación3,0–5,5 V (compatible con Arduino, ESP32 y Pico)
ConsumoAprox. 1 mA durante la medida, menos de 1 µA en reposo
Interfaz1-Wire (una línea de datos + GND)
DirecciónCódigo ROM de 64 bits; código de familia 0x28
EncapsuladoTO-92 (3 patillas) o sonda sumergible de acero inoxidable

La resolución del sensor se elige por software. A mayor resolución, pasos más finos pero también más tiempo de conversión. Por defecto son 12 bits, lo adecuado para la mayoría de proyectos; si necesitas lecturas muy rápidas, puedes bajar a 9 o 10 bits.

ResoluciónPasoTiempo máximo de conversión
9 bits0,5 °C93,75 ms
10 bits0,25 °C187,5 ms
11 bits0,125 °C375 ms
12 bits (por defecto)0,0625 °C750 ms

¿Qué es 1-Wire? Comunicación por un solo cable

Como su nombre indica, 1-Wire es un protocolo que transporta los datos por una sola línea, con la masa (GND) compartida. En el bus hay un maestro (el Arduino) y uno o varios esclavos (los DS18B20). Cuando el bus está libre, una resistencia pull-up lo mantiene en HIGH. Quien quiere hablar baja la línea a LOW durante instantes cortos; los bits se codifican en la duración de esos pulsos LOW, medida en microsegundos. Cada comunicación empieza con un pulso de reset, y los sensores responden con un pulso de presencia que viene a decir «aquí estoy».

Como ningún dispositivo fuerza la línea a HIGH (diseño en drenador abierto), puedes poner en el mismo bus tantos sensores como quieras sin conflictos. El maestro busca primero todas las direcciones de 64 bits del bus con una orden de búsqueda, después selecciona por su dirección el sensor que le interesa y habla con él. Así, para medir la temperatura en cinco puntos distintos gastas un solo pin en lugar de cinco.

DS18B20, DHT11, DHT22 y NTC: comparativa

CaracterísticaDS18B20DHT11DHT22Termistor NTC
Rango de temperatura−55 … +125 °C0 … 50 °C−40 … +80 °CAprox. −40 … +125 °C (según el modelo)
Precisión±0,5 °C±2 °C±0,5 °CDepende de la calibración
SalidaDigital (1-Wire)Digital (una línea)Digital (una línea)Analógica (resistencia variable)
HumedadNoSíSíNo
Versión sumergibleSí (sonda inoxidable)NoNoSí (sonda)
Varios sensores en un pinSíNoNoNo

En resumen, si también necesitas medir humedad, el DHT11 o el DHT22 es la opción correcta. Si vas a medir la temperatura del agua, de la tierra, de una tubería o de un congelador, quieres vigilar varios puntos con un solo pin o trabajar bajo cero, el DS18B20 no tiene rival.

Pines del DS18B20 y colores de los cables

PinTO-92 (cara plana hacia ti)Cable de la sonda sumergibleFunción
GND1 (izquierda)NegroMasa
DQ2 (centro)Amarillo (blanco en algunas sondas)Línea de datos 1-Wire
VDD3 (derecha)RojoAlimentación de 3,0–5,5 V
Si inviertes VDD y GND, el DS18B20 se calienta en pocos segundos hasta no poder tocarlo y se estropea. En la primera prueba toca el sensor con el dedo; si se calienta, corta la alimentación de inmediato y revisa el orden de los pines. Los colores de los cables pueden cambiar según el fabricante, así que si tienes dudas consulta el esquema del vendedor.

Conexión del DS18B20: Arduino Uno, ESP32 y Pico

DS18B20Arduino UnoESP32Raspberry Pi Pico
VDD (rojo)5V3V33V3(OUT), pin 36
GND (negro)GNDGNDGND, pin 38
DQ (amarillo)D2GPIO 4GP22, pin 29
Pull-up de 4,7 kΩEntre DQ y 5VEntre DQ y 3V3Entre DQ y 3V3

La resistencia pull-up es imprescindible en este circuito. Los dispositivos del bus 1-Wire solo pueden bajar la línea a LOW; es esta resistencia la que la devuelve a HIGH. Sin ella la línea queda al aire, el sensor no se encuentra y la librería devuelve −127 °C. Un valor de 4,7 kΩ sube la línea lo bastante rápido y mantiene baja la corriente: con la línea en LOW, según la ley de Ohm circulan I = 5 V / 4700 Ω ≈ 1,06 mA. Los colores de una resistencia de 4,7 kΩ de cuatro bandas son amarillo, violeta, rojo y dorado; para asegurarte puedes usar la herramienta de código de colores. Algunos módulos DS18B20 (el sensor en una placa pequeña con resistencia y LED) ya traen esta resistencia montada; en ese caso no hace falta añadir otra.

Con cables largos (a partir de unos 10 metros) la capacidad de la línea aumenta y la señal se vuelve lenta. En ese caso baja la pull-up a 3,3 kΩ o 2,2 kΩ, usa cable de par trenzado (por ejemplo un par de un cable CAT5) y conecta los sensores uno tras otro a lo largo de una línea principal, no en estrella. Con el cable y la resistencia adecuados, tiradas de decenas de metros funcionan sin problemas.

Instalar las librerías

  1. En el Arduino IDE abre Herramientas > Administrar bibliotecas.
  2. Escribe DallasTemperature en el buscador e instala la librería de Miles Burton.
  3. Cuando te pregunte por las dependencias, elige Install all para que también se instale la librería OneWire de Paul Stoffregen. Si no te lo pregunta, busca OneWire e instálala aparte.
  4. Si quieres, abre Archivo > Ejemplos > DallasTemperature > Simple, cambia el número de pin según tu circuito y pruébalo.

Primer código: leer un DS18B20

Arduino (C++)
1#include <OneWire.h>
2#include <DallasTemperature.h>
3
4#define ONE_WIRE_BUS 2                    // DS18B20 veri pini (DQ) / data pin (DQ)
5
6OneWire oneWire(ONE_WIRE_BUS);            // 1-Wire hattı / 1-Wire bus
7DallasTemperature sensors(&oneWire);      // sensör kütüphanesi / sensor library
8
9void setup() {
10  Serial.begin(9600);
11  sensors.begin();                        // hattaki sensörleri bul / find sensors on the bus
12  Serial.print(F("Sensor sayisi / Sensor count: "));
13  Serial.println(sensors.getDeviceCount());
14}
15
16void loop() {
17  sensors.requestTemperatures();          // ölçümü başlat, bitmesini bekle / start conversion and wait
18  float tempC = sensors.getTempCByIndex(0);  // ilk sensörün sıcaklığı / first sensor's temperature
19
20  if (tempC == DEVICE_DISCONNECTED_C) {   // -127: sensör yanıt vermedi / sensor did not respond
21    Serial.println(F("Hata: sensor yok / Error: no sensor"));
22  } else {
23    Serial.print(F("Sicaklik / Temperature: "));
24    Serial.print(tempC, 2);
25    Serial.println(F(" C"));
26  }
27  delay(1000);
28}
FunciónQué hace
sensors.begin()Explora el bus 1-Wire y registra los sensores que encuentra
sensors.getDeviceCount()Devuelve el número de sensores del bus
sensors.requestTemperatures()Envía la orden de medida a todos los sensores del bus y, por defecto, espera a que termine
sensors.getTempCByIndex(0)Devuelve la temperatura del primer sensor de la lista en grados Celsius
sensors.getTempFByIndex(0)Devuelve el mismo valor en Fahrenheit
sensors.setResolution(12)Ajusta la resolución entre 9 y 12 bits
DEVICE_DISCONNECTED_CValor devuelto cuando el sensor no responde: −127

Con el monitor serie a 9600 baudios verás cada segundo una línea como «Sicaklik / Temperature: 23.44 C». Te darás cuenta de que las últimas cifras cambian en múltiplos de 0,0625, el paso de la resolución de 12 bits. Si sujetas el sensor entre los dedos, la temperatura debería subir en pocos segundos. Si el monitor serie muestra −127, el sensor no se encuentra en absoluto; si muestra 85, el sensor se encontró pero se leyó antes de que terminara la medida. La solución de ambos casos está en la tabla del final del artículo.

Varios DS18B20 en el mismo pin

Para conectar varios sensores basta con unir en paralelo todos sus pines VDD, GND y DQ; para todo el bus se usa una sola resistencia pull-up de 4,7 kΩ. Leer con getTempCByIndex() es cómodo, pero el orden lo deciden las direcciones de los sensores, no el orden en que los conectaste. Si cambias un sensor, el orden puede variar. Por eso, en los proyectos permanentes conviene leer cada sensor por su propia dirección. El siguiente código encuentra todos los sensores del bus, muestra sus direcciones y lee la temperatura de cada uno por su dirección:

Arduino (C++)
1#include <OneWire.h>
2#include <DallasTemperature.h>
3
4#define ONE_WIRE_BUS 2                    // tüm sensörler aynı pinde / all sensors on the same pin
5
6OneWire oneWire(ONE_WIRE_BUS);
7DallasTemperature sensors(&oneWire);
8DeviceAddress addr;                       // 8 baytlık sensör adresi / 8-byte sensor address
9int count = 0;
10
11void printAddress(const DeviceAddress a) {
12  for (uint8_t i = 0; i < 8; i++) {
13    Serial.print(F("0x"));
14    if (a[i] < 0x10) Serial.print('0');   // tek haneyi sıfırla tamamla / pad single digit
15    Serial.print(a[i], HEX);
16    if (i < 7) Serial.print(F(", "));
17  }
18}
19
20void setup() {
21  Serial.begin(9600);
22  sensors.begin();
23  count = sensors.getDeviceCount();       // hatta kaç sensör var? / how many sensors on the bus?
24  Serial.print(F("Sensor sayisi / Sensor count: "));
25  Serial.println(count);
26  sensors.setResolution(12);              // hepsi 12 bit (0,0625 C) / all 12-bit (0.0625 C)
27}
28
29void loop() {
30  sensors.requestTemperatures();          // tüm sensörler aynı anda ölçer / all sensors convert at once
31  for (int i = 0; i < count; i++) {
32    if (!sensors.getAddress(addr, i)) continue;   // adresi al / get the address
33    Serial.print(F("Sensor "));
34    Serial.print(i);
35    Serial.print(F(" { "));
36    printAddress(addr);
37    Serial.print(F(" }: "));
38    Serial.print(sensors.getTempC(addr), 2);      // adrese göre oku / read by address
39    Serial.println(F(" C"));
40  }
41  Serial.println();
42  delay(2000);
43}

Ejecuta el código una vez y calienta los sensores uno a uno (por ejemplo, sujetándolos en la mano) para saber qué dirección corresponde a cada punto. Después escribe en tu código la dirección que viste en el monitor serie: añade una línea como DeviceAddress sensorAgua = {0x28, 0xFF, 0x64, 0x1E, 0x0F, 0x16, 0x03, 0x90}; y léela con sensors.getTempC(sensorAgua). En el DS18B20 el primer byte de la dirección siempre es 0x28, y el último es un CRC que comprueba que la dirección es válida. Así, sea cual sea el orden de los sensores, los valores de «agua», «exterior» o «caldera» siempre llegan del sitio correcto.

DS18B20 con ESP32: lectura sin bloquear el programa

El DS18B20 funciona en el ESP32 con las mismas librerías OneWire y DallasTemperature. Para la línea de datos, el GPIO 4 es una buena elección. No uses los GPIO 34–39, porque son solo de entrada y no pueden bajar la línea 1-Wire a LOW; evita también los GPIO 0, 2, 12 y 15, cuyo nivel influye en el arranque. Conecta siempre el sensor y la resistencia pull-up a 3V3: si llevas la pull-up a 5 V, estarás aplicando 5 V a un pin del ESP32.

Por defecto, requestTemperatures() espera 750 ms a 12 bits. Durante ese tiempo la placa no puede hacer nada más: el servidor web, los pulsadores o la pantalla se congelan. La solución es desactivar la espera con setWaitForConversion(false) y leer el resultado 750 ms después con millis(). En el siguiente código para ESP32, el LED sigue parpadeando con fluidez incluso mientras se mide la temperatura:

Arduino (C++)
1#include <OneWire.h>
2#include <DallasTemperature.h>
3
4const int ONE_WIRE_PIN = 4;               // ESP32 GPIO 4 (DQ)
5const int LED_PIN = 2;                    // dahili LED (çoğu kartta) / onboard LED (most boards)
6
7OneWire oneWire(ONE_WIRE_PIN);
8DallasTemperature sensors(&oneWire);
9
10unsigned long requestTime = 0;
11unsigned long lastBlink = 0;
12bool converting = false;
13
14void setup() {
15  Serial.begin(115200);
16  pinMode(LED_PIN, OUTPUT);
17  sensors.begin();
18  sensors.setResolution(12);
19  sensors.setWaitForConversion(false);    // requestTemperatures() beklemesin / do not block
20}
21
22void loop() {
23  unsigned long now = millis();
24
25  if (!converting) {
26    sensors.requestTemperatures();        // ölçümü başlat, hemen dön / start and return at once
27    requestTime = now;
28    converting = true;
29  }
30
31  if (converting && now - requestTime >= 750) {   // 12 bit için 750 ms / 750 ms for 12-bit
32    float t = sensors.getTempCByIndex(0);
33    if (t == DEVICE_DISCONNECTED_C) {
34      Serial.println("Sensor yok / No sensor");
35    } else {
36      Serial.printf("Sicaklik / Temperature: %.2f C\n", t);
37    }
38    converting = false;                   // bir sonraki ölçüme geç / move to the next reading
39  }
40
41  if (now - lastBlink >= 250) {           // bu arada LED yanıp söner / meanwhile the LED blinks
42    lastBlink = now;
43    digitalWrite(LED_PIN, !digitalRead(LED_PIN));
44  }
45}

Este patrón es especialmente importante en los proyectos Wi-Fi: el ESP32 puede medir la temperatura mientras sirve una página web, envía datos a internet o actualiza una pantalla. Si acabas de conocer el ESP32, consulta ¿Qué es el ESP32? para elegir pines y configurarlo; también puedes ver el mapa de pines de tu placa en la herramienta Pinout.

DS18B20 con Raspberry Pi Pico y MicroPython

Los módulos onewire y ds18x20 vienen incluidos en MicroPython para la Raspberry Pi Pico, así que no tienes que subir ningún archivo extra. Conecta el sensor a 3V3(OUT) y GND, la línea de datos a GP22, y no olvides la pull-up de 4,7 kΩ entre DQ y 3V3. Las resistencias pull-up internas de la Pico son demasiado débiles para 1-Wire.

MicroPython
1from machine import Pin
2import onewire, ds18x20, time, binascii
3
4ds_pin = Pin(22)                                   # DQ -> GP22 (fiziksel pin 29 / physical pin 29)
5sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
6
7roms = sensor.scan()                               # hattaki sensör adresleri / sensor addresses on the bus
8print("Sensor sayisi / Sensor count:", len(roms))
9
10while True:
11    sensor.convert_temp()                          # hepsi aynı anda ölçer / all sensors convert at once
12    time.sleep_ms(750)                             # 12 bit dönüşüm süresi / 12-bit conversion time
13    for rom in roms:
14        t = sensor.read_temp(rom)                  # adrese göre oku / read by address
15        print(binascii.hexlify(rom).decode(), "{:.2f} C".format(t))
16    time.sleep(2)

scan() devuelve una lista con las direcciones de 8 bytes de todos los sensores del bus. convert_temp() envía la orden de medida a todos los sensores a la vez, por eso después hay que esperar 750 ms. read_temp(rom) lee en grados Celsius la temperatura del sensor con esa dirección. Si la lista sale vacía, revisa primero la resistencia pull-up y el número de pin. Si acabas de conocer la Pico, consulta ¿Qué es la Raspberry Pi Pico? para instalar MicroPython.

La sonda sumergible DS18B20

La forma más popular del DS18B20 es la sonda sumergible, en la que el chip va dentro de un tubo de acero inoxidable sellado con resina. Suele tener una punta de 6 mm de diámetro y 50 mm de largo y un cable de tres hilos de 1 metro (también hay versiones de 2, 3 y 5 metros). Es ideal para acuarios, depósitos de agua, termos de agua caliente, tierra, frigoríficos y congeladores. Puedes meter la punta de acero en agua hirviendo un momento, pero como el cable suele ser de PVC, no mantengas el cable ni la unión mucho tiempo por encima de 85–100 °C. La funda de la sonda frena el paso del calor al sensor, así que tras un cambio brusco de temperatura la lectura puede tardar desde unos segundos hasta varias decenas de segundos en estabilizarse.

En el mercado hay muchas copias del DS18B20. Algunas no alcanzan la precisión especificada o no funcionan en modo de alimentación parásita. Meter dos sensores en el mismo vaso de agua y comparar sus lecturas es una forma sencilla de saber si el tuyo es fiable. Si difieren en más de 0,5 °C, puedes aplicar un pequeño valor de corrección (offset) en el código.

Ideas de proyectos con el DS18B20

  • Termostato para acuario: Enciende y apaga un calentador con la sonda sumergible y un módulo de relé; con histéresis mantienes el agua entre 25 y 26 °C.
  • Control de temperatura en varios puntos: Conecta cinco sensores a un pin y vigila a la vez la habitación, el exterior, el frigorífico y la ida y el retorno de la caldera.
  • Termómetro OLED: Muestra la temperatura con cifras grandes en una pantalla OLED, junto con la mínima y la máxima del día.
  • Indicador de temperatura con LCD: Escribe las lecturas de dos sensores en las dos líneas de una pantalla LCD I2C.
  • Página web de temperatura por Wi-Fi: Sigue en directo la temperatura medida por un ESP32 en una página web que abres desde el móvil.
  • Control de invernadero: Mide la temperatura del suelo con un DS18B20 y la humedad con un sensor de humedad del suelo para decidir cuándo regar.

Problemas frecuentes y soluciones

SíntomaCausa probableSolución
La temperatura es −127 °CSensor no encontrado: falta la pull-up, cable roto, pin equivocado o VDD y GND invertidosRevisa la resistencia de 4,7 kΩ y el cableado; comprueba si getDeviceCount() devuelve 0
La temperatura siempre es 85 °CSe leyó antes de terminar la medida o falta alimentación (85 °C es el valor de arranque)Espera el tiempo de conversión tras requestTemperatures(); alimenta VDD directamente
El número de sensores es 0Falta la pull-up en DQ o el número de pin del código es incorrectoRevisa el número de pin y la resistencia, y usa cables cortos
El sensor se calienta muchoVDD y GND están invertidosCorta la alimentación enseguida y corrige el orden de los pines
La lectura cae a −127 de vez en cuandoCable largo, pull-up débil o ruidoBaja la pull-up a 2,2–3,3 kΩ, usa cable trenzado y descarta las lecturas erróneas en el código
El orden de los sensores ha cambiadoEl orden por índice depende de las direcciones, no de cómo están montadosLee cada sensor por su dirección: getTempC(direccion)
El programa se traba y los pulsadores responden tarderequestTemperatures() bloquea 750 ms en cada lecturaUsa setWaitForConversion(false) y millis()
El DS18B20 también puede funcionar con solo dos cables en modo de alimentación parásita, con la patilla VDD unida a GND; en ese modo el sensor toma la energía de la línea de datos. Sin embargo, necesita una pull-up fuerte durante la medida, da problemas con las copias y no se recomienda por encima de 100 °C. Si puedes tender tres cables, usa siempre el modo de alimentación normal.

Por su robustez, su sonda sumergible y la posibilidad de conectar muchos sensores a un solo pin, el DS18B20 es uno de los sensores de temperatura más útiles de la electrónica de aficionado. Puedes mostrar la temperatura en una pantalla, encender un calentador o un ventilador con un relé o llevarla a internet con un ESP32. En la app BlueGrays encontrarás proyectos de medida de temperatura con DHT11 y NTC, pantallas LCD I2C, un registrador de temperatura con ESP32 y riego inteligente para Arduino y ESP32, con esquemas de circuito y código paso a paso.

Preguntas frecuentes

¿Qué resistencia necesita el DS18B20?

Entre la línea de datos (DQ) y la alimentación (VDD) del DS18B20 se coloca una resistencia pull-up de 4,7 kΩ. Basta una sola resistencia, da igual cuántos sensores compartan el bus. Si el cable supera unos 10 metros, bajarla a 2,2–3,3 kΩ hace la comunicación más estable.

¿Por qué el DS18B20 marca −127 grados?

−127 es el valor de error que devuelve la librería DallasTemperature cuando no recibe respuesta del sensor. Las causas más habituales son la falta de la resistencia pull-up, un número de pin equivocado, un cable roto o flojo y VDD y GND invertidos. Comprueba primero con getDeviceCount() si el sensor se detecta.

¿Por qué el DS18B20 marca 85 grados?

85 °C es el valor que tiene la memoria del DS18B20 al arrancar. Aparece cuando la temperatura se lee antes de que termine la medida o cuando el sensor no recibe suficiente energía durante la conversión. Se soluciona esperando el tiempo de conversión tras la orden de medida y alimentando el sensor directamente por el pin VDD.

¿Cuántos DS18B20 se pueden conectar a un pin de Arduino?

Como cada DS18B20 tiene una dirección única de 64 bits, en teoría muchos sensores pueden compartir un pin. En la práctica, hasta 10–20 sensores funcionan sin problemas; a partir de ahí hay que elegir con cuidado la longitud del cable, el valor de la pull-up y la alimentación. Todos los sensores comparten la misma línea de datos y una única resistencia pull-up.

¿El DS18B20 es sumergible?

El DS18B20 desnudo en encapsulado TO-92 no es resistente al agua. En cambio, la versión de sonda dentro de un tubo de acero inoxidable se puede sumergir en agua y otros líquidos o enterrar en la tierra. Como el cable de la sonda suele ser de PVC, hay que evitar que el cable y la unión estén mucho tiempo a temperaturas altas.

¿Qué es mejor, el DS18B20 o el DHT22?

Ambos ofrecen una precisión de ±0,5 °C, pero están pensados para usos distintos. El DHT22 mide la humedad además de la temperatura y es ideal para interiores. El DS18B20 no mide humedad, pero llega hasta −55 °C, existe como sonda sumergible y permite conectar varios sensores a un solo pin.

Ver todos los proyectos
Temperatura y humedad con DHT11
#55Intermedio

Temperatura y humedad con DHT11

Proyecto que mide la temperatura ambiente y el valor de humedad con el sensor DHT11 y lo muestra en la pantalla LCD I2C. Enseña el uso del sensor digital de temperatura / humedad.

4.7(47)
60
Medición de temperatura con NTC y pantalla LCD 2x16
#44Principiante
Premium

Medición de temperatura con NTC y pantalla LCD 2x16

El proyecto mide la temperatura ambiente con un termistor NTC y la muestra en grados Celsius en la pantalla LCD I2C. Enseña a calcular la temperatura a partir del valor analógico con la ecuación de St

4.5(33)
44
ESP32 DHT22 Temperatura y humedad (con pantalla LCD)
#117Intermedio
Premium

ESP32 DHT22 Temperatura y humedad (con pantalla LCD)

Se trata de un proyecto que mide la temperatura y la humedad ambientales mediante el sensor DHT22 y las muestra en tiempo real en una pantalla LCD I2C 16x2. Los datos del sensor se leen mediante el protocolo de un solo cable (one-wire) utilizando la biblioteca DHT de Adafruit. Este proyecto constituye la base para estaciones meteorológicas IoT, sistemas de automatización doméstica inteligente o sistemas de monitorización ambiental en invernaderos.

4.8(37)
53
Registrador de Temperatura ESP32 (DHT22 + DS1307 RTC + microSD + OLED)
#144Avanzado
Premium

Registrador de Temperatura ESP32 (DHT22 + DS1307 RTC + microSD + OLED)

¡Construye un registrador de temperatura con marca de tiempo con ESP32! Lee temperatura/humedad del DHT22 cada 10 segundos, obtén la hora real del DS1307 RTC y registra en tarjeta microSD como CSV. El OLED muestra en vivo la temperatura (fuente grande), porcentaje de humedad, marca de tiempo y contador de registros. El archivo `/temp_log.csv` en la tarjeta SD se abre en Excel, Google Sheets o Python pandas para análisis — perfecto para monitoreo de invernadero, seguimiento de temperatura del hog

4.7(7)
12
Uso de la pantalla LCD con I2C
#32Principiante
Premium

Uso de la pantalla LCD con I2C

Gracias al módulo I2C, el proyecto que imprime mensajes controlando la pantalla LCD con sólo 2 cables (SDA, SCL). Enseña cómo guardar pines con protocolo I2C.

4.8(53)
69
Pantalla LCD I2C para ESP32 (16x2)
#119Intermedio
Premium

Pantalla LCD I2C para ESP32 (16x2)

En este proyecto, mostramos texto conectando una pantalla LCD de 16x2 caracteres al ESP32 a través del protocolo I2C. Gracias al I2C, podemos controlar la pantalla con solo 2 pines de datos (SDA y SCL); así se elimina el desperdicio de pines que supone la conexión paralela clásica, que requiere más de 6 pines. El código imprime un mensaje fijo en la primera línea y un contador que aumenta cada segundo en la segunda línea. Además, al inicio ejecutamos el escáner I2C para mostrar la dirección de l

4.9(22)
39
Reloj matricial, calendario y estación meteorológica (MAX7219, DS1307)
#85Intermedio
Premium

Reloj matricial, calendario y estación meteorológica (MAX7219, DS1307)

DS1307 módulo RTC y DHT22 sensor de temperatura-humedad es un proyecto que muestra datos en tiempo real en MAX7219 8x32 pantalla LED de matriz de puntos. La pantalla muestra la temperatura en grados C

5.0(50)
66
Sistema inteligente de riego de plantas ESP 32
#139Avanzado
Premium

Sistema inteligente de riego de plantas ESP 32

En este proyecto se ha desarrollado un sistema de riego automático para plantas utilizando un ESP32 y un sensor de humedad del suelo. El sensor mide continuamente el nivel de humedad del suelo. Cuando la humedad cae por debajo del nivel establecido, el ESP32 activa el relé para poner en marcha la bomba de agua y regar la planta. Cuando el suelo está lo suficientemente húmedo, la bomba se detiene automáticamente. Gracias a este proyecto, las plantas se pueden regar de forma regular y se ahorra ag

4.7(10)
14

Aprende paso a paso a conectar el sensor de temperatura digital DS18B20 con un pull-up de 4,7 kΩ, usar la sonda sumergible, leer varios sensores en un solo pin y programarlo con Arduino, ESP32 y Pico.

Sensor de temperatura DS18B20 con Arduino, ESP32 y Pico | BlueGrays