^Volver Arriba
Get Adobe Flash player

Cheats del día

Team Speak 3

Cod2

Contador de visítas

843419
Hoy
Ayer
Esta semana
Semana pasada
Este mes
Mes pasado
En total
334
147
777
841123
334
9148
843419

Tu IP: 3.144.187.103
Server Time: 2024-05-01 21:54:23

No a los Cheats

 

Formulario de acceso

Encender Led con Servidor web Arduino

CREAR SERVIDOR WEB CON ARDUINO

 

 

En este tutorial vamos a usar el Arduino como servidor Web utilizando el Arduino Ethernet Shield y controlaremos un Led conectado al pin 6 a través de Internet.

Material

-Arduino Uno Rev 3

-Arduino Ethernet Shield

-Cable Red Ethernet

-Led

Arduino Ethernet Shield

El Arduino Ethernet Shield permite conectar el Arduino a Internet. Está basado en el chip Wiznet W5100 con un buffer interno de 16k que es el encargado de dar una dirección IP al Arduino. Tiene un conector ethernet RJ-45 con una velocidad de 10/100Mb. Se usa la librería <Ethernet.h> para escribir el programa. También tiene un slot de tarjetas micro-SD para almacenar datos para servir a la red. Para esto, se usa la librería <SD.h>. Para comunicarse con la placa Arduino, utiliza el puerto SPI (pins 10, 11 ,12 y 13) con la librería <SPI.h>, y el pin 4 si trabaja con una tarjeta micro-SD. Estos pins no pueden ser usados como entradas o salidas digitales. También tiene un botón de Reset que resetea tanto la placa Arduino como el W5100. Gracias a la Ethernet Shield podemos usar el Arduino como servidor web o como cliente web.

 

Código

/*
Crear servidor Web con Arduino
*/

#include <SPI.h> //Importamos librería comunicación SPI
#include <Ethernet.h> //Importamos librería Ethernet

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };//Ponemos la dirección MAC de la Ethernet Shield que está con una etiqueta debajo la placa
IPAddress ip(192,168,1,100); //Asingamos la IP al Arduino
EthernetServer server(80); //Creamos un servidor Web con el puerto 80 que es el puerto HTTP por defecto

int led=6; //Pin del led
String estado="OFF"; //Estado del Led inicialmente "OFF"

void setup()
{
Serial.begin(9600);

// Inicializamos la comunicación Ethernet y el servidor
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());

pinMode(led,OUTPUT);
}

void loop()
{
EthernetClient client = server.available(); //Creamos un cliente Web
//Cuando detecte un cliente a través de una petición HTTP
if (client) {
Serial.println("new client");
boolean currentLineIsBlank = true; //Una petición HTTP acaba con una línea en blanco
String cadena=""; //Creamos una cadena de caracteres vacía
while (client.connected()) {
if (client.available()) {
char c = client.read();//Leemos la petición HTTP carácter por carácter
Serial.write(c);//Visualizamos la petición HTTP por el Monitor Serial
cadena.concat(c);//Unimos el String 'cadena' con la petición HTTP (c). De esta manera convertimos la petición HTTP a un String

//Ya que hemos convertido la petición HTTP a una cadena de caracteres, ahora podremos buscar partes del texto.
int posicion=cadena.indexOf("LED="); //Guardamos la posición de la instancia "LED=" a la variable 'posicion'

if(cadena.substring(posicion)=="LED=ON")//Si a la posición 'posicion' hay "LED=ON"
{
digitalWrite(led,HIGH);
estado="ON";
}
if(cadena.substring(posicion)=="LED=OFF")//Si a la posición 'posicion' hay "LED=OFF"
{
digitalWrite(led,LOW);
estado="OFF";
}

//Cuando reciba una línea en blanco, quiere decir que la petición HTTP ha acabado y el servidor Web está listo para enviar una respuesta
if (c == '\n' && currentLineIsBlank) {

// Enviamos al cliente una respuesta HTTP
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();

//Página web en formato HTML
client.println("<html>");
client.println("<head>");
client.println("</head>");
client.println("<body>");
client.println("<h1 align='center'>servercanary.sytes.net</h1><h3 align='center'>LED controlado por Servidor Web con Arduino</h3>");
//Creamos los botones. Para enviar parametres a través de HTML se utiliza el metodo URL encode. Los parámetros se envian a través del símbolo '?'
client.println("<div style='text-align:center;'>");
client.println("<button onClick=location.href='./?LED=ON\' style='margin:auto;background-color: #FE2E2E;color: snow;padding: 10px;border: 1px solid ##FE2E2E;width:65px;'>");
client.println("ON");
client.println("</button>");
client.println("<button onClick=location.href='./?LED=OFF\' style='margin:auto;background-color: #84B1FF;color: snow;padding: 10px;border: 1px solid #3F7CFF;width:65px;'>");
client.println("OFF");
client.println("</button>");
client.println("<br /><br />");
client.println("<b>LED = ");
client.print(estado);
client.println("</b><br />");
client.println("</b></body>");
client.println("</html>");
break;
}
if (c == '\n') {
currentLineIsBlank = true;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
//Dar tiempo al navegador para recibir los datos
delay(1);
client.stop();// Cierra la conexión
}
}

 

This text will be replaced