Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Aporte Arduino, encender led vía Wifi con módulo HLK-RM04
#1
Saludos...

Os voy a mostrar como encender y apagar un led vía wifi desde una página web en un navegador (desde el pc, tablet o móvil)


Materiales utilizados
  • Una placa Arduino (yo he utilizado la Uno).
  • 4 Cables dupont.
  • Un led color rojo.
  • Un módulo wifi HLK-RM04.


[Imagen: WIFI-HLK-RM04.jpg]


Conexiones
  • Pin Rx del módulo al pin Tx de arduino
  • Pin Tx del módulo al pin Rx de arduino
  • Pin 5V del módulo al pin 5V de arduino
  • Pin GND del módulo al pin GND de arduino
  • Polo positivo del led al pin 13 de arduino
  • Polo negativo del led a GND de arduino


Lo que vamos a necesitar son dos clases de código. Por una parte una página web que estará en internet en la que tendremos la orden de encender  o apagar el led y el código para la placa arduino que recibirá la orden de encender o apagar el led y le mandará unas instrucciones al navegador.



Código página web:

<!DOCTYPE html>
<html>
<head>
<title>jQuery Mobile Form</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.css">
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js"></script>
</head>
<body>

<div data-role="page">

<div data-role="main" class="ui-content">
<form onsubmit="return enviar(this)"  method="get" action="http://192.168.1.254:8080/blink" data-ajax="false">
<fieldset data-role="controlgroup">
<legend>Interruptor:</legend>
<label for="encender">Encender</label>
<input type="radio" name="f" id="encender" value="1">
<label for="apagar">Apagar</label>
<input type="radio" name="f" id="apagar" value="2">
</fieldset>
<input type="submit" data-inline="true" value="Ejecutar" data-theme="b">
</form>
</div>
</div>

</body>
</html>


Este codigo lo que hace es crear un formulario con dos opciones, encendido o apagado y lo envía, por el método get, a la dirección de nuestro módulo HLK-RM04


Cita:
[Imagen: interruptor.jpg]





Código para la placa Arduino:

const int ledPin = 13;
void setup() {    
 Serial.begin(57600);  
pinMode(ledPin, OUTPUT);
}

int f = 0;
void loop() {
 boolean has_request = false;
 String in = "";
 if (Serial.available()) {
   in = "";
   while (true) {  // should add time out here
     while (Serial.available() == false) {}
     in += (char)(Serial.read());
     if (in.endsWith("\r\n\r\n")) {
       has_request = true;  break;
     }
   }  
 }
 if (has_request) {
   int i1 = in.indexOf("GET /blink?f="), i2;
   if (i1 != -1) {
     i2 = in.indexOf(" ", i1+13);
     f = in.substring(i1+13, i2).toInt();
   }
   Serial.println("HTTP/1.1 200 OK");
   Serial.println("Content-Type: text/html");
   Serial.println("Connection: close");  // the connection will be closed after completion of the response

   String sr = "<!DOCTYPE HTML>\n";
   sr += "<html>\n";
   sr += "<body onload='history.back();'>\n";    
   sr += "</body>";  
   sr += "</html>";
   Serial.print("Content-Length: ");
   Serial.print(sr.length());
   Serial.print("\r\n\r\n");
   Serial.print(sr);
   has_request = false;
 }

switch (f){
 case 1:
   digitalWrite(ledPin, HIGH);
  break;
 case 2:
   digitalWrite(ledPin, LOW);
  break;
  f=0;  
}  

}


Este script lo que hace,entre otras cosas, es inicializar una variable, cuyo valor lo recibe vía wifi, si el valor es 1 enciende el led, si el valor el 2 lo apaga. Además envía una instrucción javascript al navegador para que vuelva a mostrar el interruptor.

Como veréis, cambiando sólo un poco el código se puede hacer para que en vez de encender un led active un relé, por ejemplo, y de esta manera activar cualquier dispositivo que esté conectado a la red eléctrica y todo ello desde un móvil o tablet y cualquier parte del mundo porque funciona vía web.


.
Responder



Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)