Fazemos um controlador "inteligente" para o ar condicionado no ESP8266

Chegou o verão, com calor e também hora de ligar os aparelhos de ar condicionado. E se você gosta de tecnologias modernas e casa inteligente, então deseja controlar o ar condicionado de alguma forma inteligente (ou pelo menos de uma maneira moderna). Abaixo está uma série de notas sobre minha tentativa de integrar o clima em uma casa com controle de voz e uma interface de plataforma cruzada.

Desafio


Existem quatro aparelhos de ar condicionado no apartamento, você precisa aprender a gerenciá-los:

  • Na interface da Web (eu tenho o Home Assistant, girando em um Raspberry Pi separado, mas, idealmente, quero uma conexão simples com qualquer sistema);
  • Voz (o Google Assistant fará, depois pense em Alice);
  • Scripts;
  • Barato ...

Pesquisa de mercado


Solução nativa


Talvez eu nem conte. A decisão do fabricante dos meus aparelhos de ar condicionado envolveu vários fios, pelo menos dois módulos adicionais para cada unidade e um preço de cerca de US $ 200 por quarto. Além de um protocolo proprietário, um aplicativo antigo e tudo isso. Atravesse.

Sensibo sky


Aproximadamente US $ 100 por quarto, trabalha nativamente com o Google Assistant e o IFTTT, parece bonito, mas ainda um pouco caro.


tado ° - da mesma forma (e ainda mais caro).

Xiaomi Aqara / Mi Home, Broadlink RM Pro / Mini


Os transmissores IR universais, alguns teoricamente suportam os condicionadores de ar necessários "prontos para uso", se integram ao Assistente Doméstico pela metade, mas em geral - uma solução mais ou menos, embora o preço já esteja muito mais próximo do preço acessível (US $ 20-35 por quarto, dependendo das capacidades ) Sim, e aplicativos em chinês (em alguns casos) não são o que eu aspirava.


DIY


A maneira mais barata e flexível, sobre a qual vou falar mais.

Seleção de componentes


Há algo em que pensar, mas em geral precisamos:

Ferro


Controlador


Estupidamente tomamos o ESP8266 e, para simplificar o firmware e a fonte de alimentação, usaremos o D1 mini. Obviamente, gerenciaremos o sistema via WiFi.


Transmissor IR


Para o protótipo, usaremos um LED infravermelho simples, resistência e um transistor, e depois pensaremos em como isso pode ser melhorado.

Sensor de temperatura


É mais divertido com isso, você pode definir a temperatura alvo e ativar / desativar automaticamente. Para começar, tome estupidamente o DHT22.


Ecrã


Mostraremos o estado atual do sistema (para depuração) e talvez o endereço IP atual (será útil?).


De software


IDE


Implementaremos tudo no IDE do Arduino (com o qual nunca trabalhei antes) usando bibliotecas abertas.
Muito mais tarde, quando o projeto já estava funcionando, mudei para o Visual Studio Code com o plug-in PlatformIO .

Protocolo


Nós nos comunicaremos com o Assistente Doméstico através do MQTT (biblioteca PubSubClient ), porque é um protocolo aberto e existe um componente especial para ele.

A configuração terá, por exemplo, algo como isto:

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" 

Gerência


A biblioteca HeatpumpIR nos ajudará a enviar sinais para o ar condicionado (o modelo do ar condicionado ainda está codificado).

Diversos


Você precisará de mais bibliotecas para o temporizador , para trabalhar com o sensor de temperatura e com a tela , mas estes são insignificantes. Adicionaremos o WiFiManager e o ArduinoOTA com o gesto usual para atualizar o firmware pela interface da web, e não pelo USB.

Protótipo (00)


Compramos componentes aleatórios no aliexpress, reunimos em uma placa de ilusão, testamos a ideia.


Entendemos que:

  • A tela foi solicitada muito grande e possui muitas pernas.
  • Um LED não bate muito longe e não é muito confiável.

Mas, no geral, a ideia funciona! O componente HVAC "nativo" aparece na interface do Home Assistant, o que significa que o controle de qualquer lugar do mundo já está em nosso bolso. A integração nativa do Home Assistant com o Google Assistant adiciona comandos de voz e feedback: você pode perguntar ao assistente sobre a temperatura na sala e ele responderá ao alvo e à temperatura atual.


Também é possível alterar a temperatura alvo, a velocidade de sopro e o modo de ar condicionado na interface da Web (e, o mais importante, funciona!).


