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.

¿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ística | Valor |
|---|---|
| Rango de medida | −55 °C … +125 °C |
| Precisión | ±0,5 °C (entre −10 °C y +85 °C) |
| Resolución | Seleccionable de 9 a 12 bits (0,5 °C … 0,0625 °C) |
| Tensión de alimentación | 3,0–5,5 V (compatible con Arduino, ESP32 y Pico) |
| Consumo | Aprox. 1 mA durante la medida, menos de 1 µA en reposo |
| Interfaz | 1-Wire (una línea de datos + GND) |
| Dirección | Código ROM de 64 bits; código de familia 0x28 |
| Encapsulado | TO-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ón | Paso | Tiempo máximo de conversión |
|---|---|---|
| 9 bits | 0,5 °C | 93,75 ms |
| 10 bits | 0,25 °C | 187,5 ms |
| 11 bits | 0,125 °C | 375 ms |
| 12 bits (por defecto) | 0,0625 °C | 750 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ística | DS18B20 | DHT11 | DHT22 | Termistor NTC |
|---|---|---|---|---|
| Rango de temperatura | −55 … +125 °C | 0 … 50 °C | −40 … +80 °C | Aprox. −40 … +125 °C (según el modelo) |
| Precisión | ±0,5 °C | ±2 °C | ±0,5 °C | Depende de la calibración |
| Salida | Digital (1-Wire) | Digital (una línea) | Digital (una línea) | Analógica (resistencia variable) |
| Humedad | No | Sí | Sí | No |
| Versión sumergible | Sí (sonda inoxidable) | No | No | Sí (sonda) |
| Varios sensores en un pin | Sí | No | No | No |
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
| Pin | TO-92 (cara plana hacia ti) | Cable de la sonda sumergible | Función |
|---|---|---|---|
| GND | 1 (izquierda) | Negro | Masa |
| DQ | 2 (centro) | Amarillo (blanco en algunas sondas) | Línea de datos 1-Wire |
| VDD | 3 (derecha) | Rojo | Alimentación de 3,0–5,5 V |
Conexión del DS18B20: Arduino Uno, ESP32 y Pico
| DS18B20 | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| VDD (rojo) | 5V | 3V3 | 3V3(OUT), pin 36 |
| GND (negro) | GND | GND | GND, pin 38 |
| DQ (amarillo) | D2 | GPIO 4 | GP22, pin 29 |
| Pull-up de 4,7 kΩ | Entre DQ y 5V | Entre DQ y 3V3 | Entre 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.
Instalar las librerías
- En el Arduino IDE abre Herramientas > Administrar bibliotecas.
- Escribe DallasTemperature en el buscador e instala la librería de Miles Burton.
- 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.
- 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
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ón | Qué 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_C | Valor 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:
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:
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.
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íntoma | Causa probable | Solución |
|---|---|---|
| La temperatura es −127 °C | Sensor no encontrado: falta la pull-up, cable roto, pin equivocado o VDD y GND invertidos | Revisa la resistencia de 4,7 kΩ y el cableado; comprueba si getDeviceCount() devuelve 0 |
| La temperatura siempre es 85 °C | Se 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 0 | Falta la pull-up en DQ o el número de pin del código es incorrecto | Revisa el número de pin y la resistencia, y usa cables cortos |
| El sensor se calienta mucho | VDD y GND están invertidos | Corta la alimentación enseguida y corrige el orden de los pines |
| La lectura cae a −127 de vez en cuando | Cable largo, pull-up débil o ruido | Baja 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 cambiado | El orden por índice depende de las direcciones, no de cómo están montados | Lee cada sensor por su dirección: getTempC(direccion) |
| El programa se traba y los pulsadores responden tarde | requestTemperatures() bloquea 750 ms en cada lectura | Usa setWaitForConversion(false) y millis() |
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.
Proyectos para hacer después de leer esto
Ver todos los proyectos
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.

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

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.

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

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.

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

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

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
Más artículos
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.

