En este tutorial veremos como hacer un sistema detector de movimiento, con un sensor PIR, un modulo relay, para conectar un foco de 110V/220V, un esp32 que se conectará a nuestra red wifi y enviará notificaciones de alertas, por mensajes a través del servicio de mensajería telegram, cuando el sensor PIR detecte un movimiento.
Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagramas
Circuito
Componentes electrónicos
Cables dupont
ESP32
Características del módulo ESP32-T
Conectividad
El módulo ESP32 dispone de todas las variantes del WiFi:
- 802.11 b/g/n/e/i/n
- Wi-Fi Direct (P2P), P2P Discovery, P2P Group Owner mode and P2P Power Management
Esta versión nueva incluye la conectividad mediante Bluethoot de bajo consumo
- Bluetooth v4.2 BR/EDR and BLE
- BLE Beacon
Además, puede comunicarse mediante los protocoles SPI, I2C, UART, MAC Ethernet, Host SD
Prestaciones del microcontrolador
La CPU está formado por un SoC modelo Tensilica LX6 con las siguientes características y memoria
- Doble núcleo de 32 bits con velocidad de 160MHz
- Memoria ROM de 448 kBytes
- Memoria SRAM de 520kBytes
Dispne de 48 Pines
- 18 ADC de 12 bits
- 2 DAC de 8 bits
- 10 pines sensores de contacto
- 16 PWM
- 20 Entradas/salidas digitales
Alimentación y modos de consumo
Para un correcto funcionamiento del ESP32 es necesario subministrar un voltaje de entre 2,8V y 3,6V. La energía que consume depende del modo de funcionamiento. Contiene un modo, el Ultra Low Power Solution (ULP), en que se continúan realizando tareas básicas (ADC, RTC…) en el modo Sleep.
Un foco
Sensor PIR
Calibración Al energizarse el sensor pir requiere de un tiempo de preparación para comenzar a operar de forma adecuada. Esto se debe a que tiene que ocurrir la adaptación a las condiciones propias de operación de ambiente donde fue instalado. Durante este momento el sensor aprende a reconocer el estado de reposo o no movimiento del ambiente. La duración de esta calibración puede estar entre 10 y 60 segundos y es altamente recomendable la ausencia de personas en la vecindad del sensor mientras se calibra.
Características:
- Sensor de infrarrojos con placa de circuito de control.
- La sensibilidad y tiempo de retención puede ser ajustada.
- Pequeño y ligero, es fácil de usar.
- Distancia de detección es de hasta 6 metros.
- Adecuado para el campo de la seguridad, juguete, automatización de control, etc.
Caracteristicas del sensor PIR ROBOX IR
Marca | Robox |
Modelo | RTHW |
Color | Blanco + Verde |
Material | placa PCB + Plástico |
Caracteristicas | Potencia estática: 50uA; Distancia de detección: 7m; Ángulo de detección: 110 grados; Amplio rango de tensión: CC 4.5 20V ~ |
Aplicación | Detectar movimiento |
Peso: 0.25 oz (7 g)
Pines macho
Zócalo
Módulo Relay
ESPECIFICACIONES TÉCNICAS
- Voltaje de Operación: 5V DC
- Señal de Control: TTL (3.3V o 5V)
- Nº de Relays (canales): 1 CH
- Capacidad máx: 10A/250VAC, 10A/30VDC
- Corriente máx: 10A (NO), 5A (NC)
- Tiempo de acción: 10 ms / 5 ms
- Para activar salida NO: 0 Voltios
Circuito Impreso
Archivo gerber
Código Fuente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
#include <WiFi.h> #include <WiFiClientSecure.h> #include <UniversalTelegramBot.h> #include <ArduinoJson.h> // Reemplazar con los datos de tu red wifi const char* ssid = "Tu_red_wifi"; const char* password = "Tu_clave"; //Token de Telegram BOT se obtenienen desde Botfather en telegram #define token_Bot "Tu_token" // El ID se obtiene de (IDBot) en telegram no olvidar hacer click en iniciar #define ID_Chat "Tu_chat_ID" WiFiClientSecure client; UniversalTelegramBot bot(token_Bot, client); const int sensorPIR = 23; // Pin donde está conectada la entrada del sensor PIR const int luz = 13;// Pin para luz de 110 o 220 V( Con módulo relay) int conteo = 0; String mensaje = ""; String conteoString = ""; int PIR = 0; ////Setup//// void setup() { Serial.begin(115200); // Activamos el resistor de PULLUP para la entrada sensor PIR pinMode(sensorPIR, INPUT_PULLUP); pinMode(luz, OUTPUT); // Intenta conectarse a la red Wifi: Serial.print("Conectando a la red wifi... "); Serial.println(ssid); //Seteo de la red Wifi WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(""); Serial.println("Conectado a la red wifi!!!"); Serial.print("Dirección ip: "); Serial.println(WiFi.localIP());//Imprimimos la direción ip local bot.sendMessage(ID_Chat, "Sistema preparado!!!", "");//Enviamos un mensaje a telegram para informar que el sistema está listo } /////loop////// void loop() { PIR = digitalRead(sensorPIR);//Leemos el estado del del sensor PIR //Si es igual a "1" se cumple la condición if(PIR == 1){ digitalWrite(luz, HIGH);//Encendemos la luz Serial.println("Luz Encendida!"); conteo = conteo + 1;//Incremento en el contador de movimientos detectados conteoString = String(conteo);//Lo convertimos a una cadena mensaje = "Movimiento detectados: " + conteoString;//Concatenamos ambas cadenas bot.sendMessage(ID_Chat, mensaje, "");//Enviamos el mensaje a Telegram delay(5000);//mantensmos la luz encendida este tiempo digitalWrite(luz, LOW);//Luego la apagamos Serial.println("Luz apagada!"); PIR = 0;//Asignamos el valor "0" a la variable PIR para que deje de cumplirse la condición } } |
Descargar Librería –> Universal-Arduino-Telegram-Bot-master
Crear Bot en Telegram
En telegram buscamos BotFather
Escribimos /start y nos aparecerá algo similar a esto
Escribimos /newbot
Nos apareceré el nombre del bot, y inventamos un nombre para nuestro bot, debe tener el formato “usuario_bot”
Obtendremos un token que vamos a usar en el código fuente
Ahora buscaremos IDBot, y lo iniciamos
Escribimos /getid y nos entregará el user_id que debemos colocar en el código fuente
SUSCRIBETE A NUESTROS BOLETINES, RECIBE EN TU CORREO LAS NOTICIAS MÁS DESTACADAS, SÓLO INGRESANDO TU CORREO ELECTRÓNICO
[wysija_form id=”1″]
PROYECTO RECOMENDADO
El tutorial el youtube lo puedes ver en https://youtu.be/S3HxrlVCzGM saludos cordiales
Buenas tardes Carlos ,gracias por la explicación
no es nada, saludos
Buenas, enhorabuena por el buen trabajo.
¿Sabrian decirme cuanto es el consumo en megas de las notificaciones por telegram? Estoy desarrollando un proyecto y el internet lo obtendría de una tarjeta SIM y estoy sopesando si es mas economico trabajar por SMS con un modulo gsm o con un modem con tarjeta SIM y notificaciones por telegram. Todo depende del consumo de datos para calcular el costo.
Gracias
la verdad que no sabría decirte cuanto consume, saludos
Hola que tal, está genial el proyecto pero…
Es obligatorio utilizar un circuito impreso, ese lo venden o puedo ocupar una protoboard para las conexiones???
y es necesario ocupar el esp32 o igual puedo ocupar el esp8266?
Hola, no es necesario puedes hacerlo en protoboard, saludos
Buenas, excelente proyecto.
Una duda es que al momento de mandar a fabricar el circuito impreso me piden los siguientes requisitos:
NÚMERO DE CAPAS:
ES PANEL (EN ESTE CASO, INFORMAR SI LO REQUIERE FRACCIONADO O PANELIZADO):
COLOR DE ANTISOLDER:
ESPESOR DE LA LÁMINA:
REFERENCIA DEL PROYECTO:
Entonces era para ver si me podría colaborar con esos requisitos, gracias
NÚMERO DE CAPAS: 2
Material: fr-4
Solder Mask: verde rojo negro el color el que tu quieras
ESPESOR DE LA LÁMINA:1.6
Silkscreen: blanco o negra según lo que tu quieras
También debes poner las medidas de la placa ancho x alto
Lo vas a mandar ha hacer en pcbway ????
Muchas gracias,
Y si me podrías regalar la medidas, y conforme a tu pregunta de dónde lo voy a mandar ha hacer el circuito impreso lo que pasa es que yo soy de Colombia entonces al momento de pedirla no me da la opción de envio a Colombia
y referente a otra pregunta ¿Es necesario ocupar el esp32 o igual puedo ocupar el esp8266?
tengo un esp32 devkit copie realmente como lo dice el código, salvo que cambié el nombre de los pines, todo quedó perfecto pero hay un detallito, el problema es que se repite el bucle de encendido y apagado, como si el sensor nunca se apagara y no entiendo porqué, siento que el código tiene un error porque ya cambie de microcontrolador y de sensor y me pasa lo mismo, le agradezco me de una solución.
Hola! Me pasa exactamente lo mismo. Alguna solución?
Gracias y un saludo