domingo, 25 de octubre de 2026

ESP8266 y Wemos D1 mini, pequeño micro pero peleón.

ESP8266 y Wemos D1 mini. Un pequeño microcontrolador con WiFi para nuestros proyectos IoT

Bueno, en este post me gustaría hablaros sobre el ESP8266 y, concretamente, sobre la Wemos D1 mini, una pequeña placa que llevo tiempo viendo en multitud de proyectos de electrónica y domótica y que me parece muy interesante por las posibilidades que ofrece.

Muchos ya conoceréis este microcontrolador, pero puede que otros todavía no y ese es precisamente mi objetivo, darlo a conocer y enseñaros algunas de las cosas que podemos hacer con él.

Y es que, aunque actualmente tenemos otras opciones más potentes como el ESP32, el ESP8266 sigue siendo una alternativa muy interesante para un montón de proyectos. Tenemos WiFi integrado, podemos conectar sensores, controlar salidas y comunicarnos con otros dispositivos sin necesidad de añadir módulos externos.

En mi caso vamos a utilizar una Wemos D1 mini, una placa muy pequeña, económica y bastante cómoda para trabajar. Veremos sus características, cómo programarla, cómo leer un sensor analógico y, para terminar, cómo podemos integrarla en nuestro sistema domótico mediante ESPHome y Home Assistant.

Vamos al tomate jaja.

¿Qué es el ESP8266?



Digamos que el ESP8266 es un microcontrolador de 32 bits que incorpora conectividad WiFi. Es decir, tenemos un pequeño dispositivo capaz de ejecutar nuestros propios programas y conectarse a nuestra red inalámbrica sin necesidad de añadir un módulo WiFi externo.

¿Y para qué nos puede servir esto? Pues para muchísimas cosas: controlar luces, leer sensores de temperatura, monitorizar la humedad de una habitación, controlar un relé, montar una estación meteorológica o enviar información a nuestro servidor domótico.

Además, no necesitamos una Raspberry Pi o un Arduino conectado permanentemente para que funcione. Una vez programado, el ESP8266 puede trabajar de forma autónoma, siempre que le proporcionemos una alimentación adecuada.

La gracia de este microcontrolador es que podemos utilizarlo tanto para proyectos sencillos como para montar pequeños dispositivos IoT que se comuniquen con otros sistemas de nuestra red local.

¿¿Y cual es otra de las cosas Importantes?? 

Para lo que nos permite hacer es una placa Muuuuuuy ECONÓMICA.

¿Qué es la Wemos D1 mini?

La Wemos D1 mini es una placa de desarrollo basada en el ESP8266. Existen diferentes versiones y placas compatibles, pero las más habituales incorporan 4 MB de memoria Flash y un conector USB que nos permite alimentarlas y programarlas desde el ordenador.

Lo interesante es que, a pesar de su tamaño, incorpora prácticamente todo lo necesario para empezar a trabajar con ella: el propio microcontrolador, la memoria, el circuito de alimentación y el conversor USB-serie.

Por tanto, no tenemos que diseñar toda la electrónica desde cero. Podemos conectar la placa a una protoboard, añadir unos cuantos componentes y empezar a hacer pruebas.

Características principales

CaracterísticaWemos D1 mini
MicrocontroladorESP8266EX
ProcesadorTensilica L106, 32 bits
Frecuencia80 o 160 MHz
WiFi2,4 GHz, IEEE 802.11 b/g/n
Memoria Flash habitual4 MB
Entradas/salidas digitalesHasta 11, según las funciones utilizadas
Entrada analógica1, A0
Rango de A0 en la placa original habitualHasta unos 3,2 V
Nivel lógico de GPIO3,3 V
Alimentación habitual5 V por USB
Tensión de funcionamiento del chipAproximadamente 3,3 V
Dimensiones aproximadas34,2 × 25,6 mm

Estos datos corresponden a la Wemos D1 mini habitual. Si tenéis una revisión diferente o una placa compatible, conviene comprobar sus especificaciones, especialmente las relacionadas con la alimentación y la entrada analógica.

La documentación oficial de la placa se puede consultar aquí: LOLIN D1 mini.

¿Qué componentes encontramos en la placa?

Aunque no vamos a diseñar una placa desde cero, creo que merece la pena conocer qué tenemos entre manos.

  • ESP8266: es el microcontrolador encargado de ejecutar nuestro programa y gestionar la conexión WiFi.

  • Memoria Flash: almacena el firmware y otros datos del dispositivo.

  • Regulador de tensión: permite obtener los 3,3 V necesarios para el funcionamiento a partir de la alimentación USB en los modelos que lo incorporan.

  • Conversor USB-serie: permite que nuestro ordenador se comunique con el microcontrolador para cargar los programas.

  • Antena WiFi: normalmente está integrada en el propio módulo.

  • Pines GPIO: son las conexiones que utilizaremos para leer sensores y controlar componentes externos.

  • Entrada A0: nos permite medir una tensión analógica dentro del rango admitido por la placa.

Una cosa importante: aunque podamos alimentar la placa mediante USB a 5 V, eso no significa que sus entradas y salidas digitales trabajen a 5 V. Los GPIO del ESP8266 utilizan lógica de 3,3 V y no son tolerantes a 5 V.

Por tanto, mucho cuidado con conectar directamente señales de otros circuitos que trabajen a 5 V.

¿Qué consumo tiene el ESP8266?

Este es un tema interesante, sobre todo si queremos utilizar la Wemos D1 mini en un dispositivo que funcione con batería.

El consumo depende mucho de lo que esté haciendo el microcontrolador. No es lo mismo tenerlo conectado a una red WiFi transmitiendo datos que mantenerlo dormido la mayor parte del tiempo.

Como referencia, el chip puede consumir del orden de 80 mA en determinadas condiciones de funcionamiento. Durante las transmisiones WiFi aparecen picos que pueden rondar los 120–170 mA o incluso variar más según las condiciones.

Hay que tener en cuenta que estos valores corresponden al chip y a condiciones concretas. La placa completa puede consumir más debido al regulador, los LED y el resto de componentes.

¿Y qué ocurre si queremos reducir el consumo? Pues podemos utilizar los modos de ahorro energético del ESP8266, incluido el deep sleep. En este modo se desactiva la mayor parte de la actividad del sistema mientras espera el siguiente ciclo de trabajo.

Eso sí, si queremos despertar periódicamente desde deep sleep en la Wemos D1 mini, hay que tener en cuenta la conexión entre D0 (GPIO16) y RST, necesaria para el despertar temporizado en los diseños habituales.

Para un dispositivo que mida la temperatura cada varios minutos, envíe el dato por WiFi y vuelva a dormir, puede ser una solución bastante interesante. Para mantener una conexión WiFi activa de forma continua, en cambio, el consumo será considerablemente mayor.

Esquema de pines de la Wemos D1 mini

Vamos ahora con los pines, que son los que utilizaremos para conectar los diferentes componentes.

La placa utiliza nombres como D0, D1, D2 y así sucesivamente. Estos nombres corresponden a los GPIO internos del microcontrolador.


Pin de la placaGPIOUso habitual
D0GPIO16E/S digital y despertar desde deep sleep
D1GPIO5E/S digital, habitual para SCL
D2GPIO4E/S digital, habitual para SDA
D3GPIO0E/S digital; pin de arranque
D4GPIO2E/S digital; LED integrado en muchas versiones
D5GPIO14E/S digital; SPI SCLK
D6GPIO12E/S digital; SPI MISO
D7GPIO13E/S digital; SPI MOSI
D8GPIO15E/S digital; pin de arranque
RXGPIO3UART RX
TXGPIO1UART TX
A0ADCEntrada analógica
3V3—Alimentación de 3,3 V
5V—Línea de alimentación de 5 V
GND—Masa

No todos los pines están disponibles para cualquier uso en todas las circunstancias. Algunos intervienen en el arranque del microcontrolador y otros se comparten con funciones periféricas.

Para empezar, yo utilizaría D1 para el LED y A0 para el sensor analógico. De esta forma evitamos complicarnos demasiado con los pines de arranque.

¿Qué podemos hacer con la entrada analógica?

Aquí hay un detalle que conviene explicar porque puede dar algún disgusto si no lo tenemos en cuenta.

El ESP8266 incorpora un convertidor analógico-digital de 10 bits. Esto significa que podemos obtener lecturas entre 0 y 1023, que representan distintos niveles de tensión.

Sin embargo, el ADC interno del chip admite una tensión de entrada de aproximadamente 0 a 1 V.

La Wemos D1 mini habitual incorpora un divisor resistivo en su circuito de entrada A0, por lo que el terminal de la placa puede admitir aproximadamente hasta 3,2 V. Esto no es lo mismo que conectar una señal de 3,2 V directamente al ADC del chip: es la electrónica de la placa la que adapta esa tensión.

¿Y qué pasa si tenemos un sensor que entrega una señal de 0–5 V? Pues que necesitamos reducir la tensión antes de conectarlo a A0.

