¿Qué puede hacer el sensor Sharp IR GP2Y0A21YK0F por nosotros? Fácil, te puede ahorrar mucho tiempo comprobando si queda gasoil en el tanque, si queda agua en el depósito o comprando una y otra vez si hay que echar sal o no al descalcificador.
Porque si hay algo que hace por nosotros Home Assistant y la domótica en general, es encargarse de todas esas tareas que nos quitan tiempo de nuestro día a día. Tareas repetitivas que cualquier sensor de 4€ lo puede hacer mucho mejor que nosotros.
Y de eso trata este tutorial, de demostrar cómo con un sensor Sharp IR GP2Y0A21YK0F, un poquito de ESPHome y una automatización de Home Assistant vas a poder olvidarte de comprobar si el descalcificador tiene sal o no.
Ahora sustituye sal por gasoil, agua o Lacasitos.
Vamos al lío.
Indice de contenidos
Video
Capítulos:
00:58 Componentes para fabricar un sensor de nivel con ESPHome
01:22 Cuál es el objetivo de este proyecto, de la domótica y de Home Assistant en particular
01:57 Tipos de sensores para poder medir distancias.
3:08 Cómo funcionan los sensores IR para medir distancias
4:09 Modelos de sensores IR para cada caso concreto
5:04 Cómo conectar el sensor IR con un ESP8266
7:50 Programación del proyecto con ESPHome
10:41 Integrar el sensor de nivel dentro de Home Assistant
Qué es el Sharp IR GP2Y0A21YK0F
Se trata de un sensor infrarrojo, de ahí lo de IR, que es capaz de medir la distancia y la detección de objetos. La idea que se esconde detrás de este sensor es muy parecida a la que utilizan otros sensores como los de ultrasonidos.
El sensor viene un un LED infrarrojo integrado. Para saber si hay un objeto delante y a que distancias se encuentra lo que hace es enviar un pulso de luz IR. La luz viaja hasta el objeto. Si lo encuentra la luz se refleja y regresa al detector que, gracias a una pequeña matriz CCD, la luz es captada.
Y aquí es donde viene la magia, porque dependiendo del ángulo de incidencia de la luz reflejada, por triangulación, el sensor puede saber más o menos a qué distancia se encuentra el objeto.
A ver, este tipo de sensores son lo que son y por el precio que tienen (ahora te hablaré de cuánto cuestan) no esperes tener un medidor de distancia muy preciso. Sin embargo, este sensor es muy útil si lo que te interesa es detectar si hay un objeto delante o saber si el nivel de agua, sal o Lacasitos ha variado de un momento a otro.
Dependiendo del ángulo de incidencia del haz de luz, el sensor proporciona un voltaje, esto se puede ver en la hoja de características técnicas del Sharp IR GP2Y0A21YK0F.
El problema que existe es que la salida no es lineal como puedes comprobar y esto hace complicado utilizar este sensor para medir las distancias. Lo más sencillo si lo va a utilizar con Arduino, con un ESP8266 o un ESP32 es utilizar una librería como SharpIR y así te olvidas de historias.
Qué modelo de sensor Sharp IR elegir
Aunque en este tutorial me voy a centrar en hablar del sensor Sharp IR GP2Y0A21YK0F, hay más modelos disponibles. Las diferencias entre unos y otros, aparte del tamaño, es el rango de distancias a las que llega cada uno de ellos.
Esto es importante porque si vas a utilizar el sensor Sharp IR GP2Y0A21YK0F para medir algún tipo de líquido o sustancia en un tanque, es primordial elegir el sensor adecuado para tu caso concreto.
Todos los modelos tienen un rango de acción que establece la distancia mínima y máxima con la que se puede utilizar el sensor Sharp IR. Esto quiere decir que por debajo de esa distancia los valores no serán correctos y por encima igual.
Veamos los diferentes modelos y sus rangos de acción.
Modelo | Mínimo | Máximo |
---|---|---|
GP2D120YK0F | 4 cm | 30 cm |
GP2Y0A41YK0F | 4 cm | 30 cm |
GP2Y0A21YK0F | 10 cm | 80 cm |
GP2Y0A02YK0F | 20 cm | 150 cm |
GP2Y0A710K0F | 100 cm | 550 cm |
Puedes comprar el sensor en Amazon, hay diferentes precios dependiendo del distribuidor y del modelo pero vamos, por menos de 10€ encuentras sensores como estos.
Conexión Sharp IR GP2Y0A21YK0F
Todos los modelos se conectan de las misma forma porque todos los modelos de sensor Sharp IR que hemos visto tienen una salida analógica. El esquema que voy a poner a continuación hace referencia al Sharp IR GP2Y0A21YK0F pero el resto de modelos se conecta igual.
Antes de conectar nada, estos sensores necesitan una alimentación de 5V. Te paso los diferentes esquemas de conexión según la placa que vayas a utilizar.
Conexión Sharp IR GP2Y0A21YK0F con Arduino
Conexión Sharp IR GP2Y0A21YK0F con ESP8266
Montaje del proyecto
La forma más sencilla de montar este proyecto para integrarlo en Home Assistant es utilizando una placa Wemos D1 Mini basada en el ESP8266. Esto no quiere decir que no puedas utilizar otra placa como NodeMCU o cualquier otra.
Si utilizo esta placa es debido a que tienen unos componentes llamados shields que nos permiten ensamblar todos los componentes de una forma muy sencilla. En concreto voy a utilizar un shield de prototipado.
Puedes comprar estos componentes en los siguientes enlaces:
- Wemos D1 Mini
- Shield prototipado
El objetivo es acoplar el shield del prototipado encima de la placa y soldar los tres cables del sensor sensor de una forma sencilla. Esto te permitirá tener un proyecto que quede más o menos curioso.
Y si quieres evitar que en tu casa te den una buena colleja, si tienes una impresora 3D puedes imprimir esta carcasa y entonces te van a ver como un auténtico friki de la ingeniería. Puedes descargar este diseño desde Thingiverse.
Deja el sensor fuera y pégalo con un trozo de cinta de doble cara.
Sigamos porque el siguiente paso es programar el proyecto y esto, gracias a ESPHome, vas a ver que es bastante sencillo.
Programación sensor Sharp IR GP2Y0A21YK0F con ESPHome
Importante. ESPHome es solo compatibles con placas ESP8266 y ESP32. ESPHome no es compatible con Arduino. Si quieres programarlo con esta placa utiliza la librería SharpIR.
Al tratarse de un sensor analógico la programación es bastante sencilla. Voy a obviar todo el proceso de ESPHome con el asistente y vamos a partir de un archivo de configuración básico.
En este caso voy a utilizar una placa Wemos D1 Mini ESP8266 donde voy a conectar el
El archivo de configuración 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 |
esphome: name: descalcificador esp8266: board: d1_mini # Enable logging logger: # Enable Home Assistant API api: password: "" ota: password: "" wifi: ssid: "SSID-TU-CASA" password: "CONTRASEÑA-TU-CASA" ap: ssid: "Descalcificador" password: "0UOwT1uPMMyY" captive_portal: |
Lo primero que añadimos es el componente ADC de ESPHome. Este componente nos permite leer un pin analógico que en el caso del ESP8266 solo hay uno, el A0.
Cambia el update_interval y pon un tiempo más bajo para que envíe los datos con más frecuencia. Por ejemplo, pon 5 segundos. También pon un nombre descriptivo. En mi caso
1 2 3 4 5 |
sensor: - platform: adc pin: A0 name: "Descalcificador" update_interval: 5s |
Y el segundo componente que te recomiendo añadir es el Web server, esto te permitirá acceder a los datos a través de una página web. Basta con añadir esta línea al archivo de configuración YAML.
1 |
web_server: |
El código final quedaría de esta manera.
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 |
esphome: name: descalcificador esp8266: board: d1_mini # Enable logging logger: # Enable Home Assistant API api: password: "" ota: password: "" wifi: ssid: "SSID-TU-CASA" password: "CONTRASEÑA-TU-CASA" ap: ssid: "Descalcificador" password: "0UOwT1uPMMyY" sensor: - platform: adc pin: A0 name: "Descalcificador" update_interval: 5s web_server: |
Sube el código y una vez subido te dará una dirección IP.
Copia la IP y ponla en un navegador, esto abrirá una web donde vas a poder ver la información del sensor.
Con esto ya podemos empezar el procedimiento para ajustar el sensor.
Procedimiento calibración
El procedimiento es muy sencillo, para medir o controlar la cantidad de sal o cualquier otra sustancia en un tanque a nosotros nos da lo mismo a qué distancia se encuentra. Lo que nos interesa es saber que tensión nos proporciona el sensor cuando el tanque está vacío y la tensión cuando el tanque está lleno.
Por lo tanto, vamos a empezar midiendo la tensión cuando el tanque esté vacío. Tienes que colocar el sensor en su sitio y dejarlo que mida el tiempo que sea.
Eso sí, ten en cuenta la distancia máxima a la que puede medir, en mi caso que voy a utilizar un sensor Sharp IR GP2Y0A21YK0F la distancia máxima son 80 cm lo que quiere decir que el tanque en vacío tiene que ser 80 cm o menos.
Esto nos proporcionará un valor de tensi Vmin que nos informa de cuando el tanque está vacío. El siguiente paso es medir el tanque cuando está lleno.
En este caso la distancia mínima son 10 cm para el sensor Sharp IR GP2Y0A21YK0F lo que quiere decir que por debajo de esa distancia mínima las medidas pueden ser erróneas.
Esto proporcionará una tensión máxima que nos servirá para indicar cuándo el tanque está lleno.
Ya solo nos queda una cosa y es integrar el proyecto en Home Assistant.
Integración con Home Assistant
La integración de cualquier dispositivo que utilice ESPHome es automática, es decir, una vez lo has configurado y se a conectado a la misma red donde está Home Assistant, lo detectará automáticamente. Esto lo podrás ver porque habrá lanzado una notificación.
Si haces clic sobre ella se abrirá, luego haz clic en Check it out.
Esto abrirá las integraciones y verás que ha detectado un dispositivo de ESPHome, haz clic en CONFIGURAR.
Confirma que quieres añadir el nodo de ESPHome haciendo clic en ENVIAR.
Puedes seleccionar un área para el dispositivo y luego hacer clic en TERMINAR.
Aparecerá la integración con un dispositivo, haz clic en 1 DISPOSITIVO.
Y accederás al proyecto que hemos creado en ESPHome con el sensor Sharp IR GP2Y0A21YK0F donde puedes ver la tensión.
Con esta información ya puedes crear un gráfica en el panel de control.
Selecciona la entidad, pon un nombre, pon el mínimo y máximo que has obtenido al ver la tensión en la web del dispositivo. También tienes que configurar la gráfica y poner los rangos verde, amarillo y rojo.
Por último puedes crear una automatización cuyo desencadenante sea Estado y que te avise si el nivel está en valor específico durante un tiempo determinado.
Como acción puedes hacer que te envíe una notificación al móvil ya sea vía app de Home Assistant o a través de Telegram.
Y con esto damos por terminado este tutorial donde hemos visto cómo podemos medir la cantidad de una sustancia en un tanque con un sensor Sharp IR GP2Y0A21YK0F capaz de medir la distancia. Esto se puede aplicar a un descalcificador para medir la sal, a un tanque de agua o a un tanque de gasoil.