Ya tenemos la conexión en ambos sentidos y recibimos el dato que le pedimos tanto en un lado como en otro.
Codigo de la pagina web
<html>
<body>
<?php
if(isset($_GET['modTiempo'])){
?>
<form method=get name=LED action="URL">
<input type=text name=cambiartiempo>
<input type=submit value=submit>
</form>
<?php
}
echo "temp: ".$_REQUEST['temp'];
?>
<form method=get name=LED action="URL">
<input type=radio name=opcion value=LED>LED ON<br>
<input type=radio name=opcion value=TEMP>TEMPERATURA<br>
<input type=radio name=opcion value=TIEMPO>MOD. TIEMPO
<input type=submit value=submit>
</form>
</body>
</html>
Extracto de codigo de arduino, gestiona las peticiones:
if(readString == ("GET /?opcion=TIEMPO HTTP/1.1") ) //MOD TIEMPO
{
sprintf(url, "URL");
sprintf(meta, "<meta http-equiv='Refresh' content='0;url=%s'>", url);
client.println("HTTP/1.1 200 OK");
client.println("<body><html>");
client.println("Content-Type: text/html");
client.println();
client.println(meta);
client.println("</body></html>");
}
else if(readString.substring(6,19) == ("cambiartiempo") )
{
int Triego = readString.substring(20,22).toInt();
modificarTiempo(Triego);
//redireccionar a la web
client.println("HTTP/1.1 200 OK");
client.println("<body><html>");
client.println("Content-Type: text/html");
client.println();
client.println("<meta http-equiv='Refresh' content='0;url= URL'>");
client.println("</body></html>");
}
else if(readString == ("GET /?opcion=LED HTTP/1.1") )
{
//led has to be turned ON
digitalWrite(ledPin, HIGH); // set the LED on
//redireccionar a la web
client.println("HTTP/1.1 200 OK");
client.println("<body><html>");
client.println("Content-Type: text/html");
client.println();
client.println("<meta http-equiv='Refresh' content='0;url= URL'>");
client.println("</body></html>");
}
else if(readString == ("GET /?opcion=TEMP HTTP/1.1") ) //PEDIR TEMPERATURA
{
//CONSTRUIMOS LA URL PARA LA REDIRECCION
sprintf(url, "URL?temp=%d", tempValor);
sprintf(meta, "<meta http-equiv='Refresh' content='0;url=%s'>", url);
//redireccionar a la web
client.println("HTTP/1.1 200 OK");
client.println("<body><html>");
client.println("Content-Type: text/html");
client.println();
client.println("<meta http-equiv='Refresh' content='0;url= URL'>");
client.println("</body></html>");
}
else{
//led has to be turned OFF
digitalWrite(ledPin, LOW); // set the LED OFF
//redireccionar a la web
client.println("HTTP/1.1 200 OK");
client.println("<body><html>");
client.println("Content-Type: text/html");
client.println();
client.println("<meta http-equiv='Refresh' content='0;url= URL'>");
client.println("</body></html>");
}
lunes, 29 de octubre de 2012
viernes, 12 de octubre de 2012
Comunicación Arduino -> Web
Una vez que estamos dentro de arduino y una vez obtenidos los datos necesarios tenemos que enviarlos a la web para ser tratados, para esto tenemos varias opciones:
- Un formulario en el que la propiedad action mande a la web.
- Otra opción es utilizar la etiqueta <meta http-equiv="Refresh" content="5;url=xxxxxxxxxx">
Comunicación Web -> Arduino
Este es el formulario en html que esta en el servidor, las XXX corresponden a la ip publica seguida del puerto que previamente hemos redireccionado en nuestro router hacia la ip interna asignada a arduino.
<html>
<body>
<form method=get name=LED action="http://XX.X.XX.XXX:YYYY">
<input type=checkbox name=L value=1>LED<br>
<input type=submit value=submit>
</form>
</body>
</html>
Y este el código de arduino:
if(readString == ("GET /?L=1 HTTP/1.1") )
{
//led has to be turned ON
digitalWrite(ledPin, HIGH); // set the LED on
LEDON = true;
}
Simplemente comprueba lo que tiene la variable L.
+21.07.45.png)
<html>
<body>
<form method=get name=LED action="http://XX.X.XX.XXX:YYYY">
<input type=checkbox name=L value=1>LED<br>
<input type=submit value=submit>
</form>
</body>
</html>
Y este el código de arduino:
if(readString == ("GET /?L=1 HTTP/1.1") )
{
//led has to be turned ON
digitalWrite(ledPin, HIGH); // set the LED on
LEDON = true;
}
Simplemente comprueba lo que tiene la variable L.
+21.07.45.png)
jueves, 13 de septiembre de 2012
Cambios en el proyecto
Vamos a añadir un modulo nuevo, es un reloj en tiempo real, puesto que era casi imposible controlar la hora ya que cada vez que se reinicie se pone a las 0:00 y esto puede suponer un descontrol total del proyecto.
Cuando lo tengamos en las manos actualizaremos.
Cuando lo tengamos en las manos actualizaremos.
Continuando con la última entrada
Como planteamos en la entrada anterior, en un enchufe doble de superficie hemos puesto un termómetro para saber la temperatura exterior y un led que nos indique cuando esta funcionando el rele. El enchufe de la derecha es el controlado por arduino y el otro un enchufe normal.
Detalle del interior de los enchufes. En la parte de arriba tenemos el led y abajo el termómetro.
Detalle del termómetro.
Led encendido.
Para evitar que con la lluvia entre agua, sellamos todo con cola caliente, tanto las uniones como las soldaduras y conectores.
Detalle del interior de los enchufes. En la parte de arriba tenemos el led y abajo el termómetro.
Detalle del termómetro.
Led encendido.
Para evitar que con la lluvia entre agua, sellamos todo con cola caliente, tanto las uniones como las soldaduras y conectores.
sábado, 8 de septiembre de 2012
Termómetro y led exterior
Aprobechando que el conector del telefono tiene 4 cables y el rele solo utiliza 3, vamos a añadir un termometro, utilizaremos el lm35, aprobechando la corriente de los cables del rele.
Además conectamos a los pines del rele un led que nos indique cuando está en funcionamiento, y asi poder descartar posibles fallos de la bomba.
Suponiendo que tenemos conectado el lm35 al analogico 0. El siguiente codigo nos convierte las lecturas del lm35 a grados centigrados.
Temp=(5*analogRead(A0)*100/1023.0);
Para imprimir este dato utilizaremos la lcd de la siguiente forma,
lcd.print("Temperatura actual: ");
lcd.print(Temp);
lcd.print(" C.");
Los que nos daria como resultado: Temperatura actual: 30 C.
Además conectamos a los pines del rele un led que nos indique cuando está en funcionamiento, y asi poder descartar posibles fallos de la bomba.
Suponiendo que tenemos conectado el lm35 al analogico 0. El siguiente codigo nos convierte las lecturas del lm35 a grados centigrados.
Temp=(5*analogRead(A0)*100/1023.0);
Para imprimir este dato utilizaremos la lcd de la siguiente forma,
lcd.print("Temperatura actual: ");
lcd.print(Temp);
lcd.print(" C.");
Los que nos daria como resultado: Temperatura actual: 30 C.
lunes, 3 de septiembre de 2012
Conexión bomba-arduino
Para conectar la bomba es necesario utilizar un relé, de 5v y salida libre, cuya función principal es hacer de interruptor del circuito de 220v a la señal de la parte de 5v, en este caso dicha señal la manda Arduino. En el siguiente esquema podemos ver el circuito del relé.
El rele está formado por 6 pines, los dos de arriba los "normalmente cerrados", es decir normalmente apagado lo que conectemos, los pines de abajo los normalmente abiertos y los de enmedio conectados mediante una bobina, son los que le conectaremos el arduino.
Para el circuito de conexión con arduino utilizaremos el ejemplo de la web oficial, http://www.arduino.cc/es_old/Tutoriales/Rele , en el cual vemos el siguiente esquema de conexión,
Como la idea es que se quede todo totalmente estanco, utilizaremos enchufes en superficie en concreto dos, uno que actue como enchufe normal y otro controlado desde arduino al cual le añadiremos un led de alta intensidad que se encienda cada vez que se active el rele. Como en los demás casos, para la conexion utilizaremos clavijas telefonicas.
Para probarlo vamos a modificar el codigo del ejemplo:
Código fuente
El rele está formado por 6 pines, los dos de arriba los "normalmente cerrados", es decir normalmente apagado lo que conectemos, los pines de abajo los normalmente abiertos y los de enmedio conectados mediante una bobina, son los que le conectaremos el arduino.
Para el circuito de conexión con arduino utilizaremos el ejemplo de la web oficial, http://www.arduino.cc/es_old/Tutoriales/Rele , en el cual vemos el siguiente esquema de conexión,
Como la idea es que se quede todo totalmente estanco, utilizaremos enchufes en superficie en concreto dos, uno que actue como enchufe normal y otro controlado desde arduino al cual le añadiremos un led de alta intensidad que se encienda cada vez que se active el rele. Como en los demás casos, para la conexion utilizaremos clavijas telefonicas.
Para probarlo vamos a modificar el codigo del ejemplo:
Código fuente
int relayPin = 8; // PIN al que va conectado el relévoid setup(){pinMode(relayPin, OUTPUT);}void loop() {digitalWrite(relayPin, HIGH); // ENCENDIDOdelay(1000);digitalWrite(relayPin, LOW); // APAGADOdelay(1000);
Este apaga y enciende el aparato que tengamos enchufado.}
Suscribirse a:
Entradas (Atom)






