Alarma BASICA casera

Hola gente, mi primer post y hace una semana investigando sobre el mundo arduino.

Quiero hacer mi propia Alarma con un Arduino y programarla/editarla/ampliarla desde mi PC.
Se de programacion pero me cuesta un poco la gramatica, ¿me podran dar una ayuda? asi puedo aprender y despues modificar el codigo.

Estructura de Coneccion.

IN Digital
Pin 1 = PIR Living (normalmente cerrado)
Pin 2 = PIR Piesa adelante (normalmente Cerrado)
Pin 3 = PIR Piesa atras (Normalmente Cerrado)
Pin 4 = Boton Armar/Desarmar (Normalmente cerrado)

OUT Digital
Pin 1 = Led interno (normalmente apagado)
Pin 2 = Sirena interna (normalmente apagado)
Pin 3 = Led externa (normalmente apagado)
Pin 4 = Sirena externa (normalmente apagado)
Pin 5 = Led monitor (normalmente apagado)

Programacion:
Si el "Boton Armar/Desarmar" esta cerrado no hacer nada.
// Este es el boton escondido de armar o desarmar la alarma. En este caso esta desarmada.

Si el "Boton Armar/Desarmar" esta abierto, activar "Led monitor" y la lectura de los sensores.
// Este es el boton escondido de armar o desarmar la alarma. En este caso esta armada y se prende el "Led monitor".

Si alguno de "PIR Living" ó "PIR Piesa adelante" ó "PIR Piesa atras" se abre, esperar 20 segundos y activar "Led Interno", "Led Externo" y "Sirena interna" por 5 segundos.
// En el caso de que se detecte algun minimo movimiento en alguno de los sensores, esperará 10 segundos y se activa parcialmente la alarma durante 5 segundos para espantar.

Si alguno de "PIR Living" ó "PIR Piesa adelante" ó "PIR Piesa atras" se abre durante MAS de 20 segundos (independientemente o en conjunto), esperar 10 segundos y activar "Led interno", "Sirena interna" y "Sirena externa" por 300 segundos (5 minutos).
Si alguno de "PIR Living" ó "PIR Piesa adelante" ó "PIR Piesa atras" se abre durante MAS de 20 segundos (independientemente o en conjunto), esperar 10 segundos y activar "Led externo" hasta que "boton Armar/Desarmar" este cerrado.
// En el caso de que se detecte algun movimiento y que continue por mas de 20 segundos en alguno de los sensores, o en la suma total de segundos de cada sensor, se activa totalmente durante 5 Minutos, y deja prendido el "Led Externo" hasta que "Boton Armar/Desarmar" este cerrado, para avisarnos que ALGO sucedió al estar ingresando al hogar.

Consultas...

¿Me pueden dar una ayuda con el codigo? no se como armar la estructura, pero al verlo seguramente empiece a entenderlo para editarlo/ampliarlo.
¿Que arduino me recomiendan con puerto USB?

GRACIAS!!!!!!!!!!!

Has hecho los tutoriales? si sabes de programación, a nada que hagas unos cuantos tutoriales (entendiendo cada sentencia del código) tendrían que poder escribir el programa más o menos. Te digo esto porque no creo que nadie te escriba el código desde cero, pero seguro que si te ayudara la gente si ve que lo estas intentando y que te has atascadado con algo, pero para eso tienes que poner tu código.

Si no sabes de que te estoy hablando mira los links de mi firma y recuerda que todos hemos aprendido empezando con los tutoriales. Salu2

Ionhs, entiendo lo que me escribis, estoy en la lectura de los tutoriales.
Igualmente, si alguien me puede dar una ayuda será bienvenida. En cuanto tenga mi codigo lo posteo.

Hola Slash22, parece bien estructurado.

Creo que lo mejor será que una vez leídos los tutoriales y hechas pequeñas pruebas individuales del conjunto, nos preguntes algo concreto que no tengas claro o no consigas hacer funcionar correctamente. Así de manera tan general es difícil ayudarte y no creo que nadie desarrolle el código completo.

Un saludo y suerte con el proyecto

Ixreb, si comprendo, estoy leyendo tutoriales.
Lo que mas se complica es el tema de aun no tener montado el Arduino, y estoy programando al aire... (se comprende?)

Lo que me pregunto... ¿Arduino UNO? esta bien para este proyecto? o nesesitario otro modelo?

Es mas sencillo y economico en los modulos a agregar, hacer que me mande monitorio ¿Por mail por ethernet o por sms?

Gracias

Te sugiero una cosa sin ofender.
Primero empezá haciendo lo basico, hace un mini programa que lea una entrada y active una salida, juga con los tiempos, despues agregale otra entrada y combiná para obtener otra salida, y asi. en cuanto te des cuenta vas a tener tu programa listo.

Para tu alarma haria algo asi

if (BotonArmar)
{
if (Entrada1)
{
Delay(10); espero 10ms para estabilizar
if (Entrada1) // si sigue en 1 entonce disparar
{
DispararAlarma;
}
}
}

Hola Slash22,
como te comentan otros, lo mejor es que empieces poco a poco, como lo hemos hecho todos. Primero, cuando tengas el Arduino, practica con los ejemplos de Blink, Button... Combina un botón y un led usando retardos.
Luego le conectas un PIR y un led: vas pasando delante, probando distancias, probando los retardos con delay... Monta una alarma muy simple con un PIR y una sirena. Siempre tendrás tiempo de ir complicando el sistema.
Más tarde tendrás que pensar cómo conectar los PIR, las sirenas y lo demás, o sea, cómo va a ser la red en torno al Arduino: ¿tirarás cables? ¿O usarás enlaces tipo wireless? Tendrás que sopesar ventajas y desventajas, precios...
Y un consejo: piensa qué pasaría si el intruso lo primero que hace es cortarte la corriente de la casa. A lo mejor debes pensar también en una fuente autónoma.

Slash22:
Ixreb, si comprendo, estoy leyendo tutoriales.
Lo que mas se complica es el tema de aun no tener montado el Arduino, y estoy programando al aire... (se comprende?)

Lo que me pregunto... ¿Arduino UNO? esta bien para este proyecto? o nesesitario otro modelo?

Es mas sencillo y economico en los modulos a agregar, hacer que me mande monitorio ¿Por mail por ethernet o por sms?

Gracias

Pues tira números, ¿con las entradas y salidas que tienes te da con un Arduino UNO (o Duemilanove)? Si no es así tira a por el Mega.

No obstante, personalmente pienso que para empezar a cacharrear es relativamente mejor usar un Arduino UNO o Duemilanove. Uno de los motivos es que casi todos los ejemplos están enfocados a este, que siendo un novato puede facilitar un tanto la tarea inicial, otra ventaja es poder quitar el chip ATmega328 que para algún proyecto puede ser necesario. Así que si un Arduino UNO no se te queda corto (ni va justo) apostaría por eso, en otro caso por el mega.

De todas maneras ya verás que cuando te llegue la placa y empieces a hacer pequeñas pruebas individuales de tu proyecto, es fácil de manejar y se aprende rápido y te disipará muchas dudas de como enfocar el desarrollo.

Haber que les parece esto...

int pirliving = 1 //PIR Living - normalmente cerrado
int piradelante = 2 //PIR Piesa adelante - normalmente Cerrado
int piratras = 3 //PIR Piesa atras - normalmente Cerrado
int boton = 4 //Boton Armar/Desarmar - normalmente cerrado en Desarmar

int ledinterno = 7 //Led interno ROJO - normalmente apagado
int sirenainterna = 8 //Sirena interna - normalmente apagado
int ledexterno = 9 //Led externo ROJO- normalmente apagado
int sirenaexterna = 10 //Sirena externa - normalmente apagado
int ledarmado = 11 //Led monitor armado AMARILLO - normalmente apagado
int leddesarmado = 12 //Led monitor desarmado VERDE - normalmente prendido

void setup ()
{
pinMode(pirliving, INPUT);
pinMode(piradelante, INPUT);
pinMode(piratras, INPUT);
pinMode(boton, INPUT);
pinMode(ledinterno, OUTPUT);
pinMode(sirenainterna, OUTPUT);
pinMode(ledexterno, OUTPUT);
pinMode(sirenaexterna, OUTPUT);
pinMode(ledmonitor, OUTPUT);
}

