Hacemos un controlador "inteligente" para el aire acondicionado en el ESP8266

Ha llegado el verano, con el calor, y también es hora de encender los aires acondicionados. Y si le gustan las tecnologías modernas y el hogar inteligente, entonces desea controlar el aire acondicionado de manera inteligente (o al menos de una manera moderna). A continuación hay una serie de notas sobre mi intento de integrar el clima en una casa con control de voz y una interfaz multiplataforma.

Desafío


Hay cuatro aires acondicionados en el departamento, debe aprender a manejarlos:

  • Desde la interfaz web (lo tengo en Home Assistant, girando en una Raspberry Pi separada, pero idealmente quiero una conexión simple a cualquier sistema);
  • Voz (Google Assistant lo hará, luego piense en Alice);
  • Guiones;
  • Barato ...

Estudio de mercado


Solución nativa


Quizás ni siquiera lo cuente. La decisión del fabricante de mis acondicionadores de aire implicó un montón de cables, al menos dos módulos adicionales por cada unidad y un precio de aproximadamente $ 200 por habitación. Además de un protocolo propietario, una aplicación antigua y todo eso. Tachar

Cielo sensibo


Aproximadamente $ 100 por habitación, funciona de forma nativa con Google Assistant e IFTTT, se ve hermoso, pero sigue siendo un poco caro.


tado ° - de manera similar (e incluso más caro).

Xiaomi Aqara / Mi Home, Broadlink RM Pro / Mini


Los transmisores IR universales, algunos teóricamente admiten los aires acondicionados necesarios "listos para usar", se integran con Home Assistant por la mitad, pero en general, una solución regular, aunque el precio ya está mucho más cerca del asequible ($ 20-35 por habitación, dependiendo de las capacidades ) Sí, y las aplicaciones en chino (en algunos casos) no son a lo que aspiraba.


Bricolaje


La forma más barata y flexible, de la que hablaré más.

Selección de componentes


Hay algo en qué pensar, pero en general necesitaremos:

Hierro


Controlador


Estúpidamente tomamos ESP8266, y por simplicidad de firmware y fuente de alimentación, usaremos D1 mini. Obviamente gestionaremos el sistema a través de WiFi.


Transmisor IR


Para el prototipo, utilizaremos un LED IR simple, resistencia y un transistor, luego pensaremos en cómo se puede mejorar.

Sensor de temperatura


Es más divertido, puede establecer la temperatura objetivo y hacer el encendido / apagado automático. Para comenzar, tome estúpidamente DHT22.


Pantalla


Mostraremos el estado actual del sistema (para la depuración), y tal vez la dirección IP actual (¿será útil?).


Software


IDE


Implementaremos todo en Arduino IDE (con el que nunca he trabajado antes) usando bibliotecas abiertas.
Mucho más tarde, cuando el proyecto ya estaba funcionando, cambié a Visual Studio Code con el complemento PlatformIO .

Protocolo


Nos comunicaremos con Home Assistant a través de MQTT (biblioteca PubSubClient ), porque Es un protocolo abierto y tiene un componente especial.

La configuración se verá, por ejemplo, algo así:

climate: - platform: mqtt name: Living Room HVAC modes: - "off" - "auto" - "heat" - "cool" - "dry" - "fan" swing_modes: - "auto" - "off" fan_modes: - "auto" - "low" - "medium" - "high" mode_command_topic: "livingroom/meteo/mode/set" mode_state_topic: "livingroom/meteo/mode" temperature_command_topic: "livingroom/meteo/target/set" temperature_state_topic: "livingroom/meteo/target" fan_mode_command_topic: "livingroom/meteo/fan/set" fan_mode_state_topic: "livingroom/meteo/fan" swing_mode_command_topic: "livingroom/meteo/swing/set" swing_mode_state_topic: "livingroom/meteo/swing" current_temperature_topic: "livingroom/meteo/temperature" 

Gestión


La biblioteca HeatpumpIR nos ayudará a enviar señales al aire acondicionado (el modelo del aire acondicionado todavía está codificado).

Misceláneo


Necesitará más bibliotecas para el temporizador , para trabajar con el sensor de temperatura y con la pantalla , pero estos son pequeños. Agregaremos WiFiManager y ArduinoOTA con el gesto habitual para actualizar el firmware a través de la interfaz web, y no USB.

Prototipo (00)


Compramos componentes aleatorios en aliexpress, los juntamos en una placa de engaño y probamos la idea.


Entendemos que:

  • La pantalla se ordenó demasiado grande y tiene demasiadas patas.
  • Un LED no llega muy lejos y no es muy confiable.

