PDF de programación - Aplicaciones Prácticas con Sistemas Arduino

Imágen de pdf Aplicaciones Prácticas con Sistemas Arduino

Aplicaciones Prácticas con Sistemas Arduinográfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 26 de Noviembre del 2017)
1.951 visualizaciones desde el 26 de Noviembre del 2017
5,5 MB
16 paginas
Creado hace 10a (10/07/2013)
Aplicaciones Prácticas

con

Sistemas Arduino

Introducción a Webduino

CEP SEVILLA

IES Los Viveros

Curso 2011/2012

Ref: 11412FP23

:

Luis Modesto González

José Pujol Pérez

Webduino

• Librería que facilita la implementación de un servidor web con

Arduino

• Permite que podamos interactuar con nuestro arduino a

través de un navegador

• Será necesario crear una página web en html que deberá
• Será necesario crear una página web en html que deberá

estar guardada en arduino.

• Enviando órdenes desde un formulario podremos ejecutar

acciones

• Podemos añadir funcionalidades AJAX que permitan leer el

estado de una entrada analógica en tiempo real (o casi)

1

Instalación

• Se descarga desde:

– http://code.google.com/p/webduino/ o

– https://github.com/sirleech/Webduino

• Creamos la carpeta WebServer dentro de librerías

• Copiamos los ejemplos dentro de examples
• Copiamos los ejemplos dentro de examples

• Es necesaria la librería streaming, que descargamos

desde http://arduiniana.org/libraries/streaming/

• Limitaciones:

– 1 única conexión simultánea (el siguiente debe esperar)

– No es posible SSL

2

Hola Mundo

• Abrimos el ejemplo “Hola Mundo”

• Ajustamos la dirección Mac

• Ajustamos la IP

• Abrimos el navegador con la ip de nuestro arduino
• Abrimos el navegador con la ip de nuestro arduino

3

Cómo funciona un servidor web

• El cliente (mi PC) envía una petición al servidor en texto

plano, que puede ser de tipo GET o POST

• GET <shorturl> HTTP/1.1

• Host: example.com

• <other-headers>
• <other-headers>

• <blankline>

• POST <shorturl> HTTP/1.1

• Host: example.com

• <other-headers>

• <blankline>

• <url-encoded-content>

4

Como funciona un servidor web

• El servidor, contesta enviando un encabezado y un

contenido.

• En el encabezado viaja una señal de estado

– 200 OK

– Content-Type: text/html

– <other-headers>

– <blank-line>

– <HTML web page>

5

TIPOS DE APLICACIONES

• Unidireccionales. Arduino nos presenta el estado de

algún sensor. Para refrescar, debemos hacer una
recarga dela página.

Interactivas. Arduino nos presente un menú, en el
• Interactivas. Arduino nos presente un menú, en el
que tenemos algún elemento para ejecutar acciones,
por ejemplo, un botón para encender o apagar.

• Con autorefresco. La página que nos presenta

arduino, se refresca de forma automática cada cierto
tiempo, así podremos detectar cuando ocurra algo.

6

HTML

• Las páginas que visualiza un navegador, deben estar

escritas en HTML

• HTML, permite incrustar enlaces, por lo que

podemos hacer que una página web servida por
podemos hacer que una página web servida por
arduino, presente imágenes o ficheros alojados en
otros servidores.

<html>

<head><title>Hello, World</title></head>
<body>
<img src="http://www.cepsevilla.es/templates/mineown/images/header21.jpg”>
<h1>Hello, World!</h1>
</body>

</html>

7

Limitaciones de arduino

• Arduino tiene 2k de ram y 32k de Flash.

• Una aplicación web puede requerir bastante texto .



Si escribimos:

• server.print("<p>Hello!</p>");

• El texto se guarda en RAM




Si escribimos
Si escribimos

• P(message) = "<h1>Webduino</h1>";

• server.printP(message);

• El texto se guarda en Flash



La librería Streaming, permite

• server << "You have " << n << " bananas";

• Frente a:

– server.print("You have " );

– server.print(n);

– Server.print(" bananas";);

8

Formularios HTML

• Permiten añadir interactividad.

• Necesitaremos un editor HTML para diseñar el

formulario y luego moverlo a arduino.

• Se admiten envío de parámetros por POST y por
• Se admiten envío de parámetros por POST y por

GET(desde la propia url)

9

Páginas con autorefresco

• Con un encabezado del tipo:

• <META HTTP-EQUIV="Refresh" CONTENT=“0.5">