Amostra de teste (01)


Vamos mudar alguns componentes: peça uma tela menor e trabalhe com o I2C (e usaremos uma biblioteca diferente ).


Também substituímos o LED IR por um módulo pronto.


Descobriu-se que não vale a pena encomendar módulos com um LED (na foto à esquerda) no aliexpress: eles não contêm um transistor e uma das pernas (VCC) que eles possuem é essencialmente uma farsa.

Porém, se você solicitar um módulo com dois LEDs (na foto à direita), todos os componentes necessários já estarão no lugar, e esse módulo será conectado de maneira fácil e natural e terminará um pouco mais.

Também era hora de juntar tudo na minha placa de circuito impresso ... Foi um dos momentos mais difíceis para uma pessoa que nunca projetou placas de circuito impresso, e com certeza fiz tudo errado.


Para o design, usei o EasyEDA, pedi produtos acabados para o OSHPark (novamente, com certeza, você pode encontrar uma opção mais barata) e, como resultado, obtive algo parecido com isto:


O botão foi adicionado no último momento e um local para ele foi encontrado completamente por acidente. Aconteceu que, com o botão, tudo fica um pouco mais divertido, você não pode manter a tela o tempo todo (o que é ruim para o OLED), mas para mostrar o status pressionando.

Bem, já é bom, resta acrescentar o caso. Para fazer isso, execute o Blender, faça um monte de paralelepípedos, aplique várias operações booleanas ...


E envie para a impressora 3D.


No total, ficou barato (menos de US $ 10 por cópia), de forma flexível (funcionará com quase qualquer ar-condicionado), é facilmente integrado, controlado por voz e via web, com acabamento consistente a partir de cinco metros. Em geral, sobre o que eu queria.

Como tudo isso seria feito um pouco melhor?

Modelo em Série (02)


Existem várias instruções para melhorar o produto resultante (mais precisamente, oportunidades de aprimoramento que tornariam possível transformar uma experiência em um produto):

  1. O sensor de temperatura pode ser menor e mais preciso, por exemplo, BME280, HTU21D ou Si7021, que permitirá pendurá-lo nas mesmas pernas da tela (I2C), reduzir significativamente o tamanho do dispositivo acabado e simplificar o layout da placa de circuito impresso. Na prática, verificou-se que o mesmo BME280 começa a ser fortemente afetado pelo aquecimento do próprio ESP8266, e as leituras emitidas precisam ser ajustadas.

  2. (Segue-se do primeiro parágrafo) Manter o ESP8266 em constante funcionamento não é uma tarefa fácil: você precisa periodicamente dormir profundamente, apenas ocasionalmente acordando para enviar testemunhos e receber comandos;
  3. (segue a partir do segundo ponto) O MQTT normal não é mais muito adequado; você precisa usar o MQTT-SN para que os comandos de controle sejam lembrados e entregues ao controlador no momento da ativação;
  4. A implementação dos itens acima permitirá que você altere a energia "com fio" da bateria;
  5. O método atual de fixação de componentes em uma placa de circuito impresso (solda convencional) é difícil de implementar e não é flexível o suficiente: faz sentido soldar os conectores para que os mesmos sensores de temperatura possam ser trocados como luvas;
  6. Finalmente (ao contrário do parágrafo anterior), todos os módulos acabados são bons e simples, mas um pouco volumosos, idealmente, em vez do D1 mini, haveria um ESP8266 vazio, e os sensores de temperatura, botões e LEDs IR seriam soldados em uma placa ( como fazem em produtos seriais), o que reduziria o tamanho do dispositivo e seu preço de série;
  7. De qualquer forma, seria bom incluir no firmware a capacidade de selecionar facilmente o seu modelo de ar condicionado com um clique ...

Conclusão


Foi uma aventura gloriosa, e eu entendi muito. Por exemplo, eu entendi por que os dispositivos seriais são tão caros e quanto esforço teria que ser aplicado para obter o mesmo nível com eles. Por outro lado, fiz muito pela primeira vez neste projeto (trabalhando no IDE do Arduino, solicitando placas de circuito impresso, criando um modelo para uma impressora 3D) e obter essa experiência foi inestimável. O código fonte, no entanto, não será exibido: tenho vergonha deles :)

Mas ainda atingi meu objetivo, e o controle barato e flexível dos aparelhos de ar condicionado acabou sendo bastante viável.

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


All Articles