¡Pero en general la idea funciona! El componente HVAC "nativo" aparece en la interfaz de Home Assistant, lo que significa que el control desde cualquier parte del mundo ya está en nuestro bolsillo. La integración nativa de Home Assistant con Google Assistant agrega comandos de voz y comentarios: puede preguntarle al asistente sobre la temperatura en la habitación y él responderá tanto el objetivo como la temperatura actual.


El cambio de la temperatura objetivo, la velocidad de soplado y el modo de aire acondicionado en la interfaz web también están en su lugar (y, lo más importante, ¡funciona!).


Muestra de prueba (01)


Cambiemos un par de componentes: solicite una pantalla más pequeña y trabaje a través de I2C (y usaremos una biblioteca diferente ).


También reemplazamos el LED IR con un módulo listo para usar.


Resultó que no vale la pena pedir módulos con un LED (en la foto de la izquierda) en aliexpress: no contienen un transistor, y una de las patas (VCC) que tienen es esencialmente una farsa.

Pero si solicita un módulo con dos LED (en la foto de la derecha), entonces todos los componentes necesarios ya están en su lugar, y dicho módulo se conecta de forma fácil y natural, y termina un poco más.

También era hora de poner todo junto en mi placa de circuito impreso ... Fue uno de los momentos más difíciles para una persona que nunca diseñó placas de circuito impreso, y seguro que hice todo mal.


Para el diseño, utilicé EasyEDA, pedí productos terminados para OSHPark (de nuevo, seguro, podría encontrar una opción más barata), y como resultado obtuve algo como esto:


El botón fue agregado en el último momento, y un lugar para él fue encontrado completamente por accidente. Resultó que con el botón todo es un poco más divertido, no puede mantener la pantalla encendida todo el tiempo (lo cual es malo para OLED), pero muestra el estado presionando.

Bueno, ya está bien, queda por agregar el caso. Para hacer esto, ejecute Blender, haga un montón de paralelepípedos, aplique varias operaciones booleanas ...


Y enviar a la impresora 3D.


En total, resultó económico (menos de $ 10 por copia), de manera flexible (funcionará con casi cualquier aire acondicionado), se integra fácilmente, se controla por voz y, a través de la web, se termina constantemente desde cinco metros. En general, sobre lo que quería.

¿Cómo se haría todo esto un poco mejor?

Modelo de serie (02)


Existen varias instrucciones para mejorar el producto resultante (más precisamente, oportunidades de mejora que harían posible convertir un experimento en un producto):

  1. El sensor de temperatura se puede tomar más pequeño y más preciso, por ejemplo, BME280, HTU21D o Si7021, lo que le permitirá colgarlo en las mismas patas que la pantalla (I2C), reducir significativamente el tamaño del dispositivo terminado y simplificar el diseño de la PCB. En la práctica, resultó que el mismo BME280 comienza a verse fuertemente afectado por el calentamiento del ESP8266 en sí, y las lecturas emitidas deben ajustarse.

  2. (Se deduce del primer párrafo) Mantener el ESP8266 funcionando constantemente no es algo común; debe ir periódicamente a Sueño profundo, solo ocasionalmente se despierta para enviar testimonios y recibir comandos;
  3. (se deduce del segundo punto) MQTT normal ya no es muy adecuado, debe usar MQTT-SN para que los comandos de control se recuerden y se entreguen al controlador en el momento del despertar;
  4. La implementación de los elementos anteriores le permitirá cambiar la energía "cableada" de la batería;
  5. El método actual de fijación de componentes a una placa de circuito impreso (soldadura convencional) es difícil de implementar y no lo suficientemente flexible: tiene sentido soldar los cabezales para que los mismos sensores de temperatura puedan cambiarse como guantes;
  6. Finalmente (al contrario del párrafo anterior), de todos modos, los módulos terminados son buenos y simples, pero un poco voluminosos, idealmente en lugar del D1 mini habría un ESP8266 desnudo, y el sensor de temperatura, el botón y los LED IR se soldarían en una placa ( como lo hacen en productos en serie), lo que reduciría el tamaño del dispositivo y su precio de serie;
  7. De todos modos, sería bueno incluir en el firmware la capacidad de seleccionar fácilmente su modelo de aire acondicionado con un solo clic ...

Conclusión


Fue una aventura gloriosa, y entendí mucho. Por ejemplo, entendí por qué los dispositivos seriales son tan caros y cuánto esfuerzo tendría que aplicarse para llegar al mismo nivel que ellos. Por otro lado, hice mucho por primera vez en este proyecto (trabajando en el IDE de Arduino, ordenando placas de circuito impreso, creando un modelo para una impresora 3D), y obtener esta experiencia fue invaluable. Sin embargo, el código fuente no se mostrará: estoy avergonzado de ellos :)

Pero aún así logré mi objetivo, y el control barato y flexible de los aires acondicionados resultó bastante factible.

Source: https://habr.com/ru/post/es419963/


All Articles