• Conseguimos que la página se refresque 2 veces cada

segundo

• Podemos incluir scripts de javascript que
• Podemos incluir scripts de javascript que

autorefresquen la página cada x segundos.

• Podemos incluir librerías AJAX refresquen sólo los

datos, sin recargar toda la página.

10

Programación con Webduino

• Tendremos que definir una función que será la que

se encargue de tratar las peticiones web.

#define PREFIX "/carpeta"

/// ó ""

WebServer webserver(PREFIX, 80);

void tratamiento(WebServer &server, WebServer::ConnectionType type, char
*url_tail, bool tail_com)
*url_tail, bool tail_com)

{//Server: Objeto que representa al servidor

//ConnectionType tipo de petición; INVALID, GET, HEAD, POST, PUT, DELETE, PATCH

//url_tail : Parte de la url que no coincide con carpetas o ficheros registrados

//tail_complete:es true, si toda la url entró en el buffer, flase en caso contrario

//Tratamiento

}

void setup()
{

Ethernet.begin(mac, ip);

webserver.setDefaultCommand(&tratamiento);

}

void loop(){

webserver.processConnection();

}

11

Ejemplo 1: Enciende Led.

• Creamos la página principal con un editor html

• Abrimos el ejemplo “Hello world” y cambiamos el

texto a mostrar por el del formulario

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">

<title>Enciende Led</title>

</head>

<body>

<center>

Pulsa para encender o apagar led en pin 3 de arduino

<form method="POST" action="">

<p><input type="submit" value="Encender" name="en"></p>

<p><input type="submit" value="Apagar" name="ap"></p>

</form>

</center>

</body>

</html>

12

Ejemplo 1: Enciende Led.

• Tenemos que procesar las solicitudes

POST y ver si existe una parámetro
Encender o Apagar, que es el “value” del
botón pulsado.

• El código lo colocamos dentro del
• El código lo colocamos dentro del

procesamiento del comando

if (type = WebServer::POST)

{

while (server.readPOSTparam(nombre,10,valor,10))

{

if (strcmp(valor,"Encender")==0) digitalWrite(3,HIGH);
if (strcmp(valor,"Apagar") ==0) digitalWrite(3,LOW);

}

}

13

Ejemplo 2: Lee entrada digital.

• Modificamos la página anterior ya añadimos un botón que cambiará a

verde cuando la entrada esté alta.

• Añadimos el encabezado <META HTTP-EQUIV="Refresh" CONTENT=“1">,

para que se refresque cada segundo

<html>
<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">

<META HTTP-EQUIV="Refresh" CONTENT=“1">

<title>Enciende Led</title>

</head>

<body>

<center>

Pulsa para encender o apagar

<form method="POST" action="">

<p><input type="submit" value="Encender" name="en"></p>

<p><input type="submit" value="Apagar" name="ap"> </p>

<p><input type="button" value=" " name="B1" STYLE="background-color:green" > Entrada digital 1</p>

</form>

</center>

</body>

</html>

14

Ejemplo 2: Lee entrada digital.



Tenemos que insertar de forma condicional, el estilo de color del botón en
función del valor de la entrada digital.

• Dividimos el mensaje en 2 trozos, e insertamos en medio el color del

botón

P(helloMsg1) = “<html><head>“
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1252\">“

"<META HTTP-EQUIV=\"Refresh\" CONTENT=\"1\">“

"<title>Enciende Led</title>""</head><body><center>“

"Pulsa para encender o apagar led conectado entre el pin 3 y el 2 de arduino, y para evaluar el nivel de l

a entrada digital 5""<form method=\"POST\" action=\"\">



"

<p><input type=\"submit\" value=\"Encender\" name=\"en\"></p>“

“ <p><input type=\"submit\" value=\"Apagar\" name=\"ap\"></p>“

"<p><input type=\"button\" value=\" \" name=\"B1\" ";

P(helloMsg2) ="> Entrada digital 1</p> </form></center></body></html>";

char color[]="STYLE=\"background-color:green\"";
if (digitalRead(5)==0)strcpy(color," ");
server.printP( helloMsg1);
server.print(color);
server.printP( helloMsg2);

15
  • Links de descarga
http://lwp-l.com/pdf7708

Comentarios de: Aplicaciones Prácticas con Sistemas Arduino (1)

hmora
29 de Noviembre del 2017
estrellaestrellaestrellaestrellaestrella
No ha dejado ningún comentario
Responder

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad