Controlamos la casa a través de Telegram.

Actualmente, los sistemas de control inteligente del hogar son cada vez más populares. Una interfaz centralizada que controla los dispositivos en todo el hogar ahorra tiempo y le permite controlar su hogar de manera más efectiva. La realización de su visión de tales sistemas es llevada a cabo por marcas eminentes: Apple, Amazon y Google, incorporándolas en su infraestructura, así como por artesanos que ensamblan dichos sistemas basados ​​en la plataforma Arduino.


Nuestro objetivo era el siguiente: crear un sistema que estará disponible en una gran cantidad de dispositivos y no estará vinculado a ningún lugar. Una excelente opción para implementar el control resultó ser un bot para el mensajero Telegram. Telegram tiene aplicaciones en todas las plataformas principales, así como una versión web. El acceso a él se puede obtener desde cualquier lugar, solo necesita tener una cuenta.


De los módulos seleccionamos lo siguiente:


• Tira de LED controlada por RGB
• Salida gestionada
• sensor de temperatura
• Sensor de luz (se usa para encender automáticamente la luz)


Que necesitamos


1. Raspberry Pi 3


Una computadora pequeña pero remota que no necesita ser introducida, su potencia será suficiente para que podamos realizar estas tareas. La tercera versión es buena con un módulo Wi-Fi integrado, por lo que no tenemos que pensar en un adaptador de terceros.


2. Módulos ESP8266


Necesitaremos 4 de ellos. Usamos ESP-12F, pero en general no hay diferencia: ESP-1 será suficiente. Además, las placas NodeMCU listas para usar pueden ahorrarle tiempo y esfuerzo.


3. tira de LED


Tomamos una cinta RGB administrada en los controladores WS2812b, aunque, por cierto, cualquier cinta que funcione en 5V y sea compatible con la plataforma Arduino es adecuada aquí.


4. Sensores de temperatura y luz.


Utilizamos el módulo BH1750 para determinar la iluminación de la habitación y el DS18B20 para la temperatura. Los criterios principales fueron la disponibilidad, el soporte de la plataforma Arduino y la capacidad de trabajar con lógica ESP8266 de 3.3V.


5. Relé


El submódulo MOD-1CH para Arduino puede pasar hasta 10 A de corriente y está controlado por 5 V, no encontramos análogos para 3,3 V, por lo que utilizamos un transistor en modo clave para el control.


6. Telegram bot


El control directo de todo el sistema se llevará a cabo utilizando el bot Telegram, lanzado en Raspberry: esto permitirá que el sistema sea fácilmente accesible en cualquier plataforma desde cualquier parte del mundo. Crear un bot para Telegram es bastante simple, gracias a una plataforma desarrollada y soporte para una gran cantidad de idiomas.


Por lo tanto, todo nuestro sistema se verá así:


imagen


Implementación


Primero, probamos los módulos.


imagen


Las placas de circuito listas para usar adaptan la distancia entre los pines, lo que facilita enormemente la soldadura, y también contienen las resistencias necesarias que conectan los pines CH_PD y GPIO2 a Vcc.


Desafortunadamente, los módulos ESP8266 están alimentados y funcionan a 3.3V, no a 5, como el Arduino. Puede convertir el voltaje usando un módulo convertidor listo para usar, pero también puede soldar el circuito basado en el estabilizador lineal AMS1117, como lo hicimos nosotros.


imagen


El siguiente paso es la programación.


Afortunadamente, la plataforma ESP8266 es compatible con el IDE Arduino, que nos abre muchas posibilidades. Para descargar directamente el firmware al módulo, utilizaremos el Arduino Nano, sin embargo, lo mismo se puede hacer a través del convertidor USB-UART habitual. No te olvides de la diferencia de voltaje entre Arduino y ESP.


El esquema es el siguiente:


imagen


El botón es necesario para cerrar el pin GPIO1 a GND cuando se aplica alimentación al módulo y, por lo tanto, transferirlo al modo de programación.


A continuación, configuramos el IDE de Arduino para que comprenda ESP ( instrucciones detalladas con todos los enlaces ) e intentamos grabar un boceto de prueba para el parpadeo del LED.


imagen


Después de un parpadeo exitoso, comenzamos a soldar todos los módulos. Con un sensor de temperatura y luz, todo es bastante estándar.


Temperatura:


imagen


imagen


Iluminación:


imagen