void loop ()
{
if (digitalRead(boton, LOW); //Si el boton esta ARMADO...
{
digitalWrite(ledarmado, HIGH); //prende el led de Armado
delay(10000) // nos da 10 segundos para salir del hogar
}
else //sino...
{
digitalWrite(leddesarmado, HIGH) //prende el led de Desarmado
}

if (digitalRead(boton, LOW) && (digitalRead(pirliving, LOW) || (digitalRead(piradelante, LOW) || (digitalRead(piratras, LOW); //Si el boton esta ARMADO y el PIR del living o adelante o atras detecta...
{
digitalWrite(ledinterno = HIGH); // activar el led interno
delay(10000) //Espera 10 segundos y ...
if (digitalRead(boton, LOW) && (digitalRead(pirliving, LOW) || (digitalRead(piradelante, LOW) || (digitalRead(piratras, LOW); //Si el boton continua ARMADO y el PIR del living o adelante o atras continua detectando...
{
digitalWrite(sirenainterna = HIGH); // activar la sirena interna
digitalWrite(sirenaexterna = HIGH); // activar la sirena externa
digitalWrite(ledexterno = HIGH); // activar el led externo
delay(30000) //espera 30 segundos
digitalWrite(sirenainterna = LOW); // desactiva la sirena interna
digitalWrite(sirenaexterna = LOW); // desactiva la sirena externa
digitalWrite(ledexterno = LOW); // desactiva el led externo
delay(30000) //espera 30 segundos para evitar un bucle erroneo
}
if (digitalRead(boton, LOW) && (digitalRead(pirliving, HIGH) && (digitalRead(piradelante, HIGH) && (digitalRead(piratras, HIGH); //Si el boton continua ARMADO y el PIR del living y adelante y atras deja de detectar...
{
digitalWrite(sirenainterna = HIGH); // activar la sirena interna
digitalWrite(ledexterno = HIGH); // activar el led externo
delay(1000) //durante 1 segundos y ...
digitalWrite(sirenainterna = LOW); // desactiva la sirena interna
digitalWrite(ledexterno = LOW); // desactiva el led externo
delay(30000) //espera 30 segundos para evitar un bucle erroneo
}
}
}

bueno, cuéntanos un poco más que realmente no sé bien que esperas que contestemos. ¿lo has probado? ¿hay algo que no marche como esperas?

Un saludo

Hola Ixreb.
El tema es el siguiente. Yo arme este codigo, pero no tengo aun una placa para cargarlo y probarlo.
Esperaba que si hay alguien que ya note errores en el codigo de gramatica, logica o manera de resumirlo me lo comente y debatamos sobre la logica en si.

Gracias

a simple vista faltan punto coma ; detras de las instrucciones. Lo estas haciendo complicado, programar sin la placa es duro. Salu2

Aunque no tengas la placa si que podrías probar a ir compilando con el IDE de arduino, porque a simple vista como dice ionhs faltan ";" detrás de muchas instrucciones (por ejemplo detrás de casi cada delay).

De todas formas yo esperaría a tener la placa, hacerlo así te llevará más tiempo del necesario y no tendrás certeza de que funcione.

Ixreb:
De todas formas yo esperaría a tener la placa, hacerlo así te llevará más tiempo del necesario y no tendrás certeza de que funcione.

Comprendo lo que me dicen. Para volver a introducirlos les comento como comienza todo esto.
Yo en la actualidad tengo una alarma DSG en mi hogar.
Un poco canzado de su complicada configuracion y su pequeña flexibilidad es que quiero reemplazarla por una arduino UNO. Para asegurarme que funcione, me baje el soft y practico su configuracion para...

  1. aprender
  2. poder luego compar una mini y dejar como alarma la mini.
  3. quedarme con la UNO para usarla de hobby en proyectos de robotica.

Pero para todo eso quiero asegurarme que puedo usar la UNO como alarma y vender la DSG y con esa $ comprar la UNO. Ya tengo los Pir y sirenas instaladas.
Por esa razon es que no tengo la placa en este momento.

Si no voy muuuy mal me arriesgaria a comprarla y empezar una inversion en la practica.

Correjire los detalles que me dijeron.

¿como ven el resto del codigo?

Muchas gracias

Hola,
Como te dice Ixreb, para compilar el código no te hace falta placa. Bájate la IDE de Arduino, intenta compilar y mira los errores que te da.
Como te va a dar muchos errores, para depurarlos, empieza compilando una fuente con unas pocas líneas, cuando esas estén bien, añades algunas líneas más...

ufff, les copio los errores de compilación.

AlarmaArduino.cpp: In function 'void setup()':
AlarmaArduino:22: error: 'ledmonitor' was not declared in this scope
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h: In function 'void loop()':
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:110: error: too many arguments to function 'int digitalRead(uint8_t)'
AlarmaArduino:27: error: at this point in file
AlarmaArduino:27: error: expected )' before ';' token AlarmaArduino:32: error: 'else' without a previous 'if' AlarmaArduino:35: error: expected ;' before '}' token
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:110: error: too many arguments to function 'int digitalRead(uint8_t)'
AlarmaArduino:37: error: at this point in file
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:110: error: too many arguments to function 'int digitalRead(uint8_t)'
AlarmaArduino:37: error: at this point in file
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:110: error: too many arguments to function 'int digitalRead(uint8_t)'
AlarmaArduino:37: error: at this point in file
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:110: error: too many arguments to function 'int digitalRead(uint8_t)'
AlarmaArduino:37: error: at this point in file
AlarmaArduino:37: error: expected )' before ';' token AlarmaArduino:37: error: expected )' before ';' token
AlarmaArduino:37: error: expected )' before ';' token AlarmaArduino:37: error: expected )' before ';' token
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:109: error: too few arguments to function 'void digitalWrite(uint8_t, uint8_t)'
AlarmaArduino:39: error: at this point in file
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:110: error: too many arguments to function 'int digitalRead(uint8_t)'
AlarmaArduino:41: error: at this point in file
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:110: error: too many arguments to function 'int digitalRead(uint8_t)'
AlarmaArduino:41: error: at this point in file
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:110: error: too many arguments to function 'int digitalRead(uint8_t)'
AlarmaArduino:41: error: at this point in file
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:110: error: too many arguments to function 'int digitalRead(uint8_t)'
AlarmaArduino:41: error: at this point in file
AlarmaArduino:41: error: expected )' before ';' token AlarmaArduino:41: error: expected )' before ';' token
AlarmaArduino:41: error: expected )' before ';' token AlarmaArduino:41: error: expected )' before ';' token
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:109: error: too few arguments to function 'void digitalWrite(uint8_t, uint8_t)'
AlarmaArduino:43: error: at this point in file
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:109: error: too few arguments to function 'void digitalWrite(uint8_t, uint8_t)'
AlarmaArduino:44: error: at this point in file
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:109: error: too few arguments to function 'void digitalWrite(uint8_t, uint8_t)'
AlarmaArduino:45: error: at this point in file
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:109: error: too few arguments to function 'void digitalWrite(uint8_t, uint8_t)'
AlarmaArduino:47: error: at this point in file
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:109: error: too few arguments to function 'void digitalWrite(uint8_t, uint8_t)'
AlarmaArduino:48: error: at this point in file
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:109: error: too few arguments to function 'void digitalWrite(uint8_t, uint8_t)'
AlarmaArduino:49: error: at this point in file
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:110: error: too many arguments to function 'int digitalRead(uint8_t)'
AlarmaArduino:52: error: at this point in file
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:110: error: too many arguments to function 'int digitalRead(uint8_t)'
AlarmaArduino:52: error: at this point in file
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:110: error: too many arguments to function 'int digitalRead(uint8_t)'
AlarmaArduino:52: error: at this point in file
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:110: error: too many arguments to function 'int digitalRead(uint8_t)'
AlarmaArduino:52: error: at this point in file
AlarmaArduino:52: error: expected )' before ';' token AlarmaArduino:52: error: expected )' before ';' token
AlarmaArduino:52: error: expected )' before ';' token AlarmaArduino:52: error: expected )' before ';' token
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:109: error: too few arguments to function 'void digitalWrite(uint8_t, uint8_t)'
AlarmaArduino:54: error: at this point in file
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:109: error: too few arguments to function 'void digitalWrite(uint8_t, uint8_t)'
AlarmaArduino:55: error: at this point in file
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:109: error: too few arguments to function 'void digitalWrite(uint8_t, uint8_t)'
AlarmaArduino:57: error: at this point in file
C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:109: error: too few arguments to function 'void digitalWrite(uint8_t, uint8_t)'
AlarmaArduino:58: error: at this point in file

Hola de nuevo,
intenta compilar una sola línea, la primera: te dará error, porque le falta el ';'
Cuando no te dé ningún error, añades la segunda línea, y haces lo mismo...

int pirliving = 1        //PIR Living - normalmente cerrado

void setup()
{
 }

void loop()
{
 }

Sin ver el código es complicado, pero en la compilación ya se ven algunos:
AlarmaArduino:22: error: 'ledmonitor' was not declared in this scope //No has declarado la variable en ningún sitio

C:\arduino-0019\hardware\arduino\cores\arduino/wiring.h:110: error: too many arguments to function 'int digitalRead(uint8_t)' //Creo que has declarado una variable con el nombre de la función, debería ser "int variable=digitalRead(pin)"

AlarmaArduino:27: error: expected `)' before ';' token //Te has olvidado de poner un paréntesis, los demás errores pueden ser a causa de esto.

Hola, esta bueno tu proyecto.

Yo me estoy armando una para el auto, si queres te doy una mano.
Mandame un mp y nos comunicamos, contame tambien masomenos las cosas que tengas para ver que le podemos poner o no. Sobretodo, si tenias una central puesta anteriormente, seguramente tenes los sensores y el cableado ya armado, en dos o tres dias como mucho tenes una alarma nueva :smiley:

Sobre la placa Arduino, es al pedo que compres una mini, preferible comprar un atmega, quemarlo, 2 condensadores de 22pf, un cristal de 16mhz, un regulador y 2 condenza de 10uF y tenes la central practicamente armada.

Yo vengo muy cebado desde que una vez compre una alarma para un local, y obviamente queria ver como funcionaba, luego veo que tenia un PIC y 10 o 12 componentes, nada que con un scanner de rf no podia hackear asi que ahora la necesite y tengo las cosas, me puse a armarme la mia :slight_smile:

Un abrazo grande!