16 abr 2020

ALARMA 3 PIR - ARDUINO



ALARMA - Arduino - 3 PIRs

Versiones para lcd 1604 y 2004 I2C

Sensores de Apertura e Infrarrojos

Control por teclado (keypad) y por Mando Remoto




PCB alimentación y conexiones


LCD 1602


LCD 2004





















 

V I D E O


Materiales :

- Arduino Uno, Nano, Mini, Mega, etc.
- LCD 1602 ó 2004 I2C
- Keypad 3x4
- PIR sensores (3) (tiempo al mínimo, sensibilidad la necesaria)
- Receptor 433Mhz (para grabar el mando Emisor 433Mhz)
- Leds rojo y verde (unir anodo+ con catodo- y conectar al A1)
- Resistencias 220 ó 330 ohms (2)
- Buzzer 5v
- Mando Remoto 433Mhz (3 ó 4 botones)
- Relé de 5v (o transistor BD139 para sirena 12v)
- Sirena (pequeña de 12v o grande a 220v)


Conexiones :

A0 -  Interruptores Magnéticos
A1 - LEDs rojo y verde
A2 - Relé de 5v para Sirena 
A3 - Buzzer
A4 - LCD SDA
A5 - LCD SCL

D2 - Receptor 433Mhz data

D3 - PIR1
D4 - PIR2
D5 - PIR3

D6 -   1 Keypad
D7 -   2      "
D8 -   3      "
D9 -   4      "
D10 - 5      "
D11 - 6      "
D12 - 7      "

Programas:

Mando_leer es para ver los códigos grabados en cada mando remoto.

Mando_grabar es para poner los códigos propios en los mandos (hace falta el emisor de 433Mhz, se venden con el receptor)

Eeprom es para grabar por primera vez la eeprom, para los que no dominen la programación en arduino.

En el Alarma433pir3c.ino hay una linea en el Setup que pone:

// weprom();

La primera vez hay que "descomentarla" y cargar el prog. en el arduino para que grabe los datos en la eeprom:

weprom();

y después volver a comentarla:

// weprom();

para desactivarla, luego cargar de nuevo el prog. para que no grabe los datos cada vez que se resetea el arduino o se vaya la luz.

Si no se quiere hacer esto, se carga el programa eeprom y después el alarma433 y listo.


Programas para grabar y leer Mando Remoto:


En el programa de grabar, ahora se hace directamente por el puerto Serial, se escribe el código +intro y el emisor lo envía, 0 +intro sirve de pausa entre códigos

Hay que resetear el mando para dejarlo en modo "Copy" como si fuéramos a copiar de otro mando.

Una antenita ayuda, si no se tiene, con un cable de cobre rígido de 16,5cm sirve de antena.



59 comentarios:

  1. hola, e intentado descargar el archivo pero sale uno con extension lnk

    ResponderEliminar
  2. No, te tiene que salir un fichero : alarma433PIR3c.rar

    ResponderEliminar
  3. Pincha en el enlace y luego en la parte superior dcha en la flecha de descarga

    ResponderEliminar
  4. Te descarga un rar pero dentro del rar solo está uno con extensión .lkn

    ResponderEliminar
  5. bro en el link subiste pero el acceso directo entonces no funciona

    ResponderEliminar
  6. Re-subido y cambiado el enlace al GoogleDrive

    ResponderEliminar
  7. EXELENTE TRABAJO!!!!!!, una pregunta que puede sonar tonta: en el .RAR hay 3 carpetas .ino :MANDO_LEER, MANDO_GRABAR y eeprom,forman parte del codigo principal Alarma433PIR3c.ino? como se complementan?

    ResponderEliminar
  8. Mando_leer es para ver los códigos grabados en cada mando remoto.
    Mando_grabar es para poner los códigos propios en los mandos ( hace falta el emisor de 433Mhz, los venden juntos)
    Eeprom es para grabar por primera vez la eeprom, para los que no dominen la programación.
    En el Alarma433pir3c.ino hay una linea en el Setup que pone:
    // weprom();
    la primera vez hay que "descomentarla" y cargar el prog. en el arduino para que grabe los datos en la eeprom:
    weprom();
    y después volver a comentarla:
    // weprom();
    para desactivarla, luego cargar de nuevo el prog. para que no grabe los datos cada vez que se resetea el arduino o se va la luz.
    Si no se quiere hacer esto, se carga el programa eeprom y después el alarma433 y listo.

    Mando_ Grabar : https://www.youtube.com/watch?v=-W1-pw_T83Q&feature=youtu.be
    Mando_leer : https://www.youtube.com/watch?v=FoLc2DEtjgg&feature=youtu.be

    En el programa de grabar, ahora se hace directamente por el puerto Serial, se escribe el código-intro y el emisor lo envía,
    0-intro sirve de pausa entre códigos
    Hay que resetear el mando para dejarlo en modo "Copy" como si fuéramos a copiar de otro mando.
    Una antenita ayuda, si no se tiene, con un cable de cobre rígido de 16,5cm hace de antena.

    ResponderEliminar
  9. hola exelente proyecto me gustaria contactarme por desarrollos
    vigiaseguridad@yahoo.com.ar

    ResponderEliminar
  10. Cualquier duda o consulta, por aquí la recibo al momento

    ResponderEliminar
  11. HOLA ESTY ELABORANDOLA CON DISPLAY 2004
    NO PUEDO HACERLA FUNCIONAR Y ADEMAS LA CONEXION DEL I2C EN EL DIAGRAMA VA EN EL A4 Y A5

    ResponderEliminar
  12. Si tienes un Arduino Uno los pines para SCL y SDA son el 16 y 17 (después de gnd y Aref) o el A4 y A5
    En el LCD 2004 te tiene que funcionar correctamente pero tienes que comprobar la dirección del I2C (puede ser 0x27 ó 0x3F) prueba cambiando la dirección o con un programa como el I2c scanner que te indique la dirección del I2C
    Luego modifica el programa a tu gusto para adaptarlo al LCD 2004

    ResponderEliminar
  13. Tendrías que cambiar estas dos líneas :

    LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

    lcd.begin(16,2);

    por

    LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

    lcd.begin(20,4);

    ResponderEliminar
  14. ME PONGO CON ESO MUCHAS GRACIAS POR TU VALIOSO APORTE

    ResponderEliminar
  15. 'POSITIVE' was not declared in this scope

    ME APARECE ESTO

    TE MANDO EL INICIO

    #include
    #include // Libreria Keypad
    #include // Libreria receptor 433mhz
    #include
    #include

    // LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // comprobar la direcciín del IC2

    LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

    lcd.begin(20,4);
    RCSwitch mySwitch = RCSwitch();

    LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

    lcd.begin(20,4);



    #include

    #include // Libreria Keypad incluida
    #include
    #include
    LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE)

    RCSwitch mySwitch = RCSwitch();

    ResponderEliminar
  16. SERA LA LIBRERIA I2C
    PODRIAS DECIRME DE DONDE DESCARGO LA Q USAS

    ResponderEliminar
  17. Prueba de aqui :

    https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library

    ResponderEliminar

  18. Nueva actualización y añadida una versión para LCD 2004 I2C

    ResponderEliminar
  19. REALMENTE UN GROSO IMPRESIONANTE

    ResponderEliminar
  20. hola muy buen proyecto . te felicito ahora te molesto para ver si me podes ayudar ya copie todas las librerias pero me sale como al compañero edgar 'POSITIVE' was not declared in this scope pero yo no pude solucionarlo .ya vaje el de la direccion que pusiste en comentarios y no me resulta .gracias

    ResponderEliminar
  21. POSITIVE, creo que se refiere a la linea del LCD :
    LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

    Descarga la librería : https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library

    Comprueba la dirección del I2C puede ser 0x27 ó 0x3F

    ResponderEliminar
  22. Ya tenia hecho la alarma anterior pero esta nueva actualización es cool!!!, ya la estoy probando y quedo genial. Muchas gracias por tu nuevo aporte

    ResponderEliminar
  23. hola amigo buenos dias, muy buen proyecto y gracias, queria preguntar por que me sale
    Arduino:1.8.12 (Windows 10), Tarjeta:"Arduino Uno"

    alarma433PIR3c162:17:53: error: 'POSITIVE' was not declared in this scope

    LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // comprobar la direcciín del IC2

    ^~~~~~~~

    D:\Disco E\alarma seosr\alarma433PIR3c162\alarma433PIR3c162\alarma433PIR3c162.ino: In function 'void loop()':

    D:\Disco E\alarma seosr\alarma433PIR3c162\alarma433PIR3c162\alarma433PIR3c162.ino:303:9: warning: invalid conversion from 'const char*' to 'char' [-fpermissive]

    key = "";

    ^~

    Se encontraron varias bibliotecas para "Keypad.h"
    Usado: C:\Users\RAUL\Documents\Arduino\libraries\Keypad
    No usado: C:\Program Files (x86)\Arduino\libraries\Keypad
    exit status 1
    'POSITIVE' was not declared in this scope

    Este informe podría contener más información con
    "Mostrar salida detallada durante la compilación"
    opción habilitada en Archivo -> Preferencias.

    ResponderEliminar
  24. La libreria LCD I2C, descarga y prueba esta :

    https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library

    ResponderEliminar
  25. Creado un módulo wireless con arduino Nano, sensor pir y transmisor 433Mhz para esta alarma.
    Con este sistema ya no es necesario poner sensores por cable ni magnéticos.
    La nueva versión está disponible arriba (solo lcd 2004 de momento)
    y el módulo aqui :
    https://berreizeta.blogspot.com/2020/07/arduino-alarma-pir-modulo-wireless.html

    ResponderEliminar
  26. viejo buenas tardes, le comento que es uno de los mejores proyectos que eh visto en youtube. ppor tal razon lo quiero colocar en una tienda que tengo. pero te confieso que me quedo grande el modulo de rf 315mhz. como haces para que funsione? ayudame para poder colocarla en la tienda. gracias y mil gracias

    ResponderEliminar
  27. El módulo solo se utiliza para recibir los códigos grabados en el mando remoto que, logicamente, tiene que ser de la misma frecuencia (315mhz o 433mhz),
    Para ello hay dos programas que sirven para leer los codigos de los mandos y para grabar los códigos que queramos que tengan, te indico el link :
    https://drive.google.com/file/d/0B-aQ4eIWtpZcaGd4S25JWTBEclk/view?usp=sharing

    ResponderEliminar
  28. Tengo terminado el programa para 1 PIR fijo (en base) y 3 PIR inalambricos (wireless) con el transcetor HC-12 que tiene mucho mas alcance que el "basico" de esta forma evitamos tener que echar cables para los pir fijos. Pronto lo pondré por aqui.

    ResponderEliminar
  29. Subidas las ultimas versiones:

    https://berreizeta.blogspot.com/2020

    ResponderEliminar
  30. Hola muy buena, facilitaciones por el magnifico trabajo que has hecho.
    Me encuentro haciendo un proyecto de domótica enfocado en la creación de un sistema de iluminación y otro de alarma, me preguntaba si con el código que has creado tu habría alguna forma d adaptarlo para un uso mas simple que involucre en lugar de una mando a 433Mhz uno mas simple por infrarrojo. De ser así como lo podría hacer sin estropear el código.
    Otra duda que tengo es sobre los interruptores magnéticos, no sé que función tienen en el programa y me gustaría saber si hay alguna forma de prescindir de ellos. He visto que en una de las fotos que adjuntas "Alarma 3 pir Fritz" los interruptores no aparecen per la verdad no sé la razón. De antelación muchas gracias y disculpa si las preguntas que he hecho son muy tontas.


    el archivo que has pasado con los programas, he visto la diferentes fotos que has adjuntado de las conexiones y me preguntaba en que diferencia hay en la utilización de los interruptores magnéticos y si suponen una diferencia notable en el funcionamiento del programa. Por cierto la imagen a la que me refiero es la de "Alarma 3 pir Fritz".

    ResponderEliminar
  31. No tienes ningún problema para cambiar el mando 433Mhz por uno de infrarrojos, cambiando las librerías y poniendo un receptor también de infrarrojos.
    En las últimas versiones ya no aparecen los sensores magnéticos por dos motivos: son propensos a los falsos positivos y al haber incorporado a estas versiones los módulos Pir Wifi ya no es necesario echar cables desde la base hasta los magnéticos.
    La última versión es para Mega2560 ya que el Arduino Uno no daba para más:

    https://berreizeta.blogspot.com/2020/10/alarma-arduino-mega-pir-wireless.html

    ResponderEliminar
    Respuestas
    1. Gracias por responder tan rápido, ahora mismo me pondré en ello, seguramente te vuelva a escribir. Saludos y disculpa las molestias.

      Eliminar
  32. En lo que pueda ayudarte, por aqui me encuentras

    ResponderEliminar
  33. La última versión de esta Alarma envía emails de aviso de estado : ON, OFF, WATCHING a través del ESP-01 (ESP8266) via WIFI y hay también una versión que por medio del SIM900 envía SMS y/o efectúa llamadas al teléfono, espero ponerla en el Blog pronto.

    ResponderEliminar
  34. Hola Berreizeta, hace un tiempo me ecribí preguntando si era possible cambiar la antena que utilizas en tu projecto por un sensor receptor de infrarojos. Al final decidí hacer un codigo propio para mi proyecto pero mucho más simple, pero resulta que no me las arreglo para hacer que funcione. Podrias porfavor echarle un vistazo?

    codigo:
    // utilizo 3 pirs conectados a un arduino mega, lo que quiero cosneguir es hacer una sencilla alarma que se pueda armar o desarmar segun el boton que pulse, el codigo es mu simple i quizá te rias de mi, pero me estoy rompiendo la cabeza para conseguir que funcione y no lo consigo. Mi problema es que cuando activo la alarma y en teoria si los pirs detectan movimiento tendrian k encender el buzzer pero no pasa nada. Te agradeceria si pudieras echarle un vistazo



    #include //Libreria d'infrarojos

    int sensor = 11;
    IRrecv irrecv(sensor);
    decode_results lectura;
    int PIR1 = 10;
    int PIR2 = 9;
    int PIR3 = 8;
    int lectura1 = 0;
    int lectura2 = 0;
    int lectura3 = 0;
    int ledVerde = 2; //señaliza que la alarma se ha activado
    int ledRojo= 3; //señaliza que la alarma se ha desactivado

    int Buzzer = 5;

    void setup() {
    // put your setup code here, to run once:
    Serial.begin(9600);
    irrecv.enableIRIn();
    pinMode(ledVerde, OUTPUT);
    pinMode(ledRojo, OUTPUT);
    pinMode(PIR1, INPUT);
    pinMode(PIR2, INPUT);
    pinMode(PIR3, INPUT);
    pinMode(Buzzer, OUTPUT);
    delay(10000); //para calibrar los pirs
    }

    void loop() {
    // put your main code here, to run repeatedly:

    if (irrecv.decode(&lectura)){ // recibir comando
    switch (lectura.value){
    case 0xFFA25D: // Botón para armar
    digitalWrite(ledVerde, HIGH);
    digitalWrite(ledRojo, LOW);
    delay(10000); //tiempo de espera antes de que la alarma se active
    alarmaON();

    break;

    case 0xFF629D: // boton para desarmar
    digitalWrite(ledVerde, LOW);
    digitalWrite(ledRojo, HIGH);
    alarmaOFF();
    break;

    case 0xFF21D: // boton para activar buzzer directamente
    Panico();
    break;

    }

    irrecv.resume();

    }
    }

    void alarmaON(){
    lectura1 = digitalRead(PIR1);
    lectura2 = digitalRead(PIR2);
    lectura3 = digitalRead(PIR3);

    if (lectura1) {
    digitalWrite(Buzzer, HIGH);
    }
    if (lectura2){
    digitalWrite(Buzzer, HIGH);
    }
    if (lectura3){
    digitalWrite(Buzzer, HIGH);
    }
    }
    void alarmaOFF()
    {
    lectura1 = 0;
    lectura2 = 0;
    lectura3 = 0;
    digitalWrite(Buzzer, LOW);
    }

    void Panico()
    {
    digitalWrite(Buzzer, HIGH);
    }

    ResponderEliminar
  35. Déjame un email y te envió el código.
    Cambia los hexadecimales a decimales y te funcionará
    berreizeta(arroba)hotmail.com

    ResponderEliminar
  36. Prueba:

    #include

    int sensor = 11;

    IRrecv irrecv(sensor);
    decode_results lectura;

    int PIR1 = 5;
    int PIR2 = 6;
    int PIR3 = 7;
    int lectura1 = 0;
    int lectura2 = 0;
    int lectura3 = 0;

    //Aprovecha los pines Analógicos :)
    byte ledVerde = A2; //señaliza que la alarma se ha activado
    byte ledRojo= A3; //señaliza que la alarma se ha desactivado
    byte Buzzer = A4;

    //---------------------------------------------------------
    void setup() {

    Serial.begin(9600);
    irrecv.enableIRIn();
    pinMode(ledVerde, OUTPUT);
    pinMode(ledRojo, OUTPUT);
    pinMode(PIR1, INPUT);
    pinMode(PIR2, INPUT);
    pinMode(PIR3, INPUT);
    pinMode(Buzzer, OUTPUT);
    delay(1000); //para calibrar los pirs
    }
    //------------------------------------------------------------------
    void loop() {

    if (irrecv.decode(&lectura)){ // recibir comando
    Serial.println(lectura.value);

    switch (lectura.value){
    case 16738455: // Botón para armar (boton 1)
    digitalWrite(ledVerde, HIGH);
    digitalWrite(ledRojo, LOW);
    // delay(10000); //tiempo de espera antes de que la alarma se active
    alarmaON();

    break;

    case 16750695: // boton para desarmar (boton 2)
    digitalWrite(ledVerde, LOW);
    digitalWrite(ledRojo, HIGH);
    alarmaOFF();
    break;

    case 16756815: // boton para activar buzzer directamente (boton 3)
    Panico();
    break;

    }

    irrecv.resume();

    }
    } // end loop
    //---------------------------------------------------
    void alarmaON(){

    if (digitalRead(PIR1) == HIGH) {
    beep();
    Serial.println("PIR1");
    }
    if (digitalRead(PIR2) == HIGH) {
    beep();
    Serial.println("PIR2");
    digitalWrite(Buzzer, HIGH);
    }
    if (digitalRead(PIR3) == HIGH) {
    Serial.println("PIR3");
    digitalWrite(Buzzer, HIGH);
    }
    }
    //----------------------------------------------------
    void alarmaOFF(){
    lectura1 = 0;
    lectura2 = 0;
    lectura3 = 0;
    digitalWrite(Buzzer, LOW);
    }
    //-----------------------------------------------
    void Panico(){
    digitalWrite(Buzzer, HIGH);
    }
    //-------------------------------------------------------
    void beep(){
    digitalWrite(ledRojo, HIGH);
    digitalWrite(Buzzer, HIGH);
    delay(100);
    digitalWrite(Buzzer, LOW);
    digitalWrite(ledRojo, LOW);
    }
    //------------------------------------------

    ResponderEliminar
  37. Abre el Monitor Serie y anota los códigos de los botones que te interesen, luego ponlos en el programa (case xxxxxxxxx)

    ResponderEliminar
    Respuestas
    1. De verdad muchísimas gracias, ahora me pondré en ello. Te diré que tal todo.

      Eliminar
  38. Alarma simple pero funcional :

    // Berreizeta - Alarma simple con sensor infrarrojos Keyes KY-022 y sensor PIR

    #include // PON LA LIBRERIA IRremote.h que el blog la borra

    int sensor = 11;

    IRrecv irrecv(sensor);
    decode_results lectura;

    int PIR1 = 5;
    int PIR2 = 6;
    int PIR3 = 7;
    int alarma = 0;
    int timeactiv = 10000; // tiempo activacion = 10 seg
    //Aprovecha los pines Analógicos :)
    byte ledVerde = A3; //señaliza que la alarma se ha activado
    byte ledRojo= A2; //señaliza que la alarma se ha desactivado
    byte Buzzer = A1;

    //---------------------------------------------------------
    void setup() {

    Serial.begin(115200);
    Serial.println("Esperando a remote ..:");
    irrecv.enableIRIn();
    pinMode(ledVerde, OUTPUT);
    pinMode(ledRojo, OUTPUT);
    pinMode(PIR1, INPUT);
    pinMode(PIR2, INPUT);
    pinMode(PIR3, INPUT);
    pinMode(Buzzer, OUTPUT);
    delay(1000); //para calibrar los pirs
    }
    //------------------------------------------------------------------
    void loop() {

    remote();

    if (alarma == 1 ){
    alarmaON();
    }

    } // end loop
    //---------------------------------------------------
    void remote(){
    if (irrecv.decode(&lectura)){ // recibir comando
    Serial.print(lectura.value);
    Serial.print(" - ");

    switch (lectura.value){
    case 16738455: // Botón para armar (boton 1)
    beep();
    digitalWrite(ledRojo, HIGH);
    digitalWrite(ledVerde, LOW);
    Serial.println("ALARMA READY en 10s");
    delay(timeactiv); //tiempo de espera antes de que la alarma se active
    alarma = 1;
    Serial.println("ALARMA is ON");
    break;

    case 16750695: // boton para desarmar (boton 2)
    beep();
    digitalWrite(ledRojo, LOW);
    digitalWrite(ledVerde, HIGH);
    Serial.println("ALARMA OFF");
    alarma = 0;
    alarmaOFF();
    break;

    case 16756815: // boton para activar buzzer directamente (boton 3)
    Serial.println("PANICO SIRENA ON");
    Panico();
    break;

    }
    irrecv.resume();
    }
    }
    //------------------------------------------------------
    void alarmaON(){

    if (digitalRead(PIR1) == HIGH && alarma == 1) {
    beep();
    Serial.println("Detection in PIR1");
    alarma = 0;
    Panico();
    }
    if (digitalRead(PIR2) == HIGH && alarma == 1) {
    beep();
    Serial.println("Detection in PIR2");
    alarma = 0;
    Panico();
    }
    if (digitalRead(PIR3) == HIGH && alarma == 1) {
    beep();
    Serial.println("Detection in PIR3");
    alarma = 0;
    Panico();
    }
    }
    //----------------------------------------------------
    void alarmaOFF(){
    alarma = 0;
    digitalWrite(ledRojo, LOW);
    digitalWrite(ledVerde, HIGH);
    digitalWrite(Buzzer, LOW);
    }
    //-----------------------------------------------
    void Panico(){
    digitalWrite(Buzzer, HIGH);
    digitalWrite(ledRojo, HIGH);
    digitalWrite(ledVerde, HIGH);
    }
    //-------------------------------------------------------
    void beep(){
    digitalWrite(ledRojo, HIGH);
    digitalWrite(Buzzer, HIGH);
    delay(50);
    digitalWrite(Buzzer, LOW);
    digitalWrite(ledRojo, LOW);
    }
    //------------------------------------------

    ResponderEliminar
    Respuestas
    1. Muchas gracias, funciona va genial :) , me podrías dar una breve explicación de como funciona el código por encima, llego a entender gran parte de él, pero hay cosas que todavía no sé muy bien. Gracias de antelación.

      Eliminar
  39. Me podrás ayudar tengo que hacer un proyecto igual de alarmas pero 4 sensores pero sólo ocupo que tenga tiempo para activarse

    ResponderEliminar
  40. Explicame lo que quieres que haga el programa

    ResponderEliminar
  41. Es una alarma pero con 4 sensores solo que es simple ocupo que que tenga tiempo para activarse al resetear el Arduino

    ResponderEliminar
  42. Es que lo que yo ahí es usar la función
    If(millis>180000)
    Y después uso otro If para los sensores pero al parecer al momento de comprobar el proyecto hace que cuando un sensor detecte una Señal produzca que suene la bocina el tiempo pero despues sigue soñando consecutivamente

    ResponderEliminar
  43. Si no es muy largo el programa, pégalo aqui y lo miro

    ResponderEliminar
  44. Si solo quieres un retraso de 3min al arrancar el arduino pon un delay(180000) al final del Setup

    ResponderEliminar
  45. Con millis tienes que crear un inicio del tiempo:
    Inicio = millis()
    Y despues poner el final de la condicion:
    While (millis() - inicio <= 180000{ xxx }
    O
    If (millis() - inicio >= 180000{ xxx }
    Dependiendo si quieres que haga algo dentro de esos 3min
    O cuando hayan pasado los 3min

    ResponderEliminar
  46. Cuál es la distancia máxima del cable del sensor hasta la placa Arduino

    ResponderEliminar
  47. Depende del cable, si es uno del tipo usado para redes (UTP cable macizo)) posiblemente unos 10 metros o algo mas, no lo he probado.

    Las 2 últimas versiones de esta Alarma utilizan módulos inalámbricos :

    https://berreizeta.blogspot.com/2020/08/arduino-alarma-pir-modulo-sensor-pir.html

    https://berreizeta.blogspot.com/2020/10/alarma-arduino-mega-pir-wireless.html

    Con estas versiones te quitas el problema del cable de datos, sólo necesita alimentación 5v para el módulo, y no tienes limitación de unidades módulo-sensor.

    ResponderEliminar
  48. WynnBET and Borgata join MGM in opening $330M
    WynnBET will 서귀포 출장안마 open its first commercial gaming 시흥 출장마사지 resort in 하남 출장안마 Las Vegas this fall, 울산광역 출장안마 joining MGM 김제 출장안마 Resorts International and Resorts International.

    ResponderEliminar
  49. no entiendo lo de la eeprom. ni que significa descomentar ni como usar el eeprom.ino. ¿alguien puede ayudarme? gracias

    ResponderEliminar
  50. Comentar significa poner // delante de una linea, y descomentar es quitar las dos // para que pase de ser un texto o comentario a ser una linea de programa
    // weprom() es un comentario o texto
    weprom() es una linea de programa

    ResponderEliminar
    Respuestas
    1. Este comentario ha sido eliminado por el autor.

      Eliminar
    2. gracias! ya lo logré, ahora el problema que tengo es que esta todo el tiempo detectando cosas, con la alarma apagada en la fila del display marca 1, 2, 3 , M a cada rato, con la alarma armada se dispara

      Eliminar
    3. no tengo conectado un modulo 433, ¿puede ser por eso que marca a cada rato M?

      Eliminar
    4. SOLUCIONADO! no había puesto la resistencia de 10k a 5v. por ahora parece que anda todo de 10. gracias!!

      Eliminar