imagen


Pero la cinta y el enchufe inteligente causaron algunas dificultades.


Una conexión simple de la entrada de control de la cinta al ESP falló. No es sorprendente, porque WS2812b requiere al menos el 70% de la entrada VCC (5x0.7 = 3.5) para la entrada de control, y una placa de 3.3V claramente no es suficiente. Sin embargo encontramos muleta Una forma interesante de iniciarlos sin usar un convertidor de impulso. Si el diodo requiere un mínimo de 0.7xVcc para reaccionar a la señal y no podemos aumentar el nivel de esta señal, ¡entonces Vcc debe reducirse! Sí, los LED no se iluminarán tan intensamente, sin embargo, no necesitamos alimentar toda la cinta de esta manera; Un diodo es suficiente. Al transmitir la señal a lo largo de la cadena, el LED ya utiliza el nivel de Vcc para formar la señal, que es suficiente para un LED "normal". Por lo tanto, al conectar el primer diodo de la cinta a la fuente de alimentación a través del diodo, que "come" alrededor de 0.6V, obtenemos una cinta que funciona perfectamente directamente desde nuestro módulo ESP8266. Y dejamos el primer LED ligeramente más tenue para las necesidades de depuración: mostrar el estado de la conexión de red.


Esto es lo que sucedió:


imagen


imagen


Queríamos colocar nuestro zócalo inteligente completamente en el estuche del viejo zócalo con un temporizador. Tenían que entrar allí: el ESP-12F en sí, una fuente de alimentación y un relé que controla la salida. Sin embargo, después de haber colocado el relé y la fuente de alimentación allí, todavía no pudimos acomodar el módulo ESP allí. Por lo tanto, tuve que adjuntar un pequeño cuadro a continuación.


imagen


El resultado no fue tan elegante como queríamos originalmente, pero era un dispositivo sólido que solo tenía que enchufarse a una toma de corriente.


imagen


imagen


El siguiente paso fue configurar Raspberry. El plan era este: nuestros módulos se conectan al punto de acceso Wi-Fi, que es Raspberry, y, más precisamente, a su módulo Wi-Fi incorporado. Raspberry ejecuta Telegram-bot, que se encuentra con todos los módulos en la red local y puede intercambiar fácilmente solicitudes http con ellos. Todo está conectado a Internet a través de Ethernet.


Para implementar este plan, utilizamos dos paquetes:


  • hostapd: le permite usar el módulo wi-fi incorporado como punto de acceso
  • dnsmasq: combina servidores DHCP y DNS.

Intentamos lograr una independencia relativa del código y los dispositivos, por lo tanto, todas las solicitudes se ejecutaron no a direcciones IP, sino a nombres de la zona inventada .sh (light.sh, socket.sh, etc.). Para hacer esto, configuramos direcciones IP estáticas para cada módulo y agregamos registros correspondientes a los módulos a estas direcciones DNS. Afortunadamente, dnsmasq es muy fácil de configurar ( instrucciones detalladas para configurar este sistema ).


Y finalmente, el bot en sí.


Escribimos un bot en Python usando la biblioteca python-telegram-bot. Hemos desarrollado una interfaz de botones, que simplifica la administración, convirtiendo el dispositivo en una especie de control remoto:


imagen


imagen


El código fuente del bot se puede encontrar aquí .


Y para que nadie pueda usarlo, configuramos la protección con contraseña.


Conclusión


Por supuesto, no creamos ningún sistema revolucionario; hay una gran cantidad de implementaciones más holísticas y pensadas. Los módulos de temperatura e iluminación podrían hacerse autónomos, ya que el ESP8266 tiene un modo de espera especial en el que consume muy poca energía. Se podría agregar una fácil extensibilidad del usuario, que no requiere cambiar el código fuente y reconfigurar las conexiones de red, y mucho más. Sin embargo, el objetivo de todo este proyecto no era para nada eso. En primer lugar, queríamos crear un sistema simple que pudiera ser creado por cualquier persona en nuestro hogar y que no requiriera una preparación y costos serios. Y lo más importante: queríamos aprender muchas cosas mientras hacíamos este proyecto. Y si la practicidad y la funcionalidad de nuestra solución pueden desarrollarse aún más durante mucho tiempo, entonces el conocimiento que obtuvimos en el proceso de planificación e implementación de este sistema definitivamente valió la pena.

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


All Articles