En el ejemplo que vamos a hacer utilizaremos un divisor resistivo externo. Aunque la Wemos D1 mini admite una tensión mayor en A0, reduciremos la señal a un máximo de 2,5 V para disponer de un margen de seguridad.

Vamos a encender un LED y leer un sensor analógico

Bueno, vamos con la parte práctica, de momento sencilla.

La idea es montar un pequeño circuito que nos permita comprobar que podemos controlar una salida digital y leer una entrada analógica con la misma placa.

Para ello vamos a necesitar:

  • Una Wemos D1 mini.

  • Un LED.

  • Una resistencia de 220–330 Ω para el LED.

  • Un sensor analógico con salida de 0–5 V.

  • Una resistencia de 10 kΩ.

  • Otra resistencia de 10 kΩ para el divisor de tensión.

  • Una protoboard y cables de conexión.

Si el sensor que vais a utilizar trabaja a 3,3 V o tiene una salida diferente, habrá que adaptar el circuito a sus características.

Conexión del LED

Conectaremos el pin D1 de la Wemos a una resistencia de 220–330 Ω y, desde ella, al ánodo del LED. El cátodo del LED irá conectado a GND.

La resistencia sirve para limitar la corriente y proteger tanto el LED como la salida del microcontrolador.

Conexión del sensor de 0–5 V

Para adaptar la señal utilizaremos dos resistencias de 10 kΩ formando un divisor de tensión.

La conexión será la siguiente:

  1. La salida analógica del sensor se conecta a una resistencia de 10 kΩ.

  2. El otro extremo de esa resistencia será nuestro punto de medida.

  3. Desde ese punto conectaremos la segunda resistencia de 10 kΩ a GND.

  4. El punto intermedio se conecta a A0 de la Wemos D1 mini.

  5. Uniremos GND del sensor con GND de la Wemos.

Con este divisor, una señal de 5 V se convierte en aproximadamente 2,5 V.

La fórmula que utilizamos es:


Si ambas resistencias tienen el mismo valor, la tensión se divide aproximadamente por dos.

OJO: comprueba que la salida del sensor puede conectarse de esta forma y que comparte una masa compatible con el circuito. No conectes los 5 V directamente a A0 ni a ningún GPIO. Si se trata de una señal industrial, una salida diferencial o un sensor con una salida especial, puede ser necesario utilizar un circuito de adaptación diferente.

Código para Arduino IDE

Vamos a programar la Wemos para que encienda el LED durante medio segundo, lo apague durante otro medio segundo y lea la tensión analógica del sensor.

const int LED_PIN = D1;
const int SENSOR_PIN = A0;

// Valores del divisor resistivo
const float R1 = 10000.0;
const float R2 = 10000.0;

// Rango nominal de A0 en la Wemos D1 mini
const float A0_MAX_VOLTAGE = 3.2;

void setup() {
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);

  Serial.begin(115200);
  Serial.println();
  Serial.println("Wemos D1 mini - ESP8266");
  Serial.println("Lectura de sensor analogico");
}

void loop() {
  // Encender y apagar el LED
  digitalWrite(LED_PIN, HIGH);
  delay(500);

  digitalWrite(LED_PIN, LOW);
  delay(500);

  // Leer el ADC
  int lectura = analogRead(SENSOR_PIN);

  // Estimar la tension presente en A0
  float tensionA0 =
      (lectura / 1023.0) * A0_MAX_VOLTAGE;

  // Calcular la tension original del sensor
  float tensionSensor =
      tensionA0 * (R1 + R2) / R2;

  Serial.print("Lectura ADC: ");
  Serial.print(lectura);

  Serial.print(" | Tension A0: ");
  Serial.print(tensionA0, 2);
  Serial.print(" V");

  Serial.print(" | Tension sensor: ");
  Serial.print(tensionSensor, 2);
  Serial.println(" V");
}

Este programa utiliza el rango nominal de aproximadamente 3,2 V de la entrada A0 de la Wemos D1 mini habitual. No es una calibración de precisión: las tolerancias de las resistencias, la placa y el ADC pueden producir diferencias.

Si queremos obtener medidas más precisas, podemos comparar la lectura con un multímetro y ajustar el valor de A0_MAX_VOLTAGE según el comportamiento real de nuestra placa.

Además, el código calcula la tensión del sensor, no su temperatura. Para convertir esa tensión en grados tendremos que conocer el modelo de sensor que estamos utilizando y su curva de respuesta.

¿Cómo cargamos el programa?

Primero conectaremos la Wemos D1 mini al ordenador mediante un cable USB de datos.

