Go Down

Topic: Proyecto domotica- Ayuda por favor (Read 612 times) previous topic - next topic

sekron

Hola buenas tardes a todos hace poco me compré un Arduino Uno porque estoy interesado en aprender a programar con el ya que el tema de programación me interesa bastante aparte de lo versátil que es, pero tengo un problema ya que para fin de curso tengo que preparar un proyecto, el cual es el control domotico de la luz y un sistema de alarma que avise en una pagina web desde la que se controla la luz, cuando la alarma este activa. Hasta el momento lo llevaba todo controlado por lo que la luz funciona perfectamente pero no me muestra la advertencia de alarma en la web cuando suena y si lo hace lo repite muchas veces, se que hay bastantes temas relacionados con la domótica pero he buscado por todo el foro y no he encontrado solución para mi problema. Trabajo con Windows XP y con la libreria que hay para windows php_ser++.dll.
Hay alguien que me pueda hechar una mano por favor?.

El codigo de Arduino es el siguiente:
Quote

 int bombilla = 4; //Declaramos el pin de la bombilla
 int entrada;      //Declaramos la entrada para la lectura
 int ledPin = 13;  //PIN del LED de alarma
 //PIN del final de carrera de alarma (tope)
 int inPin = 8;   
 int value = 0;    //Valor del final del carrera inicial
 int manual = 2;   //Establecemos el boton manual de alarma
 int contador = 0;  //Estabecemos un contador
 int activado = 0;

 
 void setup() {
   //Establecemos conexion con el puerto serie
   Serial.begin(9600);     
    //Inicia la bombilla como salida
    pinMode(bombilla, OUTPUT);
    pinMode(ledPin, OUTPUT);   //Inicia el LED como salida
    //Inicia la entrada del final como carrera como entrada
    pinMode(inPin, INPUT);   
    //Inicia la entrada manual de la alarma como entrada 
    pinMode(manual, INPUT);   

 }
 void loop() {
   //Comprueba si hay datos disponibles en el serial
   if (Serial.available() > 0) {
     
    entrada = Serial.read();  //Carga los datos en memoria

    if (entrada == '0') {            //Si la entrada es 0
    digitalWrite(bombilla, HIGH);    //Enciende la bombilla
    Serial.println("Luz encendida");
  } 
   if (entrada == '1') {             //Si la entrada es 1
   digitalWrite(bombilla, LOW);      //Apaga la bombilla
   Serial.println("Luz apagada");
 }
   }
   value = digitalRead(inPin); //Lee el valor de la entrada
   contador = digitalRead(manual);
   switch (contador) {
     case HIGH:
            
            value = 0; // Toma valor 0
            //Se declara que no suene, y su
            //salida correspondiente en la que esta
            //conectado el zumbador
            noTone(7);
            //Enciende o apaga el led de alarma
            //segun su estado
            digitalWrite(ledPin, value);
            break;
     
     case LOW:
      //Si el pulsador está sin pulsar
      if (digitalRead(inPin) == LOW)
          {
            value = 0; // Toma valor 0
            //Se declara que no suene, y su
            //salida correspondiente en la que esta
            //conectado el zumbador
            noTone(7);
            activado = 3;
                        
          }
        else {          //Si esta pulsado
              value = 1;  //Toma valor 1
              //Declaramos que el zumbador, patilla 7 suene,
              //con 150 Hz de frecuencia y 500 milisegundos
              //de duracion
              tone(7, 150, 500);
              activado = 4;
//              Serial.println ("Alarma");
//              delay(300);    

         }
         if (activado == 4)
         {
                Serial.println ("Alarma");
                delay(300);   
          }
          else
          {
              digitalRead(inPin);
          }
        //Enciende o apaga el led de alarma segun su estado
        digitalWrite(ledPin, value); 
        delay(100);
   }
   }



Y este es el de la pagina web programada con php:
Quote

<?php

ser_open( "COM3", 9600, 8, "None", "1", "None" );

if (isset($_GET['action'])) {

   if (ser_isopen() == true )
   {
       echo "Puerto abierto<br>\r\n";

           if ($_GET['action'] == "bombillaon") {

         ser_write ("0\r");
         $estado = "<img src='img.jpeg' alt='encendida' align=middle width=50 height=50>";
             ser_close();
       } else if ($_GET['action'] == "bombillaoff") {

         ser_write ("1\r");
              $estado = "<img src='img2.jpeg' alt='apagada' align=middle width=50 height=50>";
              ser_close();
             }
    }

}
else{

         $datos=ser_read();

      if ($datos == 4)
      {

         ser_close();
         break;
      }
      else {
while ($datos == 3)
{
   $datos=ser_read();

      if ($datos == 4)
      {
         ser_close();
         break;
      }
}
}

}
?>
<html>
<head>
<META HTTP-EQUIV="REFRESH" CONTENT="2;URL=index.php">
<title>Proyecto Domotica con Arduino</title>
</head>
<body bgcolor="#aabbcc">
<center><h1>Control domotico de la vivienda</h1>
<br>
<table border=0><tr><td>
<img src="l1.png" alt="luces" onmouseover='javascript:this.src="l2.png"'
onmouseout='javascript:this.src="l1.png"'>
</td></tr><tr><td>
<a href="<?=$_SERVER['PHP_SELF'] . "?action=bombillaon" ?>">
<img src='encender.png' alt='encendida' align=middle width=50 height=50></a>
</td><td><?echo $estado?></td></tr><tr><td>
<a href="<?=$_SERVER['PHP_SELF'] . "?action=bombillaoff" ?>">
<img src='apagar.png' alt='apagada' align=middle width=50 height=50></a>
</td></tr>
</table><br></center>
<h3><tt>Para cualquier consulta o problema puede contactar
<a href="mailto: midirecciondecorreo">Aqui</a></tt></h3>
<br>
<center><h1><b><?echo $datos?></b></h1></center>
</body>
</html>


Perdon por si el post no esta bien puesto ni colocado en su sitio ya que es mi primer post en esta gran comunidad. Gracias por adelantado y saludos a todos!!

Go Up