Controlador WiFi (Esp32 + Home Assist)

23 Ago 2019
524
España
Provincia
Las Palmas
Muy buenas!
Voy a tratar de explicar un proyecto en el que ando metido a petición de un compañero. En este primer post daré las pinceladas sobre el sistema y su arquitectura y materiales. Más adelante, a medida avance el él y el tiempo me lo permita, iré colgando diferentes aspectos, problemática que me he encontrado y posibles soluciones.
El proyecto comenzó por la petición de ayuda de un amigo. Éste pensó en montar un controlador con un Arduino Uno y pantalla táctil, pero no tenía mucha idea de programación y necesitaba una mano, que le ofrecí. Esta idea primaria evolucionó, sin materializarse, a dónde andamos ahora.
Se trata de un sistema de control compuesto por un conjunto de sondas y sensores y un controlador domótico que permite la interacción y dota de cierta inteligencia al conjunto.

La idea era sencilla, capturar datos y volcarlos en una nube. Comenzamos la búsqueda de plataformas y microprocesador. Todo debía ser lo más fiable y a su vez barato posible. Tras no encontrar un servicio de nube que nos diese lo que buscábamos (4 sensores, registro de historico y nos costase cero euros), encontramos la posibilidad de instalar nuestro propio servidor Home Assistant, lo que nos abría un abanico de posibilidades de control y automatización. Así el sistema está compuesto por:
- un módulo (o varios) de sensores comandados por ESP32 con conexión WiFi.
- regletas wifi, cámaras y otros sensores compatibles con Tuya.
- un servidor Home Assistant para presentar los datos y realizar automatizaciones y alertas.

Les dejo unas primeras pantallas del sistema y poco a poco les iré hablando de los sensores y demás.
 

Archivos adjuntos

  • IMG-20211207-WA0010.jpeg
    IMG-20211207-WA0010.jpeg
    88,6 KB · Visitas: 43
  • Screenshot_20211207-093331.png
    Screenshot_20211207-093331.png
    108,8 KB · Visitas: 40
  • IMG_20211207_093426.jpg
    IMG_20211207_093426.jpg
    164,8 KB · Visitas: 42
23 Ago 2019
524
España
Provincia
Las Palmas
El módulo de sensores. Introducción.

La idea del módulo de sensores por supuesto surge de los grandes: Milwauke, Apex, GHL,...
El proyecto inicial se basó en este proyecto Arduino:

Pero buscábamos movilidad y sustituimos el Arduino Uno, y su almacenamiento en local, del proyecto original, por un Wemos D1 R32, con microprocesador ESP32 Wifi+bluetooth y un servidor Home Assistant, montado sobre Raspberry Pi3.
Ésto nos llevó a tener que buscar nuevas librerías o adaptar las existentes al nuevo microprocesador. Además, se produce una limitación de voltaje en los pines de entrada a 3v, lo que lleva a buscar sondas que trabajen en ese rango o añadir resistencias en serie a las de 5V para adaptar los voltajes y modificar las librerias.

Lo que mi amigo, en un principio, pensaba que sería algo trivial: conectar, copiar un código y a funcionar, para nada lo está siendo. Aunque encontramos cositas hechas para ESP32, que nos ahorran algo de tiempo, no nos libramos del polímetro, medir y modificar código. Sumado a mí falta de tiempo, se está convirtiendo un poco en la obra de La Sagrada Famila y voy mucho más lento de lo que desearía.

El primer escollo fue la mala calidad del convertidor analógico/digital del ESP32, que pierde unos 200mV con respecto a la tensión que ofrece el sensor. Para el caso de la sonda de pH se ha corregido con la calibración de la misma, pero he decidido montar un ADC externo para gestionar los 3 sensores analógicos: pH, ORP y EC. Esta decisión espero me dé mejor resolución y estabilidad en la medida, pero también me obligará a reestructurar otra vez el código y modificar librerías. Otro problema que me encontré fue el uso, como recomienda el tutorial, de un circuito aislador para conectar la sonda de pH. Producía una reducción del voltaje falseando la muestra casi en 1 punto de pH.
Aunque he usado el sensor pH de DFRobot V2, he cambiado la sonda por una de mejor calidad: Apera Instruments AI1301 201-C.

Las sondas de ORP y EC aún no están integradas. Su precio no es que sea barato precisamente y estoy pendiente de su adquisición. DFRobot acaba de sacar una sonda ORP con las mismas especificaciones que la de Milwaukee y un precio que ronda los 100€. La sonda EC debe ser específica para agua salada (K=10) y, además de no encontrarse con facilidad (creo que solo he visto la de DFRobot) su precio duplica a la de agua dulce y TDS (K=1).

Así, a modo resumen tenemos: un bloque compuesto por un ESP32, módulos y sondas de pH, ORP, EC y temperatura (DS18B20), circuitos aisladores, ADC y conectores.

Como módulo independiente he montado otro ESP32 con sensor de nivel para controlar el nivel de agua de relleno. Este módulo podría programarse con doble sensor y salida a relé para controlar una bomba o electroválvula, pero eso...para la versión 2.0.

Todo esto no tiene sentido si no podemos ver los datos y actuar sobre ellos. De eso se encarga Home Assistant, quien comunica con el módulo de sensores mediante protocolo MQTT.

Como ven, ésto aún se encuentra en evolución, adaptando ideas y soluciones a los problemas o necesidades que me encuentro mientras voy desarrollándolo. Aunque puedo ir ayudando a quien quiera embarcarse en el proyecto, el código no está lo suficientemente depurado para ser compartido en este momento. En éste punto del proyecto puedo asegurar que no es un proyecto "plugandplay" como pensaba mi amigo y quedan muchas cosas por hacer y definir.

Saludos!
 
24 Dic 2019
331
Sant Boi de Llobregat
Provincia
Barcelona
Vaya currada.
Te vas a fabricar tu propio Profilux.

Yo lo mismo me lio en algo más sencillito, como control de agua de reposición y temperatura en el acuario dulce que tengo; y principalmente a ver si engancho al crio en el montaje y programación.

Saludos
 
23 Ago 2019
524
España
Provincia
Las Palmas
Vaya currada.
Te vas a fabricar tu propio Profilux.

Yo lo mismo me lio en algo más sencillito, como control de agua de reposición y temperatura en el acuario dulce que tengo; y principalmente a ver si engancho al crio en el montaje y programación.

Saludos
Con becario mucho mejor 🤣🤣. Los míos aún son muy pequeños, de ahí también mí falta de tiempo y que tengo que recoger y guardar el material cada vez que hago pruebas y medidas, a demás de hacerlo con nocturnidad y alevosía.
 
23 Ago 2019
524
España
Provincia
Las Palmas
El módulo de sensores. Hardware.

Ya hemos hablado del la funcionalidad del módulo de sensores. Ahora para facilitar a quién quiera investigar este camino abierto, les facilito el listado hardware del mismo:

- Placa de desarrollo ESP32:
Existen muchos modelos de placas con ESP32 en el mercado, con diferentes características y configuraciones de número de entradas/salidas y otros periféricos. Mi decisión ha sido por precio y la posibilidad de disponer de varios pines 5V un modelo basado en WeMos D1 R32, ya que con ello eliminaba la necesidad de instalar un circuito DC/DC adicional para alimentar los sensores con 5V. Un circuito con posibilidad de obtener 5v directos de alimentación es el Firebeettle ESP32-E, que además tiene puerto para batería y circuito de carga USB, ideal para instalaciones pequeñas autónomas.

- Sonda Temperatura DS18B20 con encapsulado impermeable.
- Convertidor ADC ADS1015 (12bits) o ADS1115 (16bits)
Podríamos prescindir de él mediante la calibración adecuada de sondas, pero ganaremos en fiabilidad de medida, eliminando ruido de conversión propio del ESP32, cuyo ADC no responde con linealidad.

- Sondas:
- DFRobot Gravity PH Meter Pro Kit V2 SEN0169-V2
- DFRobot Gravity EC Meter K=10 DFR0300-H
- DFRobot Gravity ORP Sensor Meter PRO SEN0464
- Sensor de nivel de líquidos XKC-Y26-PNP/NPN o XKC-Y25-PNP/NPN

- circuitos aisladores DFR0504 ( 2 unidades)
- Resistencias varias ( 4k7, 5k1, 10k...)
- Cable dupont macho/hembra y macho/macho.
- Soldador y estaño.
- Machos y hembras PH2.0 (2, 3 y 4 pines)
- Grimpadora PH2.0

La elección de elementos de la familia Gravity, a pesar del posible sobre coste, elimina la necesidad de soldar y facilita el mantenimiento y sustitución de elementos en caso de averías, al tratarse de un sistema totalmente modular. Un accesorio que puede ser interesante en este concepto es el SHIELD DFR0762 para la placa FireBeettle, que permitiría simplificar todas nuestras conexiones, y utilizar esta placa como núcleo del proyecto, algo que me he percatado mientras buscaba la información para redactar estas líneas.