Después abriremos Arduino IDE y seleccionaremos la placa correspondiente. En el menú de placas, una opción habitual es LOLIN(WEMOS) D1 R2 & mini, disponible al instalar el paquete ESP8266.

Pulsamos en verificar para comprobar que el programa compila y, si todo está correcto, lo subimos a la placa.

Una vez terminado, abrimos el monitor serie y seleccionamos 115200 baudios. Deberíamos ver la lectura del ADC y la tensión calculada del sensor.

Si no aparece ningún dato, revisad el puerto serie, la velocidad configurada y que el cable USB permita transmitir datos.

¿Cómo programar el ESP8266? Te doy dos opciones

Aunque en el ejemplo anterior hemos utilizado Arduino IDE, tenemos otras posibilidades.

1. Arduino IDE

Es la opción que utilizaría para empezar a aprender a programar el microcontrolador.

Lo primero es descargar Arduino IDE desde su página oficial:

https://www.arduino.cc/en/software

Después debemos instalar el soporte para ESP8266.

En las preferencias del programa, añadiremos esta dirección al apartado de URLs adicionales del gestor de placas:

https://arduino.esp8266.com/stable/package_esp8266com_index.json

A continuación, abrimos el gestor de placas, buscamos ESP8266 e instalamos el paquete correspondiente.

Una vez instalado, seleccionamos la placa Wemos D1 mini, elegimos el puerto serie y ya podemos cargar nuestro programa. Os debería aparecer como en esta imagen que os adjunto.


Lo bueno de esta opción es que tenemos acceso a un montón de bibliotecas para trabajar con sensores, pantallas, comunicaciones WiFi, MQTT y otros componentes.

Documentación oficial: https://github.com/esp8266/Arduino

2. ESPHome




La segunda opción es ESPHome, que me parece especialmente interesante cuando nuestro objetivo es integrar el dispositivo en Home Assistant. Ojo la imagen anterior corresponde a otro de mis Scripts con un sensor de gas.

En lugar de escribir todo el programa en C++, definimos los componentes y su comportamiento mediante un archivo YAML. ESPHome se encarga de generar el firmware correspondiente.

Por ejemplo, podemos crear una configuración para la Wemos D1 mini que controle el LED y publique una lectura analógica.

esphome:
  name: sensor-wemos
  friendly_name: Sensor Wemos D1 mini

esp8266:
  board: d1_mini

wifi:
  ssid: "NOMBRE_DE_TU_WIFI"
  password: "CONTRASENA_WIFI"

logger:
  baud_rate: 0

api:

ota:
  - platform: esphome

sensor:
  - platform: adc
    pin: A0
    name: "Tension A0"
    id: tension_a0
    update_interval: 5s
    filters:
      - multiply: 3.2

switch:
  - platform: gpio
    pin: GPIO5
    name: "LED Wemos"
    id: led_wemos

En este ejemplo, ESPHome crea un sensor y un interruptor que podremos utilizar desde Home Assistant.

¿Que es eso del multiply? --->> El filtro multiply: 3.2 es una conversión orientativa para obtener la tensión aproximada en el terminal A0 a partir de una lectura normalizada de 0 a 1. Debe comprobarse con la versión de ESPHome y la placa utilizada, y no representa todavía la tensión original del sensor de 0–5 V.

Para mostrar la tensión del sensor, habrá que aplicar también la relación del divisor resistivo. En este caso, al utilizar dos resistencias iguales, la tensión original es aproximadamente el doble de la tensión presente en A0.

ESPHome dispone de documentación específica para el ADC y permite ajustar las lecturas mediante filtros:

https://esphome.io/components/sensor/adc/

La primera instalación suele hacerse por USB. Después, si hemos configurado correctamente el dispositivo, podremos realizar actualizaciones por WiFi.

ESP8266 frente a ESP32 y Raspberry Pi Pico W

Llegados a este punto, alguno se estará preguntando si merece la pena utilizar el ESP8266 teniendo alternativas más modernas.

Pues depende de lo que necesitemos. Aquí os dejo una tabla que me ha generado la IA de comparativas.

CaracterísticaESP8266ESP32 clásicoRaspberry Pi Pico W
Procesador32 bits, hasta 160 MHzDoble núcleo en el modelo clásico, hasta 240 MHzDoble núcleo, hasta 133 MHz
WiFiSíSíSí
BluetoothNoSí, según modeloNo en el Pico W original
ADC10 bitsHasta 12 bits, según modelo12 bits
GPIOMenos disponibles en muchos módulosMás opciones en muchas variantesAmplias opciones de E/S
Facilidad para proyectos IoTMuy buenaMuy buenaBuena
Uso habitualSensores y automatización sencillaProyectos más exigentesControl y experimentación

