Práctica 2: XIAO ESP32C3 Sensores
En esta práctica, usamos una tarjeta XIAO ESP32C3 de Seeed Studio para leer un par de sensores, un Potenciómetro que es un sensor analógico y un DHT11, que es un sensor digital.
Materiales:
- 1x Seeed Studio XIAO ESP32C3
- 1x Potenciómetro 10kOhm
- 1x Sensor DHT11 o DHT22
- 1x Protoboard
- 6x Cables para Conexión
Paso 1: Preparar el entorno de desarrollo
Seleccionar la XIAO ESP32 C3 de la lista de tarjetas disponibles en el IDE de Arduino. (Debe haberse instalado en el IDE previamente)

Paso 2: Conocer el pinout de la XIAO ESP32C3
Consultamos el diagrama oficial de pines e identificamos los GPIO de salida que queremos utilizar.

Paso 3: Montaje del Potenciómetro
Conectamos el Potenciómetro, el cual cuenta con tres terminales: Lado 1, Wiper y Lado 2. El Wiper, la pata del centro siempre va hacia el microcontrolador, mientras que las otras dos van conectadas a 3.3V o a Tierra de forma indistinta, el orden de conexión sólo cambiará la dirección de giro hacia la cual el valor del Potenciómetro aumentará.
Al ser un elemento analógico, debemos leerlo desde un pin del microcontrolador con acceso al ADC interno. Dichos pines en el caso de la XIAO ESP32C3 están marcados por una bandera rosa numerados del A0 al A3.
Conectamos el Potenciómetro en orden 3.3V - GPIO2 - GND.

Paso 4: Conexión del Sensor DHTxx
Los sensores de la familia DHTxx son sensores digitales de temperatura y humedad ambiental. La diferencia entre el DHT11 y el DHT22 es simplemente la precisión de la medición que realizan, siendo el DHT22 el más preciso.
Para conectarlo, simplemente hay que proveer de 3.3V, un GPIO de lectura digital y conexión a Tierra.

Paso 5: Programación del Sistema
Queremos leer tanto el Potenciómetro como el Sensor DHTxx, por lo que aplicamos el siguiente código que toma dichos valores y los muestra en el puerto serie:
#include
#include // Librería para el sensor DHT
// ===== Configuración de pines =====
const int potPin = A0; // Pin analógico donde va el potenciómetro
const int DHTPIN = 6; // Pin digital donde va el sensor DHT11
// ===== Tipo de sensor DHT =====
#define DHTTYPE DHT11 // Modelo de DHT: DHT11 - Cambiar si se desea usar el DHT22
DHT dht(DHTPIN, DHTTYPE); // Objeto DHT
// ===== Variables de almacenamiento =====
float temperatura = 0.0; // Grados Celsius leídos del DHT11
float humedad = 0.0; // Porcentaje de humedad leído del DHT11
int valorPot = 0; // Valor crudo (0–4095) del potenciómetro
float voltPot = 0.0; // Voltaje calculado (0–3.3 V) del potenciómetro
void setup() {
// Inicia la comunicación serie a 115200 baudios
Serial.begin(115200);
while(!Serial) { /* Espera a que se abra el puerto serie */ }
// Inicializa el sensor DHT
dht.begin();
// Configura modos de pin
pinMode(potPin, INPUT); // Potenciómetro como entrada analógica
pinMode(DHTPIN, INPUT); // DHT11 usa su propia resistencia pull-up
}
void loop() {
// --- Lectura del potenciómetro ---
valorPot = analogRead(potPin);
// Con ESP32, analogRead devuelve 0–4095 en rango 0–3.3 V
voltPot = (valorPot / 4095.0) * 3.3;
// --- Lectura del sensor DHT11 ---
humedad = dht.readHumidity(); // Humedad en %
temperatura = dht.readTemperature(); // Temperatura en °C
// Comprueba si hubo error en la lectura
if (isnan(humedad) || isnan(temperatura)) {
Serial.println("Error: No se pudo leer el DHT11");
} else {
// Envía los datos por Serial en formato legible
Serial.print("Potenciómetro: ");
Serial.print(valorPot);
Serial.print(" | ");
Serial.print("Voltaje: ");
Serial.print(voltPot, 2); // 2 decimales
Serial.print(" V");
Serial.print(" || ");
Serial.print("Humedad: ");
Serial.print(humedad, 1); // 1 decimal
Serial.print(" % | ");
Serial.print("Temp: ");
Serial.print(temperatura, 1); // 1 decimal
Serial.println(" °C");
}
delay(1000); // Espera 2 segundos antes de la siguiente lectura
}
Paso 6: Sistema en funcionamiento!
Al abrir el puerto serial desde el Arduino IDE, podemos ver los valores solicitados.
Demostración del sistema funcionando.