Alarma de movimiento con Arduino, WiFiManager y control por Telegram

Hace algunas semanas les mostré como crear una alarma de movimiento con Arduino que enviaba alertas por Twitter utilizando el módulo wifi ESP8266-01, esta vez les mostraré una segunda versión de esa alarma que agrega varias mejoras entre las que se incluyen el control por Telegram y una configuración más simple de la red wifi a la cual se conecta.

Los materiales son básicamente los mismos, un sensor de movimiento o sensor PIR y el módulo WiFi, esta vez en lugar de utilizar el Arduino UNO para conectar el módulo con la computadora, utilizo un adaptador FTDI que es más práctico para cargar el software.

Más abajo les dejo el esquema de conexión, un video donde muestro las nuevas funciones y el código en Github para que lo puedan copiar.

alarma de movimiento con telegram

En la primer versión de la alarma la red wifi a la cual el módulo se conectaba se configuraba con su SSID y Password directamente en el programa o sketch de Arduino. Esto era un poco engorroso porque si se cambiaba el password de la wifi o se quería utilizar la alarma con otra red, había que conectarla nuevamente con la PC y cargarle el nuevo programa con el IDE de Arduino.

Para evitar esto utilicé la librería WiFiManager (gracias tzapu!) que permite guardar en la memoria EEPROM los datos de la red wifi por medio de un “captive portal” que se crea dentro del propio módulo como un webserver y una página HTML que lanza los comandos que lo controlan.

Además de forma automática permite cambiar entre los modos Station y Access Point para conectarse por WiFi directamente al módulo ESP (ver comandos AT). Agregué además una librería para realizar la comunicación con Telegram y la de Twitter que ya había utilizando antes.

Como se puede ver en la siguiente imagen, a los módulos wifi les he agregado además un pequeño disipador sobre el chip porque he notado que a veces se calientan bastante y cuando eso sucede se vuelven un poco inestables (empiezan a fallar y se desconectan). Aunque por lo que estoy viendo no es un problema de los módulos ni del software, sino del voltaje que se les entrega, funcionan con 3.3V pero si el regulador de voltaje que se utiliza no es muy bueno puede que le lleguen más voltios y así comiencen a levantar temperatura.

esp8266-01 con disipador de temperatura

Video:

Esquema de conexiones:

Recordar que el GPIO0 se conecta al GND para cargar el programa o firmware en el módulo ESP, luego se puede desconectar o utilizar para conectar otro sensor o módulo.

esquema conexiones alarma wifi con telegram

conexion ESP8266 con FTDI

Librerías:

– WiFiManager: github.com/tzapu/WiFiManager
– Twitter: arduino-tweet.appspot.com
– Telegram: create.arduino.cc/projecthub/Arduino_Genuino/telegram-bot-library-ced4d4

Si tienen problemas con el WiFiManager les recomiendo darse una vuelta por la pestaña issues de su github donde se han realizando más de 150 preguntas frecuentes.

La configuración del bot de Telegram se explica en detalle en el link de la librería, recuerden que se necesitan tokens para el bot y también para la cuenta de Twitter que se deben colocar en el sketch de Arduino.

Código de la alarma: github.com/spamloco/pir-esp-telegram-twitter-wifi

El código del programa se puede optimizar mucho más, toda sugerencia y mejora es bienvenida!

7 comentarios en «Alarma de movimiento con Arduino, WiFiManager y control por Telegram»

  1. Buenas noches:

    la verdad este proyecto está muy bien logrado, sobre todo lo de el sistema web local para conectarse a una red wifi, y hasta es mejorable pero ya es una idea/base.

    Yo te quería hacer una consulta muy específica: cuando uno configura arduino con telegram y este envia datos, ¿si el celular no está conectado a internet los datos van a un servidor? ¿El celular hace de servidor (me parece que sí) o telegram tiene sus servidores? Creo que esto es muy importante pues sería el único servicio de mensajería para arduino que te brinda un servidor gratuito, muchas graicas.

    Responder
    • Hola Jesus, gracias por tu comentario.

      Telegram tiene sus servidores, es decir, si el celular no está conectado pero el Arduino sí está conectado… lo que sucederá es que los datos se envían a los servidores de Telegram y cuando el celular recupere la conexión, se recibirán los mensajes.

      Te recomiendo por otro lado, que pruebes integran también el servicio ifttt.com con Arduino, hay muchos tutoriales en internet que lo explican y es bastante sencillo. Este servicio es gratuito y te permite utilizar diversos servicios desde Telegram hasta Gmail para poder controlar al Arduino.

      Responder
  2. Hola estoy intentando compilar, elimine todo codigo respecto a twitter, solo necesito telegram pero me arroja este error, podrias apoyarme dandome un poco de luz, gracias

    C:\Users\nombre\Documents\Arduino\libraries\TelegramBot\src/TelegramBot.h:11:25: fatal error: ArduinoJson.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Error compilando para la tarjeta NodeMCU 0.9 (ESP-12 Module).

    Responder
  3. WM: AutoConnect
    *WM: Connecting as wifi client…
    *WM: Already connected. Bailing out.
    *WM: IP Address:
    *WM: 192.168.1.132
    Conectado de forma exitosa a la red WiFi

    Exception (9):
    epc1=0x40105759 epc2=0x00000000 epc3=0x00000000 excvaddr=0x000000b9 depc=0x00000000

    ctx: sys
    sp: 3ffffd90 end: 3fffffb0 offset: 01a0

    >>>stack>>>
    3fffff30: 3fff23d4 3fff23d0 00192ac6 40106772
    3fffff40: 4020e9d2 3ffeb164 3ffeedc0 40240f31
    3fffff50: 4020ead4 3ffeb164 3fff0530 0051146a
    3fffff60: 40105656 001930f6 3fff0530 60000600
    3fffff70: 40223899 3ffeb164 3fff0530 00510097
    3fffff80: 402238de 3fffdab0 00000000 3fffdcb0
    3fffff90: 3fff0558 3fffdab0 00000000 4020c443
    3fffffa0: 40000f49 40000f49 3fffdab0 40000f49
    <<<stack<<<

    ets Jan 8 2013,rst cause:2, boot mode:(3,6)

    Responder
  4. Hola mi amigo te escribo desde colombia! si tienes algo de tiempo me gustaria poder preguntarte unas cuantas cosas. mi correo es el siguite [editado].

    Responder

Deja un comentario