Hay que tener en cuenta que estas características corresponden a familias concretas. No todos los ESP32 tienen exactamente las mismas funciones y el soporte de periféricos depende de cada variante. Por ejemplo en mi caso he usado Weemos D1 mini, lleva montado ESP8266, pero existen diferentes variantes y versiones de la placa. 

Si vas a comprar alguna, mira las especificaciones del fabricante y lo que necesitas.

¿Por qué seguir utilizando el ESP8266?

Precio y tamaño. La Wemos D1 mini es pequeña y económica, por lo que resulta muy cómoda para montar dispositivos que después podemos instalar en una caja o integrar en un proyecto.

WiFi integrado. Si solo necesitamos conectividad WiFi, no hace falta añadir ningún módulo externo.

Compatibilidad. Tenemos soporte para Arduino IDE, bibliotecas de sensores y herramientas como ESPHome.

Suficiente para muchos proyectos. Si queremos leer una temperatura, controlar un relé compatible o enviar datos a Home Assistant, no siempre necesitamos la potencia adicional de un ESP32.

Ahora bien, si necesitamos Bluetooth, más memoria, más entradas analógicas o mayor capacidad de procesamiento, probablemente elegiría un ESP32 desde el principio.

No se trata de que un microcontrolador sea siempre mejor que otro, sino de elegir el que mejor se adapte a cada proyecto.

Integración en Home Assistant mediante ESPHome

Y aquí llegamos a una de las partes que más juego nos pueden dar si estamos metidos en el mundo de la domótica.

Con ESPHome podemos utilizar la Wemos D1 mini para crear nuestros propios sensores y actuadores y conectarlos con Home Assistant.

Por ejemplo, podemos montar un sensor de temperatura, monitorizar una señal analógica, controlar una iluminación de baja tensión o activar una salida cuando se cumpla una condición.

Una vez integrado, podremos consultar los valores desde el panel de Home Assistant y utilizarlos en nuestras automatizaciones.

¿Y cómo lo ponemos en marcha?

  1. Instalamos ESPHome y creamos un nuevo dispositivo.

  2. Seleccionamos la plataforma ESP8266 y la placa d1_mini.

  3. Configuramos la red WiFi y los componentes que queremos utilizar.

  4. Compilamos el firmware y lo cargamos por USB.

  5. Conectamos el dispositivo a la red y lo añadimos a Home Assistant mediante la integración de ESPHome.

  6. Comprobamos que aparecen las entidades correspondientes y empezamos a utilizarlas en nuestras automatizaciones.

A partir de ahí, las posibilidades dependen de lo que conectemos a la placa.

Podemos registrar la temperatura de una habitación, encender un ventilador cuando se supere un umbral o utilizar un sensor externo para activar una notificación.

Eso sí, si vamos a controlar cargas de 230 V o equipos que consumen bastante corriente, necesitaremos una etapa de potencia adecuada y las protecciones correspondientes. No debemos conectar ese tipo de cargas directamente a los pines del ESP8266.

También hay que tener presente que el ESP8266 dispone de menos recursos que el ESP32, por lo que algunas configuraciones complejas pueden requerir una plataforma más potente.

Documentación:

Conclusión

Como veis, tenemos muchas posibilidades con una placa tan pequeña como la Wemos D1 mini.

Podemos programarla desde Arduino IDE, conectar sensores, controlar salidas y comunicarnos por WiFi sin necesidad de añadir demasiados componentes externos.

Y si además la combinamos con ESPHome y Home Assistant, podemos crear nuestros propios dispositivos domóticos sin tener que desarrollar todo el sistema de comunicaciones desde cero.

Aunque el ESP32 ofrece más prestaciones, el ESP8266 sigue siendo una opción muy válida para proyectos sencillos donde no necesitamos tanta potencia.

Al final, lo interesante es aprovechar lo que tenemos y elegir el hardware adecuado para cada necesidad.

Espero que os haya resultado útil y que os animéis a probarlo. Os dejo también el link de otra de mis entradas usando el mismo Weemos D1 mini con un sensor de presión LINK.

En la siguiente entrada sobre ESP8266 os mostraré un proyecto que comencé hace tiempo de un tiesto inteligente. Combina ESP8266 con diferentes sensores y un display donde nos indica el estado del sustrato de nuestra planta. Añadiendo la guinda al pastel conectándolo a HomeAsistant.

¡Nos vemos en la siguiente entrada!


No hay comentarios:

Publicar un comentario