Como veis, este proyecto aún se encuentra evolucionando en mi cabeza en busca de simplicidad en la construcción, para que sea algo que cualquiera pueda realizar de forma sencilla. Aunque está definido el objetivo y llevo unos meses evaluando hardware , las opciones de hardware son tan diversas que dependiendo la decisión que tomemos en cierto momento pueden hacernos mucho más fácil, o no, su implementación. Yo... escogí el camino del "cables a medida, grimpado y soldador", también motivado por la búsqueda de un ensamblado final con el menor volumen posible, pero sin duda el uso de un SHIELD como el que les comento es un enorme avance y simplificación del proyecto. Tenedlo en cuenta si decidís emprender el camino del DIY.

Saludos!!
 

Archivos adjuntos

  • IMG_20211212_111416.jpg
    IMG_20211212_111416.jpg
    420,6 KB · Visitas: 17
23 Ago 2019
524
España
Provincia
Las Palmas
Presentación de datos y automatismos. Home Assistant.
Como hablamos con anterioridad la representación de datos, alertas y automatismos (toma de decisiones consecuente a los datos) correrá a cargo de un Servidor Home Assistant.

Home Assistant es un software de gestión de dispositivos IoT que nos permitirá gestionar todos aquellos dispositivos inteligentes conectados a nuestra red doméstica, incluido nuestro módulo de sensores. No voy a extenderme explicando que es, para que se usa y como se instala HA, ya que encontraréis en su propia web y otras plataformas muchísima información sobre ello.

Para el caso que nos ocupa, nuestro controlador de acuario he definido unas necesidades mínimas del sistema, simplificando el sistema en tres conceptos basicos:
- Sensores: captan y envían la información a evaluar. Sensores de nivel, temperatura, imagen, calidad del agua, humedad (rotura o desbordamiento del acuario), ....
- Actuadores: Regletas WiFi que nos permitirán activar o desactivar elementos en función de los datos, motores de persianas, relés, ...
- Núcleo: el cerebro de nuestro controlador, el HA. Se encargará de gestionar y evaluar los datos para realizar las acciones sobre los actuadores en función de nuestra programación de automatizaciones.

Fijaros que hablamos de un sistema completo, con capacidad de automatizaciones casi infinitas y toma de decisiones. Además, integramos no sólo información del acuario, también del resto de la casa.

En nuestro caso, la comunicación con nuestro módulo de sensores es bidireccional, ya que necesitaremos indicarle que queremos calibrar una sonda determinada y no sólo recibir los datos que capture. Para la realización de esta comunicación he empleado el protocolo MQTT.

Para aquellos que estén preocupados por el diseño de las cosas DIY, que siempre parece que nos suena a cables colgando a la vista y poco refinadas, les invito a ver Home Assistant Blue y cambiarán de opinión. Un servidor HA listo para usar y con una estética increíble.

Para los que puedan tener por casa una vieja Raspberry Pi3 o quieran hacerlo ellos mismo, esta es la mejor opción en calidad/precio. Mucho mejor en Pi4, pero al menos a mí, la diferencia de precio no me compensó.

Les comparto la pantalla de presentación de datos (otra vez) y un ejemplo de alertas/automatismos para la temperatura. Estás alertas envían una notificación cuando se alcanzan determinados valores de temperatura y pueden a su vez actuar sobre los enchufes del calentador/enfriador correspondiente.
Así, configuraremos alertas para cada sensor y sus acciones en consecuencia: redox y ozono, pH, salinidad. Por ejemplo, baja el redox y el pH, podemos alertar al móvil y activar un ventilador para mejorar la oxigenación de la zona cerrada del sump.

Para los más freaks e inmersos en el mundo de los asistentes, decirles que la integración de Google Home y Alexa es total y con poco esfuerzo podrían controlar su acuario por voz, por ejemplo para encender o apagar elementos, entrar en un modo limpieza, que Alexa te diga al oído el pH de tu acuario, ... 🤣🤣🤣

Saludos y hasta la próxima entrega! Que me estoy haciendo muy extenso!
 

Archivos adjuntos

  • Screenshot_20211210-123827.png
    Screenshot_20211210-123827.png
    68,4 KB · Visitas: 24
  • Screenshot_20211210-123705.png
    Screenshot_20211210-123705.png
    105,7 KB · Visitas: 24
  • IMG_20211201_204011.jpg
    IMG_20211201_204011.jpg
    223,9 KB · Visitas: 23
Arriba