Nós controlamos a casa através do Telegram

Atualmente, os sistemas de controle doméstico inteligentes estão se tornando mais populares. Uma interface centralizada que controla dispositivos em toda a casa economiza tempo e permite que você controle sua casa com mais eficiência. A realização de sua visão de tais sistemas é realizada por marcas eminentes: Apple, Amazon e Google, incorporando-as em sua infraestrutura, além de artesãos que montam esses sistemas com base na plataforma Arduino.


Nosso objetivo era o seguinte: criar um sistema que estará disponível em um grande número de dispositivos e não esteja vinculado a nenhum lugar. Uma excelente opção para implementar o controle acabou sendo um bot para o messenger Telegram. O Telegram possui aplicativos em todas as principais plataformas, além de uma versão web. O acesso a ele pode ser obtido de qualquer lugar, você só precisa ter uma conta.


Dos módulos, selecionamos o seguinte:


• Tira de LED controlada por RGB
• Tomada gerenciada
• sensor de temperatura
• Sensor de luz (usado para ligar automaticamente a luz)


Do que precisamos


1. Raspberry Pi 3


Um computador pequeno mas remoto que não precisa ser introduzido, seu poder será suficiente para realizarmos essas tarefas. A terceira versão é boa com um módulo Wi-Fi integrado, portanto, não precisamos pensar em um adaptador de terceiros.


2. Módulos ESP8266


Vamos precisar de 4 deles. Usamos o ESP-12F, mas em geral não há diferença: o ESP-1 será suficiente. Além disso, as placas NodeMCU prontas podem economizar tempo e esforço.


3. tira LED


Pegamos uma fita RGB gerenciada nos controladores WS2812b, embora, a propósito, qualquer fita trabalhando em 5V e suportada pela plataforma Arduino seja adequada aqui.


4. Sensores de temperatura e luz


Usamos o módulo BH1750 para determinar a iluminação na sala e o DS18B20 para temperatura. Os principais critérios foram a disponibilidade, o suporte da plataforma Arduino e a capacidade de trabalhar com a lógica 3.3V ESP8266.


5. Relé


O submódulo MOD-1CH para Arduino pode passar até 10A de corrente e é controlado por 5V; não encontramos análogos para 3,3V; portanto, usamos um transistor no modo de chave para controle.


6. Telegrama bot


O controle direto de todo o sistema será realizado usando o bot Telegram, lançado no Raspberry: isso permitirá que o sistema seja facilmente acessível em qualquer plataforma de qualquer lugar do mundo. Criar um bot para o Telegram é bastante simples, graças a uma plataforma desenvolvida e suporte a um grande número de idiomas.


Assim, todo o nosso sistema terá algo parecido com isto:


imagem


Implementação


Primeiro, testamos os módulos.


imagem


Placas de circuito prontas adaptam a distância entre os pinos, o que facilita muito a soldagem e também contêm os resistores necessários para conectar os pinos CH_PD e GPIO2 ao Vcc.


Infelizmente, os módulos ESP8266 são alimentados e rodam em 3.3V, não em 5, como o Arduino. Você pode converter a tensão usando um módulo conversor pronto, mas também pode soldar o circuito com base no estabilizador linear AMS1117, como fizemos.


imagem


O próximo passo é a programação.


Felizmente, a plataforma ESP8266 é suportada pelo IDE do Arduino, que abre muitas possibilidades para nós. Para baixar diretamente o firmware do módulo, usaremos o Arduino Nano, no entanto, o mesmo pode ser feito através do conversor USB-UART habitual. Não se esqueça da diferença de tensão entre o Arduino e o ESP.


O esquema é o seguinte:


imagem


O botão é necessário para fechar o pino GPIO1 em GND ao aplicar energia ao módulo e, assim, transferi-lo para o modo de programação.


Em seguida, configuramos o IDE do Arduino para que ele compreenda o ESP ( instruções detalhadas com todos os links ) e tentamos gravar um esboço de teste para o LED piscando.


imagem


Após uma piscada bem-sucedida, começamos a soldar todos os módulos. Com um sensor de temperatura e luz, tudo é bastante padrão.


Temperatura:


imagem


imagem


Iluminação:


imagem


imagem


