En este tutorial voy a hablar de qué batería para ESP32 pueden ser interesantes en nuestros proyectos DIY. Bueno, también voy a hablar del ESP8266 y de ESPHome.
Pero el eje central del artículo es entender cómo alimentar las placas que utilizan un ESP32 o un ESP8266 pero sobre todo, qué batería para ESP32 y ESP8266 podemos utilizar.
Vamos al lío.
Indice de contenidos
- 1 Capítulos batería para ESP32 y ESP8266
- 2 La mejor batería para ESP32 y ESP8266
- 3 Alimentación ESP32 y ESP8266
- 4 Regulador de tensión placas ESP32 y ESP8266
- 5 Regulador Wemos Mini
- 6 Opciones de batería para ESP32 y ESP8266
- 7 Alimentación de un ESP32 o ESP8266 con pilas
- 8 Proyecto alimentación con pilas de un ESP32 o ESP8266
- 9 Programación con ESPHome
Capítulos batería para ESP32 y ESP8266
Por si quieres ir a tiro hecho, aquí te dejo los capítulos de este vídeo:
0:47 Los cuatro componentes para hacer este proyecto
2:24 Las tres formas de alimentar una placa basada en ESP32 o ESP8266
4:33 El regulador de tensión de las placas basadas en ESP32 y ESP8266
7:23 Regulador de tensión ME6211
8:42 Alimentación ESP32 con baterías LiPo
9:55 Alimentación ESP32 con baterías Li-ion
10:30 Alimentación ESP32 con baterías LiFePo4
10:58 Peligro de alimentar ESP32 con baterías de Litio
12:06 Cómo alimentar un ESP32 con pilas AA de 1,5V
13:16 Cuánto duran las pilas AA en un ESP32
15:34 Modo deep sleep ESP32 y ESP8266
21:12 Cómo medir la carga de la pila con el INA219
23:37 Cuánto consume un ESP32
La mejor batería para ESP32 y ESP8266
Para poder elegir una batería para ESP32 y ESP8266 lo primero es tener claro que esto dependerá, en gran medida, del tipo de placa que estemos utilizando. No es lo mismo utilizar un NodeMCU que una placa Wemos D1 Mini.
Aunque estos dos tipos de placas pueden utilizar un ESP32 o un ESP8266 como microcontrolador, cada una de ellas lleva una electrónica diferente y esto determina la batería que podemos utilizar.
Y cuando hablo de baterías aquí incluyo las pilas porque, como veremos en un momento, una de las mejores opciones es utilizar pilas alcalinas.
Pero empecemos por el principio, cómo se alimenta una placa basada en ESP32 o ESP8266
Alimentación ESP32 y ESP8266
Lo normal, cuando estamos programando un código ya sea con el framework de Arduino o con ESPHome, es que lo hagamos a través del puerto USB del ordenador. Aparte de poder subir el programa, por el puerto USB es por donde alimentamos la placa.
IMAGEN USB
Esta sería la forma más sencilla de poder alimentar nuestros proyectos con ESP32 y ESP8266 sin complicarnos mucho la vida, con un cargador de 5V y 1A sería más que suficiente. Los típicos de los teléfonos móviles valdrían.
Alimentar de este modo la placa nos permite alimentar otros componentes a través de los pines 3V3 y VBUS de la placa. En el caso del pin 3V3 vamos a poder alimentar componentes que funcionen a 3,3V y por el pin VBUS (también conocido como 5V o Vin) componentes que funcionan a 5V como el sensor Sharp IR GP2Y0A21YK0F.
Pero algo que no todo el mundo saber es que estos dos pines, 3V3 y VBUS, también sirven para alimentar las placas. De hecho, es una muy buena opción para utilizar una batería para ESP32 y ESP8266 como veremos más adelante.
Por el pin 3V3 vamos a poder alimentar con una fuente de 3,3V y por el pin VBUS vamos a poder alimentar, en principio, con una fuente de 5V.
Digo en principio porque como veremos un poco más adelante, es posible aplicar un rango de tensiones. Para entender todo esto es necesario entender cuál es la función de un regulador de tensión.
Regulador de tensión placas ESP32 y ESP8266
Los microcontroladores ESP32 y ESP8266 necesitan una tensión para funcionar como todos los componentes electrónicos. El recomendado es 3,3V, de ahí que cuando se trabaja con placas basadas en estos dos microcontroladores se hable tanto de esta tensión.
En realidad, pueden funcionar dentro de un rango de tensiones que van desde 2,5V a 3,6V para el ESP8266.
Para el ESP32 la tensión de operación va de 2,3V a 3,6V según la hoja de características técnicas pero lo ideal es que se alimente con 3,3V.
Entonces, si tanto el ESP32 como el ESP8266 funcionan como máximo a 3,6V ¿cómo es posible alimentarlos con 5V? Esto es gracias al regulador de tensión que, como su nombre indica, su función es regular la tensión.
Cuando alimentamos la placa a través del puerto USB o a través del pin VBUS, lo que sucede es que están conectados con el regulador de tensión que adecúa la tensión para obtener los 3,3V necesarios para alimentar el microcontrolador y los componentes que funcionan con esa tensión.
Por el contrario, cuando alimentamos la placa a través del pin 3V3 lo que hacemos es alimentar directamente el microcontrolador y los componentes.
Importante. Al no tener un regulador de tensión entre el pin 3V3 y el microcontrolador, la tensión que se suministre por este pin debe ser 3,3V estable, es decir, no puedes sobrepasar el máximo de los 3,6V que admiten el ESP32 y el ESP8266 porque podrías dañar el microcontrolador.
Y esto está cojonudo, porque gracias al regulador podemos alimentar con una tensión diferente a la tensión de operación del microcontrolador pero, ¿qué pasa con esos 2,7V que no se utilizan?
Aquí es donde está el verdadero problema porque como la energía ni se crea ni se destruye, solo se transforma, esos 2,7V van a la basura, es decir, que estamos desaprovechando parte de la energía que suministramos al proyecto.
Para saber con precisión con que tensión podemos alimentar a través del pin VBUS es necesario conocer el regulador que utiliza cada placa. En este sentido me voy a centrar en dos de las placas más populares por su facilidad de uso, Wemos D1 Mini V4 (ESP8266) y Wemos S2 Mini (ESP32).
Regulador Wemos Mini
Tanto la Wemos D1 Mini V4 como la Wemos S2 Mini utilizan el mismo regulador de tensión. Puedes verlo cuando miras estas dos placas porque es fácilmente reconocible.
Para saber el tipo de regulador que utilizan, hay que mirar en el esquemático de cada placa donde tienes el modelo concreto. En este caso es el ME6211.
Según la hoja de características técnicas, para obtener una tensión entorno a los 3,3V es necesario proporcionar una tensión de entre 3,5V y 6,5V.
Por lo tanto, ya tenemos un mínimo y un máximo de tensión que podemos suministrar a través del pin VBUS de la placa.
Ojo, esta tensión puede ser diferente para otras placas, es decir, para saber cómo alimentar a través del pin VBUS, Vin o 5V de una placa basada en el ESP32 o ESP8266, tienes que saber qué regulador utiliza y en base a sus características técnicas, sabrás qué tensión utilizar.
Ya tenemos dos puntos de partida para poder utilizar una batería para ESP32 y ESP8266:
- Pin V3V: alimentación con una tensión estable de 3,3V que tenga como mínimo 2,5V y como máximo 3,6V.
- Pin VBUS: alimentación con una tensión de entre 3,5V y 6,5V.
Importante. Si utilizas otro tipo de placa tendrás que hacer el mismo proceso, es decir, investigar sobre el regulador de tensión y ver las diferentes posibilidades para utilizar una batería para ESP32 y ESP8266.
Opciones de batería para ESP32 y ESP8266
Con toda la información recopilada vamos a ver las diferentes posibilidades que tenemos para alimentar con batería para ESP32 y ESP8266.
Peligro. Las baterías de iones de litio pueden ser peligrosas cuando se usan incorrectamente, un cortocircuito o un uso incorrecto pueden provocar un incendio o una explosión. Si no tienes experiencia con este tipo de baterías te recomiendo que no las utilices y si lo haces, es bajo tu responsabilidad.
Batería LiPo y Li-ion para ESP32 y ESP8266
Se trata de las típicas baterías que podemos encontrar en muchos sitios y que suelen venir marcadas con una tensión de 3,7V. Esto puede llevarnos a creer que quizás sea una buena alternativa de batería para ESP32 y ESP8266.
Sin embargo, la realidad es bien distinta, porque a poco que busques Internet y veas la curva de descarga de este tipo de baterías te darás cuenta que no es una buena opción.
Para empezar, la tensión cuando están cargadas al máximo superan esos 3,7V que indican llegando, según la temperatura, a alcanzar los 4,2V.
Y luego vemos que la descarga no es progresiva y que no se mantiene una tensión constante en prácticamente ningún momento.
Con esta información voy a analizar qué sucedería en el caso de que utilicemos una batería para ESP32 o ESP8266 de Litio o Li-ion por los dos pines de alimentación.
Pin 3V3 ESP32 y ESP8266
Por el pin 3V3 necesitamos tener una tensión estable entre la tensión de operación del ESP32 y el ESP8266 que es entre 2,5V y 3,6V.
En esta situación cuando la tensión estuviera por encima de los 3,6V, máximo que soporta el ESP32 y el ESP8266, se correría el riesgo de dañar el microcontrolador.
Tan solo cuando la tensión de la batería está entre 3V y 3,6V sería posible alimentar la placa lo que hace que sea imposible alimentar una placa por el pin 3V3 utilizando este tipo de baterías salvo que añadamos algún componente como un regulador de tensión extra.
Veamos qué sucede cuando alimentamos por el pin VBUS
Pin VBUS ESP32 y ESP8266
En el caso de alimentar la placa a través del pin VBUS utilizando una batería para ESP32 o ESP8266, es necesario ajustarse a la tensión de entrada del regulador de tensión ME6211 lo que nos limita a una tensión de entre 3,5V y 6,5V.
Si nos fijamos en la gráfica de descarga comprobamos de la batería, aprovecharíamos algo más la energía pero aún así, estamos desaprovechando, en muchos casos, bastante de su capacidades.
Veamos qué sucede con las baterías para ESP32 y ESP8266 que son LiFePo4.
Batería LiFePo4 para ESP32 y ESP8266
Utilizar una batería para ESP32 y ESP8266 LiFePo4 puede ser una buena opción para saltarnos el regulador de tensión ya que este tipo baterías suelen tener una curva de descarga bastante estable lo que hace imposible que se pueda utilizar a través del pin VBUS.
En la gran mayoría de casos la tensión máxima no supera los 3,5V y por eso no se puede utilizar a través del pin VBUS. Sin embargo, utilizar esta batería para ESP32 y ESP8266 es una posibilidad.
Aún así, vuelvo a repetir que utilizar una batería para ESP32 o ESP8266 de Litio puede ser muy peligroso si no se manipula con cuidado, un uso incorrecto pueden provocar un incendio o una explosión.
Si no tienes experiencia con este tipo de baterías te recomiendo que no las utilices y si lo haces, es bajo tu responsabilidad.
Sigamos porque hay una opción donde aunque no aprovechemos toda la carga de una batería es una opción bastante más sencilla y segura de alimentar un ESP32 o un ESP8266 sin la necesidad de conectar la placa a la red eléctrica.
Alimentación de un ESP32 o ESP8266 con pilas
La idea es poder alimentar una placa ESP32 o ESP8266 con pilas alcalinas del tipo AA. Este tipo de pilas tienen una tensión de 1,5V cuando están totalmente cargadas.
El objetivo es alimentar el proyecto a través del pin VBUS de la placa.
Con 1,5V no tendríamos ni para empezar pero podemos hacer una cosa, poner cuatro pilas en serie lo que hace que la tensión total sea de 6V lo que nos permite alimentar la placa por el pin VBUS porque está dentro del rango de la tensión de operación del regulador.
Si nos fijamos en la gráfica de descarga en la hoja de características técnicas de esta pila, vemos que comienza con una tensión de 1,6V lo que no supone ningún problema porque cuando estén totalmente cargadas las pilas, la tensión total será de 6,4V.
Por otro lado, podremos utilizar las pilas hasta que estén cerca de 1V ya que en ese momento, la tensión total será de 4V. Esto hará que desaprovechamos parte de la carga de las baterías pero es un mal menor.
Lo mejor de todo es que utilizando unas pilas alcalinas evitamos riesgos innecesarios en nuestra casa.
Ojo, utilizar una pila o batería para ESP32 o ESP8266 no es válido para todas las situaciones ya que este tipo de microcontroladores consumen una media de 80 mA lo que hace que sea totalmente imposible alimentar este tipo de proyectos con pilas o baterías durante mucho tiempo.
Para evitarlo es necesario utilizar el modo deep sleep o sueño profundo de estos microcontroladores, un estado donde quedan aletargados y se puede reducir el consumo hasta microamperios.
Vamos a ver un ejemplo para que quede claro este concepto.
Proyecto alimentación con pilas de un ESP32 o ESP8266
La idea es alimentar con unas pilas alcalinas AA un proyecto basado en ESP32 o ESP8266. Este proyecto consta de un sensor de temperatura SHT30 que envía la información a Home Assistant cada 30 minutos, es decir, toma las medidas, envía la información y entra en modo deep sleep.
Después de estar durante 30 minutos en modo ahorro de energía, se vuelve a despertar, envía los datos y de nuevo a dormir.
El material que vamos a utilizar para este proyecto es el siguiente:
- Wemos S2 Mini (ESP32)
- Shield sensor temperatura y humedad SHT30
- Shield prototipado
- Soporte 4 pilas AA
- 4 pilas alcalinas AA
Vamos a empezar con la Wemos S2 Mini, lo primero es soldar los pines para poder conectar el shield encima.
Luego el shield SHT30 lo soldamos con pines que nos permiten colocar un shield encima de este shield.
Y por último vamos a soldar los pines del shield de prototipado, también tienes que soldar el soporte de 4 pilas al shield de prototipado. A ver, podrías conectar el soporte directamente a los pines VBUS y GND, pero si quieres que no se desconecte en ningún momento, lo suyo es hacerlo bien y soldarlos en el shield de prototipado.
El cable negro del soporte para pilas se conecta en el pin GND y el cable rojo al pin 5V.
Al final el shield de prototipado y el soporte de 4 pilas quedaría así.
De momento no pongas las pilas porque primero hay que programarlo. Encaja todas las piezas y obtendrás un resultado como este.
El siguiente paso es darle vida al proyecto con ESPHome.
Programación con ESPHome
Si no sabes todavía qué es ESPHome y cómo empezar con esta plataforma, te recomiendo que vayas aquí e instales ESPHome en tu ordenador.
Una vez instalado puedes utilizar este código para programar este proyecto. La primera parte es la configuración de la placa y la conexión a la red WiFi.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
esphome: name: despachometeo32 esp32: board: lolin_s2_mini logger: api: ota: password: "" wifi: ssid: "TU SSID" password: "TU PASSWORD" ap: ssid: "Despachotemperatura" password: "0CJbnee3Q4t4" captive_portal: |
Importante. Sustituye TU SSID y TU PASSWORD por los datos de tu red WiFi.
Una vez configurada esta parte tenemos que configurar el sensor SHT30 utilizando el componente de ESPHome. Aparte del código para poder controlar el SHT30, he añadido un filtro para que calcule la media de 10 valores cada 5s.
También he añadido un evento para que cuando termine de medir la temperatura y la humedad, llame al módulo de deep sleep que veremos luego.
Por lo tanto, estará unos 50 segundos midiendo la temperatura y enviándola a Home Assistant para luego entrar en el modo deep sleep.
El código sería el siguiente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
i2c: sensor: - platform: sht3xd temperature: name: "Despacho Meteo Temperatura" filters: - median: window_size: 10 send_every: 10 send_first_at: 10 humidity: name: "Despacho Meteo Humedad" filters: - median: window_size: 10 send_every: 10 send_first_at: 10 on_value: then: - delay: 2s - deep_sleep.enter: id: deep_sleep_1 address: 0x45 update_interval: 5s |
Por último hay que añadir el módulo deep sleep según nos dice ESPHome en su documentación oficial. En este caso solo establecemos el tiempo en el que se mantendrá en modo deep sleep ya que el tiempo de ejecución normal viene determinado por el tiempo que tarda en obtener la media de la temperatura y la humedad.
1 2 3 |
deep_sleep: id: deep_sleep_1 sleep_duration: 30min |
Dentro de la documentación oficial de ESPHome vas a poder ver un método muy ingenioso para poder mantener el ESP32 despierto a través de mensajes MQTT. Esto es muy importante ya que mientras que el ESP32 esté en modo deep sleep no podrás hacer una actualización OTA.
Solo queda conectar las pilas y dejarlo en su lugar final, en Home Assistant aparecerá un nuevo dispositivo ESPHome, configúralo y a funcionar.
Y hasta aquí el tutorial, espero te haya servido y cualquier duda en los comentarios.
Gracias a Depositphotos por ceder los derechos de la imagen.