En esta entrada vamos a ver como conectar la batería al puerto A0, para poder medir el nivel de batería y poder monitorizar el consumo y crear automatizaciones.
La finalidad de este proyecto, como he indicado, es el poder monitorizar el nivel de batería que tenemos en nuestro ESP Wroom 02, para poder tener nuestros proyectos o inventos con un control de batería. Esto lo conseguiremos conectando el positivo al puerto A0 y este, al divisor de tensión y al pin del ESP Wroom 02.
Al final de la entrada os dejo un vídeo, donde podréis verlo con detalle.
Necesitaremos lo siguientes:
- Soldador y estaño.
- ESP WROOM 02 con batería. Enlace.
- Cables fino.
- Resistencia de 680Kohms y 220Kohms
Lo primero que haremos será localizar las dos resistencias que deberemos de quitar, para poder soldar las nuevas. En la imagen, podremos observar dos resistencias SMD, que hacen de divisor de tensión, las cuales deberemos desoldar. Las podremos localizar, justo debajo de A0. Para poder desoldarlas, lo mas sencillo es echar estaño en la punta del soldador y ponerlo sobre la resistencia y esperar a que se desuelde. Lo mismo con la otra.

Una vez desoldadas, procederemos a soldar la de 680kohms en la parte superior y la 220kohms en la inferior. Revisad que no se hayan unido las pistas para evitar dañar el ESP.

Una vez listo, deberemos soldar un cable entre positivo y el pin A0. Una vez realizado esto, procederemos a cargar el código y para ello lo haremos como siempre, pulsando el botón «FLASH» y conectando el cable y poniendo el interruptor en ON.
Os dejo el código en ESPHome, para poder realizar la lectura de vuestra batería en Home Assistant. Os voy a dejar el código que estoy usando en el medidor de ultra sonidos para el deposito de gasoil.
Este código tiene un Deep Sleep, para el ahorro de batería, estando dormido durante 1439 minutos, lo que es lo mismo que 23.59 minutos y estando despierto 30segundos, haciendo lecturas una vez encendido cada 10 segundos, con lo que tendremos 3 lecturas cada 24horas.
esphome:
name: caldera-gasoil
esp8266:
board: esp_wroom_02
wifi:
networks:
- ssid: XXXXXXXXXXX
password: XXXXXXXXXXX
- ssid: XXXXXXXXXXX
password: XXXXXXXXXXX
ap:
ssid: sensor-consumo-gasoil
password: XXXXXXXXXXX
captive_portal:
api:
logger:
level: DEBUG
ota:
password: "XXXXXXXXXXX"
deep_sleep:
run_duration: 30s
sleep_duration: 1439min
globals:
- id: last_read_time
type: int
initial_value: "0"
- id: last_battery_read_time
type: int
initial_value: "0"
- id: device_state
type: int
initial_value: "0"
# Define sensors
sensor:
- platform: adc
pin: A0
name: "Nivel batería deposito gasoil"
update_interval: 10s
unit_of_measurement: "%"
accuracy_decimals: 2
icon: mdi:battery-medium
filters:
- multiply: 4.2
- calibrate_polynomial:
degree: 3
datapoints:
- 0.00 -> 0.0
- 3.00 -> 0.0
- 3.23 -> 10.0
- 3.33 -> 20.0
- 3.40 -> 30.0
- 3.48 -> 40.0
- 3.57 -> 50.0
- 3.65 -> 60.0
- 3.72 -> 70.0
- 3.80 -> 80.0
- 3.88 -> 90.0
- 4.15 -> 95.0
- lambda: |-
if (x <= 100) {
return x;
} else {
return 100;
}
- platform: ultrasonic
trigger_pin: GPIO12 # Ajusta el pin según corresponda en tu placa ESP8266
echo_pin: GPIO13 # Ajusta el pin según corresponda en tu placa ESP8266
name: "Nivel deposito gasoil"
update_interval: 10s
filters:
- calibrate_linear:
- 0.10 -> 700
- 1.20 -> 0
button:
- platform: restart
name: "reinicio medidor gasoil"
web_server:
port: 80