Nous fabriquons un contrôleur "intelligent" pour le climatiseur sur l'ESP8266

L'été est venu, avec la chaleur et le temps d'allumer les climatiseurs. Et si vous aimez les technologies modernes et la maison intelligente, vous voulez faire le contrôle de la climatisation de manière intelligente (ou au moins d'une manière moderne). Vous trouverez ci-dessous une série de notes sur ma tentative d'intégrer la météo dans une maison avec commande vocale et une interface multiplateforme.

Défi


Il y a quatre climatiseurs dans l'appartement, vous devez apprendre à les gérer:

  • Depuis l'interface Web (je l'ai Home Assistant, tournant sur un Raspberry Pi séparé, mais idéalement, je veux une connexion simple à n'importe quel système);
  • Voix (Google Assistant fera l'affaire, alors pensez à Alice);
  • Scripts;
  • Bon marché ...

Etude de marché


Solution native


Peut-être que je ne le dirai même pas. La décision du fabricant de mes climatiseurs impliquait un tas de fils, au moins deux modules supplémentaires pour chaque unité, et un prix d'environ 200 $ par chambre. Plus un protocole propriétaire, une ancienne application et tout ça. Rayer.

Ciel Sensibo


Environ 100 $ par chambre, fonctionne nativement avec Google Assistant et IFTTT, est magnifique, mais toujours un peu cher.


tado ° - de même (et encore plus cher).

Xiaomi Aqara / Mi Home, Broadlink RM Pro / Mini


Les émetteurs infrarouges universels, certains prennent théoriquement en charge les climatiseurs nécessaires «prêts à l'emploi», s'intègrent en deux avec l'assistant domestique, mais en général - une solution moyenne, bien que le prix soit déjà beaucoup plus proche de celui abordable (20-35 $ par chambre, selon les capacités) ) Oui, et les applications en chinois (dans certains cas) ne sont pas ce à quoi j'aspire.


DIY


Le moyen le moins cher et le plus flexible, dont je parlerai plus en détail.

Sélection des composants


Il y a quelque chose à penser, mais en général, nous aurons besoin de:

Le fer


Contrôleur


Nous prenons stupidement l'ESP8266, et pour la simplicité du firmware et de l'alimentation, nous utiliserons le D1 mini. Nous allons évidemment gérer le système via WiFi.


Emetteur IR


Pour le prototype, nous utiliserons une simple LED IR, une résistance et un transistor, puis nous réfléchirons à la manière dont cela peut être amélioré.

Capteur de température


C'est plus amusant avec, vous pouvez définir la température cible et faire marche / arrêt automatique. Pour commencer, prenez bêtement DHT22.


Écran


Nous afficherons l'état actuel du système (pour le débogage), et peut-être l'adresse IP actuelle (sera-t-elle utile?).


Logiciels


IDE


Nous implémenterons tout dans l'IDE Arduino (avec lequel je n'ai jamais travaillé auparavant) en utilisant des bibliothèques ouvertes.
Bien plus tard, alors que le projet fonctionnait déjà, je suis passé à Visual Studio Code avec le plugin PlatformIO .

Protocole


Nous communiquerons avec Home Assistant via MQTT (bibliothèque PubSubClient ), car c'est un protocole ouvert, et il y a un composant spécial pour cela.

La configuration ressemblera, par exemple, à quelque chose comme ceci:

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" 

La gestion


La bibliothèque HeatpumpIR nous aidera à envoyer des signaux au climatiseur (le modèle du climatiseur est toujours codé en dur).

Divers


Vous aurez besoin de plus de bibliothèques pour la minuterie , pour travailler avec le capteur de température et avec l' écran , mais ce sont des bagatelles. Nous ajouterons WiFiManager et ArduinoOTA avec le geste habituel pour mettre à jour le firmware via l'interface Web, et non USB.

Prototype (00)


Nous achetons des composants aléatoires sur aliexpress, les assemblons sur une planche délirante, testons l'idée.


Nous comprenons que:

  • L'écran a été commandé trop grand et a trop de pattes.
  • Une LED ne frappe pas très loin et n'est pas très fiable.

Mais dans l'ensemble, l'idée fonctionne! Le composant HVAC «natif» apparaît dans l'interface Home Assistant, ce qui signifie que le contrôle de n'importe où dans le monde est déjà dans notre poche. L'intégration native de Home Assistant avec Google Assistant ajoute des commandes vocales et des commentaires: vous pouvez interroger l'assistant sur la température dans la pièce, et il répondra à la fois à la température cible et à la température actuelle.


La modification de la température cible, de la vitesse de soufflage et du mode de climatisation dans l'interface Web est également en place (et, surtout, cela fonctionne!).


Échantillon d'essai (01)


Modifions quelques composants: commandez un écran plus petit et utilisez I2C (et nous utiliserons une bibliothèque différente ).


Nous remplaçons également la LED IR par un module prêt à l'emploi.


Il s'est avéré que cela ne vaut pas la peine de commander des modules avec une LED (sur la photo de gauche) sur aliexpress: ils ne contiennent pas de transistor, et l'une des jambes (VCC) qu'ils ont est essentiellement un simulacre.

Mais si vous commandez un module avec deux LED (sur la photo de droite), alors tous les composants nécessaires sont déjà en place, et un tel module se connecte facilement et naturellement, et se termine un peu plus loin.

Il était également temps de tout rassembler sur ma carte de circuit imprimé ... Ce fut l'un des moments les plus difficiles pour une personne qui n'a jamais conçu de cartes de circuit imprimé, et c'est sûr que j'ai tout mal fait.


Pour la conception, j'ai utilisé EasyEDA, j'ai commandé des produits finis pour OSHPark (encore une fois, bien sûr, vous pouvez trouver une option moins chère), et en conséquence j'ai obtenu quelque chose comme ceci:


Le bouton a été ajouté au dernier moment, et une place pour lui a été trouvée complètement par accident. Il s'est avéré qu'avec le bouton, tout est un peu plus amusant, vous ne pouvez pas garder l'écran allumé tout le temps (ce qui est mauvais pour OLED), mais afficher l'état en appuyant sur.

Bon, c'est déjà bien, il reste à ajouter le boîtier. Pour ce faire, lancez Blender, faites un tas de parallélépipèdes, appliquez un certain nombre d'opérations booléennes ...


Et envoyez à l'imprimante 3D.


Au total, il s'est avéré bon marché (moins de 10 $ par copie), de manière flexible (il fonctionnera avec presque tous les climatiseurs), il est facilement intégré, contrôlé par la voix et via le Web, il est systématiquement fini à partir de cinq mètres. En général, sur ce que je voulais.

Comment tout cela serait-il un peu mieux? ..

Modèle de série (02)


Il existe un certain nombre de directions pour améliorer le produit résultant (plus précisément, les opportunités d'amélioration qui permettraient de transformer une expérience en produit):

  1. Le capteur de température peut être pris plus petit et plus précis, par exemple, BME280, HTU21D ou Si7021, ce qui vous permettra de l'accrocher sur les mêmes pieds que l'écran (I2C), de réduire considérablement la taille de l'appareil fini et de simplifier la disposition des PCB. En pratique, il s'est avéré que le même BME280 commence à être fortement affecté par le chauffage de l'ESP8266 lui-même, et les lectures publiées doivent être ajustées.

  2. (Il découle du premier paragraphe) Faire fonctionner l'ESP8266 en permanence n'est pas comme il faut; vous devez vous rendre périodiquement en Deep Sleep, ne vous réveillant qu'occasionnellement pour envoyer des témoignages et recevoir des commandes;
  3. (découle du deuxième point) Le MQTT normal n'est plus très approprié, vous devez utiliser MQTT-SN pour que les commandes de contrôle soient mémorisées et transmises au contrôleur au moment du réveil;
  4. La mise en œuvre des éléments ci-dessus vous permettra de changer l'alimentation "filaire" de la batterie;
  5. La méthode actuelle de fixation des composants sur une carte de circuit imprimé (soudure conventionnelle) est difficile à mettre en œuvre et pas assez flexible: il est logique de souder les embases afin que les mêmes capteurs de température puissent être changés comme des gants;
  6. Enfin (contrairement au paragraphe précédent), tout de même, les modules finis sont bons et simples, mais légèrement encombrants, idéalement au lieu du D1 mini il y aurait un ESP8266 nu, et le capteur de température, le bouton et les LED IR seraient soudés sur une seule carte ( comme ils le font dans les produits de série), ce qui réduirait la taille de l'appareil et son prix de série;
  7. Quoi qu'il en soit, il serait bien d'inclure dans le firmware la possibilité de sélectionner facilement votre modèle de climatiseur en un clic ...

Conclusion


Ce fut une aventure glorieuse et j'ai beaucoup compris. Par exemple, j'ai compris pourquoi les périphériques série sont si chers et combien d'efforts devraient être déployés pour se mettre au même niveau avec eux. D'un autre côté, j'ai fait beaucoup pour la première fois dans ce projet (travailler dans l'IDE Arduino, commander des cartes de circuits imprimés, créer un modèle pour une imprimante 3D), et acquérir cette expérience était inestimable. Le code source, cependant, ne sera pas affiché: j'ai honte d'eux :)

Mais j'ai quand même atteint mon objectif, et le contrôle bon marché et flexible des climatiseurs s'est avéré tout à fait réalisable.

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


All Articles