Mas a fita e a tomada inteligente causaram algumas dificuldades.


Uma conexão simples da entrada de controle da fita com o ESP falhou. Não é surpresa, porque o WS2812b requer pelo menos 70% da entrada VCC (5x0,7 = 3,5) para a entrada de controle, e uma placa de 3,3V claramente não é suficiente. No entanto, encontramos muleta Uma maneira interessante de iniciá-los sem usar um conversor de impulso. Se o diodo requer um mínimo de 0,7xVcc para reagir ao sinal e não podemos aumentar o nível desse sinal, o Vcc deve ser reduzido! Sim, os LEDs não acenderão tão intensamente; no entanto, não precisamos alimentar a fita inteira dessa maneira; um diodo é suficiente. Ao transmitir o sinal ao longo da cadeia, o LED já usa o nível Vcc para formar o sinal, o que é suficiente para um LED "normal". Assim, conectando o primeiro diodo na fita à fonte de alimentação através do diodo, que "consome" cerca de 0,6V, obtemos uma fita funcionando perfeitamente, diretamente controlada a partir do nosso módulo ESP8266. E deixamos o primeiro LED um pouco mais esbatido para as necessidades de depuração: exibir o status da conexão de rede.


Aqui está o que aconteceu:


imagem


imagem


Queríamos colocar nosso soquete inteligente completamente no estojo do soquete antigo com um temporizador. Eles precisavam entrar lá: o próprio ESP-12F, uma fonte de alimentação e um relé que controlava a tomada. No entanto, tendo colocado o relé e a fonte de alimentação lá, ainda não conseguimos acomodar o módulo ESP lá. Portanto, tive que anexar uma pequena caixa abaixo.


imagem


O resultado não foi tão elegante quanto queríamos originalmente, mas era um dispositivo sólido que só precisava ser conectado a uma tomada.


imagem


imagem


O próximo passo foi configurar o Raspberry. O plano era o seguinte: nossos módulos se conectam ao ponto de acesso Wi-Fi, que é Raspberry, e, mais precisamente, ao seu módulo Wi-Fi embutido. O Raspberry executa o Telegram-bot, que está localizado com todos os módulos da rede local e pode facilmente trocar solicitações HTTP com eles. Está tudo conectado à Internet via Ethernet.


Para implementar esse plano, usamos dois pacotes:


  • hostapd - permite usar o módulo wi-fi embutido como ponto de acesso
  • dnsmasq - combina servidores DHCP e DNS.

Tentamos obter relativa independência do código e dos dispositivos, portanto, todas as solicitações não foram feitas para endereços IP, mas para nomes da zona .sh inventada (light.sh, socket.sh, etc.). Para fazer isso, configuramos endereços IP estáticos para cada módulo e adicionamos registros correspondentes aos módulos nesses endereços DNS. Felizmente, o dnsmasq é muito fácil de configurar ( instruções detalhadas para configurar este sistema ).


E, finalmente, o bot em si.


Escrevemos um bot em Python usando a biblioteca python-telegram-bot. Desenvolvemos uma interface de botão, que simplifica o gerenciamento, transformando o dispositivo em uma espécie de controle remoto:


imagem


imagem


O código bot de origem pode ser encontrado aqui .


E para que ninguém pudesse usá-lo, definimos a proteção por senha.


Conclusão


Obviamente, não criamos nenhum sistema revolucionário; há um grande número de implementações mais holísticas e pensadas. Os módulos de temperatura e iluminação podem se tornar autônomos, pois o ESP8266 possui um modo de espera especial no qual consome muito pouca energia. Pode-se adicionar fácil extensibilidade ao usuário, o que não requer alteração do código-fonte, reconfiguração das conexões de rede e muito mais. No entanto, o objetivo de todo esse projeto não era nada disso. Antes de tudo, queríamos criar um sistema simples que pudesse ser criado por qualquer pessoa em nossa casa e não exigiria preparação e custos sérios. E o mais importante: queríamos aprender muitas coisas enquanto estávamos fazendo este projeto. E se a praticidade e a funcionalidade de nossa solução puderem ser desenvolvidas por um longo tempo, então o conhecimento que adquirimos no processo de planejamento e implementação desse sistema definitivamente valeu a pena.

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


All Articles