El ESP32 es un microcontrolador con WiFi y Bluetooth integrado, muy potente y con entradas ADC (convertidor analógico-digital) que permiten leer voltajes y convertirlos en valores numéricos. El LM35 es un sensor de temperatura analógico cuya salida es directamente proporcional a la temperatura en grados Celsius: 10 mV/°C.
En este post aprenderemos a conectar el sensor LM35 a un puerto ADC del ESP32 para poder leer y mostrar la temperatura por la consola.
Prerequisitos
Proyecto | Descripción |
---|---|
Conversor análogo a digital | Este post proporciona una breve panorámica del procesamiento digital de la señal, donde vamos a centrarnos principalmente en las características del sistema ideal y también mencionaremos algunos métodos de conversion A/D. |
LM35 datasheet | En este post encontrara la hoja de datos del lm35, describimos el elementos, sus características y la forma de conexión |
analogRead() | Contienen un convertidor de analógico a digital multicanal de 10 bits. Esto significa que mapeará voltajes de entrada entre 0 y el voltaje de operación (5V o 3.3V) en valores enteros entre 0 y 1023. |
Conversión análogo a digital
He creado un post completo en donde realizamos la explicación de Conversor análogo a digital, damos los conceptos básicos y el paso a paso teórico en donde mostramos como de una señal análoga creamos los valores digitales, recomiendo leer un poco de este tema antes de continuar.
🔹 ESP32
Puede revisar los pines y caracteristicas adicionales del ESP32 en si Hoja de dato esp32

🧠 ¿Qué son los pines analógicos en el ESP32?
El ESP32 cuenta con 18 entradas analógicas distribuidas en dos ADCs (ADC1 y ADC2). Puedes usar cualquiera de los siguientes pines para leer valores analógicos:
Pines ADC1 (recomendados):
- GPIO 32
- GPIO 33
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
LM35
- El LM35 mide la temperatura interna y genera una señal de salida analógica (tensión continua).
- La relación es 10 mV por cada °C.
- Ejemplo:
- 25 °C → 250 mV
- 100 °C → 1 000 mV (1 V)
Para mas detalles, tenemos la hoja de datos de este componente para que tambien le den un repaso antes de seguir con el circuito.

Componentes necesarios
Componente | Cantidad | Descripción |
---|---|---|
ESP32 | 1 | Placa de desarrollo (DOIT DevKit V1, NodeMCU-32S, etc.) |
Sensor LM35 | 1 | Sensor de temperatura analógico |
Protoboard | 1 | Para montar el circuito sin soldar |
Cables jumper | 3 | Macho-macho |
Capacitor 100 nF (opcional) | 1 | Entre salida y GND para filtrar ruido |
Conexión LM35 con ESP32
El ESP32 funciona con 3.3V lógicos, pero su ADC puede leer hasta 3.3V en la entrada. Como el LM35 genera 10 mV/°C, incluso a 150°C serían solo 1.5V, así que no hay problema.
Conexión:
LM35 | ESP32 |
---|---|
Vcc | 3V3 |
GND | GND |
Vout | GPIO34 (ADC1_CH6) |
⚠️ Usamos un pin ADC recomendado como GPIO34, 35, 36 o 39, ya que son solo de entrada y no generan conflictos.

Esquema básico:
LM35 ESP32
(1) Vcc → 3.3V
(2) Vout → GPIO34
(3) GND → GND
(Si quieres estabilidad, coloca un capacitor de 100 nF entre Vout y GND)
Código para ESP32 (Arduino IDE)
// Pin donde conectamos el LM35
const int pinLM35 = 34; // GPIO34 (entrada ADC)
// Resolución ADC del ESP32
const float VREF = 3.3; // Voltaje de referencia del ADC
const int ADC_RES = 4095; // Resolución de 12 bits (0-4095)
void setup() {
Serial.begin(115200);
}
void loop() {
// Leer valor ADC
int lecturaADC = analogRead(pinLM35);
// Convertir a voltaje
float voltaje = (lecturaADC * VREF) / ADC_RES;
// Convertir voltaje a temperatura
float temperaturaC = voltaje * 100.0; // LM35: 10mV = 0.01V por °C
// Mostrar resultados
Serial.print("ADC: ");
Serial.print(lecturaADC);
Serial.print(" | Voltaje: ");
Serial.print(voltaje, 3);
Serial.print(" V | Temp: ");
Serial.print(temperaturaC, 2);
Serial.println(" °C");
delay(1000); // Esperar 1 segundo
}
Explicación del código
- pinLM35 → define el pin GPIO34 como entrada ADC.
- VREF y ADC_RES → valores para calcular el voltaje real leído.
analogRead()
→ obtiene un valor entre 0 y 4095 (resolución de 12 bits en ESP32).- Conversión:
lecturaADC → voltaje
usando regla de tres: Voltaje = (lecturaADC×VREF) / ADC_RESVoltajevoltaje → temperatura
multiplicando por 100 (porque 1°C = 0.01 V).
- Se envían los valores por Serial Monitor para ver en tiempo real.
Resultado esperado
En el Serial Monitor (115200 baudios) deberías ver algo así:
ADC: 315 | Voltaje: 0.254 V | Temp: 25.40 °C
ADC: 317 | Voltaje: 0.256 V | Temp: 25.60 °C
ADC: 320 | Voltaje: 0.258 V | Temp: 25.80 °C
Si calientas el sensor con los dedos o acercas una fuente de calor, el voltaje y la temperatura subirán gradualmente.