La utilidad de una báscula inteligente es obvia, nos puede ayudar a mantener el peso sobre todo ahora que se acercan las navidades. Pero también se puede utilizar para otras cosas.
De esto trata este tutorial, de hacer un proyecto donde vamos a coger una báscula digital y la vamos a convertir en una báscula inteligente e integrarla en Home Assistant gracias a ESPHome.
Esto nos va a permitir no solo tener un control sobre nuestro peso, porque gracias a lo que vas a poder ver aquí vas a poder saber cuánta cerveza queda en la despensa, si el cesto de la ropa sucia está lleno o si te estás quedando sin gas en la bombona de butano.
Ahora te explico cómo puedes hacerlo.
Indice de contenidos
- 1 Capítulos báscula inteligente con ESPHome y Home Assistant
- 2 Material báscula inteligente
- 3 Cables de la báscula inteligente
- 4 Conexionado báscula inteligente
- 5 Programación báscula inteligente ESPHome
- 6 Calibración báscula inteligente
- 7 Integración y automatización báscula inteligente con Home Assistant
Capítulos báscula inteligente con ESPHome y Home Assistant
A continuación te dejo los capítulos por si quieres ir a tiro hecho.
00:00 Introducción y mini curso gratuito
02:02 Esquema general báscula inteligente
04:51 Hack báscula digital
07:59 Amplificador HX711 compatible con ESP32 y ESP8266
10:21 Código ESPHome para el HX711
12:35 Calibración báscula inteligente HX711
15:25 Integrar báscula inteligente en Home Assistant
Material báscula inteligente
Lo primero es lo primero, ¡donde está el cagadero! No he podido resistirme jejejejejejeje. En serio, lo primero es ver el material que vamos a necesitar.
Una placa de prototipado, puedes utilizar la que te dé la gana ya sea basada en el ESP32 o en el ESP8266 pero yo utilizo esta.
Sensor de peso o amplificador HX711
En cuanto a las células de carga hay de diferentes tipos las que vamos a utilizar son las típicas que se utilizan las básculas inteligentes o básculas digitales.
Ojo con lo que compras, asegúrate que son las que necesitas porque algunas de ellas sirven para pesar colgando. También hay células de carga para un pesaje de precisión. Eso sí, cuánta más precisión más caras.
Una alternativa muy interesante es utilizar una báscula digital que puedes encontrar en cualquier chino o Amazon que ya vienen con las células de carga y el soporte. Es una opción muy interesante. Eso sí, si eliges esta opción tendrás que desmontarla para acceder a las células de carga.
Sea como sea, el proceso es el mismo.
Cables de la báscula inteligente
No voy a entrar en detalle porqué las conexiones de la báscula inteligente se hacen como se hacen porque todo esto lo explico en un artículo y vídeo que publiqué hace ya unos años sobre el amplificador HX711.
Lo que si que voy a explicar es cómo se tiene que conectar y para ello lo primero es identificar los tres cables que salen de cada célula de carga. Es tan sencillo que hasta un senador de esos goooordos lo va a entender.
Las células de carga simple que vamos a utilizar tienen tres cables cada célula. El color puede variar, en mi caso es rojo, blanco y verde pero en tu caso pueden ser otros colores.
La idea es poder identificar cada uno de esos cables para posteriormente conectarlos. Uno de ellos es la conexión central (C) y los otros dos el positivo (+) y el negativo. Para identificarlos sólo tienes que medir la resistencia que hay entre los cables con un tester o multímetro.
Por ejemplo, si mido entre los cables verde y blanco la resistencia es de 1kΩ.
Pero si mido entre los cables rojo y blanco la resistencia es de 2kΩ.
Esto quiere decir que el cable verde es el cable central porque la resistencia entre este cable y el blanco y rojo es de 1kΩ mientras que la resistencia entre los cables blanco y rojo es de 2kΩ.
Importante. En tu célula de carga puede que los colores sean diferentes. Mide la resistencia y apunta en un papel la correspondencia con los colores que he utilizado.
De este modo, los cables con sus colores quedarían de la siguiente forma.
Color | Positivo (+) | Negativo (-) | Central (C) |
---|---|---|---|
Rojo * | 🆗 | 🚫 | 🚫 |
Verde | 🚫 | 🚫 | 🆗 |
Blanco * | 🚫 | 🆗 | 🚫 |
* En realidad no hace falta identificar el positivo y el negativo, es indiferente cuál sea uno u otro.
Con esta información ya podemos conectar los cables con la báscula inteligente.
Conexionado báscula inteligente
El conexionado es bastante sencillo y lo primero es situar las cuatro células de carga formando un cuadrado. Si ya partes de una báscula digital ya las tendrás distribuidas de esta forma. Fíjate cómo se nombran.
Vamos a empezar por la célula superior izquierda (UL). Coge el cable blanco y lo conectas con el cable blanco de la célula que está en la posición inferior izquierda (LL). El cable rojo lo conectas con el cable rojo de la célula superior derecha (UR).
Importante. Haz la correspondencia con los colores de tus células porque no tienen porqué ser los mismos.
Conecta el cable rojo de la célula de carga inferior izquierda (LL) con el cable rojo de la célula inferior derecha (LR). Y el cable blanco de la célula inferior derecha (LR) con el cable blanco de la célula superior derecha (UR).
Con esto ya tenemos todos las células conectadas entre ellas. El siguiente paso es conectar las células de carga al HX711. Si miras el componente verás que tiene dos filas de conexiones. Una sirve para conectar las células de carga y otra para conectar al ESP8266 o ESP32.
De momento nos vamos a centrar en la parte que se conecta con las células de carga haciendo las siguientes conexiones:
- Cable verde célula superior izquierda al pin BLK.
- Cable verde célula superior derecha al pin WHT.
- Cable verde célula inferior izquierda al pin GRN.
- Cable verde célula inferior derecha al pin RED.
Por último nos queda conectar el HX711 al ESP8266/ESP32. Utiliza los siguientes pines:
- El pin VCC del HX711 al pin 3V3
- El pin GND del HX711 al pin GND
- El pin DAT del HX711 al pin D4 (GPI02)
- El pin CLK del HX711 al pin D3 (GPIO0)
Una vez montado todo el tinglao ya sea con las células de carga o con la báscula digital, el siguiente paso es el código de ESPHome.
Programación báscula inteligente ESPHome
Vamos a partir del típico código de cualquier nodo de ESPHome donde configuramos el propio nodo, la placa de prototipado que en mi caso es una Wemos D1 Mini basada en el ESP8266, la conexión con Home Assistant, actualizaciones OTA, conexión a la red WiFi y he añadido el componente web server para poder acceder al log a través de una página web.
El código de partida 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 26 27 28 29 30 31 32 33 34 35 36 |
substitutions: device_name: bascula friendly_name: Báscula Inteligente esphome: name: $device_name friendly_name: $friendly_name esp8266: board: d1_mini api: # Enable logging logger: # Set OTA password ota: password: "" platform: esphome # Setup WiFi credentials wifi: ssid: !secret wifi_ssid password: !secret wifi_password fast_connect: true # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: $device_name Fallback Hotspot password: "12345678" captive_portal: web_server: port: 80 |
Desde ESPHome nos proponen utilizar el componente HX711 para configurar la báscula inteligente de la siguiente forma.
Importante. Esto tienes que añadirlo al final del archivo de configuración YAML.
1 2 3 4 5 6 |
sensor: - platform: hx711 name: "Peso" dout_pin: D4 clk_pin: D3 update_interval: 10s |
Donde:
- platform: es la plataforma del sensor que en este caso es hx711.
- name: pon un nombre descriptivo al sensor.
- dout_pin: es el pin de la señal de salida al que has conectado el pin DAT del HX711. En mi caso es el pin D4.
- clk_pin: es el pin de la señal de reloj al que has conectado el pin CLK del HX711. En mi caso es el pin D3.
* Si has cambiado las conexiones del pin DAT y CLK del HX711 tienes que cambiarlo en el código.
Este sería el código básico de la báscula inteligente con ESPHome. Compila y súbelo a la placa porque una vez subido, el siguiente paso es la calibración.
Calibración báscula inteligente
Bien, una vez hemos cargado el código anterior de la báscula inteligente a la placa de desarrollo, tienes que conectarte a la web que genera para poder ver el log. La URL está compuesta por el nombre seguida de .local
El nombre viene dado por el parámetro device_name del código.
1 2 3 |
substitutions: device_name: bascula friendly_name: Báscula Inteligente |
Abre un navegador y pon la URL bascula.local y esto mostrará una página como esta.
La báscula tiene que estar sin peso en cima y te tienes que fijar en el valor que está dando. En mi caso es un valor negativo de 414510 que es el valor que no está proporcionando el HX711.
Para empezar que sea un valor negativo no importa porque eso se debe a que no hemos identificado y conectado correctamente los cables positivo y negativo de la célula de carga. Ahora veremos cómo se resuelve.
Ese valor nos va a valer como referencia del 0 kilogramos. El siguiente paso es colocar encima algo que sepas lo que pesa exactamente por ejemplo, un kilo de arroz o de lo que sea. Una vez lo pones encima dará un valor diferente.
Por lo tanto, ya tenemos el valor de referencia cuando no hay nada en la báscula y cuando tenemos 1KG. Con esto ya podemos calibrar la báscula inteligente. Lo único que tenemos que hacer es añadir lo siguiente al código del sensor HX711.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
sensor: - platform: hx711 name: "Peso" dout_pin: 33 clk_pin: 18 update_interval: 10s accuracy_decimals: 1 filters: - multiply: -1 - calibrate_linear: datapoints: - 384865.0 -> 1.0 - 414510.0 -> 0.0 unit_of_measurement: kg |
El primer parámetro es accuracy_decimals que establece el número de decimales del sensor.
Luego añadimos el parámetro filters para añdir dos filtros al sensor.
El primer filtro multiply nos permite multiplicar un valor por un escalar. En este caso lo que quiero es cambiar el signo y en vez de que sea negativo, que aparezca como positivo por eso lo multiplico por -1.
El segundo filtro clibrate_linear permite hace una calibración lineal y donde tenemos que poner el valor obtenido para el 0Kg y para 1Kg.
Por último con el parámetro unit_of_measurement añadimos las unidades de medida del sensor, kilogramos.
Una vez modificado el código hay que compilarlo y subirlo de nuevo. Ahora en vez de mostrar un número sin unidades muestra el peso el kilogramos con una precisión de un decimal.
El siguiente paso es integrar la báscula inteligente en Home Assistant.
Integración y automatización báscula inteligente con Home Assistant
La integración de la báscula inteligente en Home Assistant es inmediata siempre y cuando conectes la báscula a la misma red donde está conectado el servidor con Home Assistant.
Verás que aparece una nueva notificación, haz clic en check it out.
Esto abrirá las integraciones donde hay un nuevo dispositivo descubierto de ESPHome que corresponde con la báscula inteligente. Haz clic en AÑADIR.
Una vez añadido aparecerá dentro de la integración de ESPHome.
Si accedes verás los dispositivos y verás el que corresponde a la báscula inteligente. Entra en él.
Aparecerá el pero de lo que tengas encima de la báscula.
Y esto está bien, me refiero a que tener el peso dentro de Home Assistant puede quedar muy molón pero más molón es crear una automatización para que si baja el peso te avise si te has quedado sin cerveza, arroz o butano.
Para ello crea una nueva automatización y añade un disparador.
Selecciona el disparado entidad de tipo numérico.
Luego selecciona la entidad peso del dispositivo báscula inteligente que acabamos de integrar. Pon un umbral para que si detecta que está por debajo, lance la automatización.
Las acciones dependerán de lo que quieras hacer pero puedes enviar una notificación al móvil de que te estás quedando sin cerveza, añadir a la lista de la compra arroz o que suene por los altavoces inteligentes si te has pasado con la mandanga el fin de semana.
Y hasta aquí este tutorial, estoy seguro que se te ocurren mil ideas en las que puedes utilizar este proyecto, las puedes compartir con todos en los comentarios.
Gracias a Depositphotos por ceder los derechos de algunas de las imágenes.