Pages: [1] 2   Go Down
Author Topic: Alarma BASICA casera  (Read 3680 times)
0 Members and 1 Guest are viewing this topic.
Hurlingham
Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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!!!!!!!!!!!
Logged

Donostia
Offline Offline
God Member
*****
Karma: 3
Posts: 744
elektronikadonbosco
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Hurlingham
Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 89
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Hurlingham
Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: December 10, 2011, 09:24:03 pm by Slash22 » Logged

Cordoba
Offline Offline
God Member
*****
Karma: 40
Posts: 684
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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;
    }
  }
}
Logged

El que pregunta aprende, el que responde aprende a responder.

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 89
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Hurlingham
Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
    }
  }
}
 
 
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 89
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Hurlingham
Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Donostia
Offline Offline
God Member
*****
Karma: 3
Posts: 744
elektronikadonbosco
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Jr. Member
**
Karma: 0
Posts: 89
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Hurlingham
Offline Offline
Newbie
*
Karma: 0
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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...
Logged

Pages: [1] 2   Go Up
Jump to: