Archivo de la categoría: Web Server

Ejemplos Ethernet Arduino

IMPORTANTE: Para los ejercicio con conexión Ethernet es imprescindible poner en la MAC del Arduino en los dos últimos dígitos el número del kit. En todos los sketchs hay que sustituir YY por el número de kit.

Para las prácticas la IP de los Arduinos se asignará dinámicamente por DHCP, en este caso ya nos asigna también el servidor DNS y por lo tanto podemos usar nombres de páginas web

Conexión a una Web con Arduino

Crear un cliente ethernet que se conecte varias webs y escriba por consola los datos recogidos. También guarde los datos recibidos en un string. Probar a conectar a varias páginas web y usa el servicio DNS poniendo la url en lugar de la IP.

Webs:

Tutorial: webclient con ejemplo de métodos get y post: http://playground.arduino.cc/Code/WebClient

Solución: https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/tree/master/Ejercicio35-EthernetClient_DHCP

Web Server

Crear un servidor web sencillo que saque por el puerto serie y también devuelva al navegador que le ha llamado la petición http recibida.

Luego añadir el valor leído en la entrada analógica A0.

Avanzado: Modificar el ejercicio anterior y leer solo la línea de la petición, esto es útil cuando hay que analizar el http request y que Arduino devuelva una cosa u otra en función de la petición que llegue. Quitar comentarios en el bucle que lee los caracteres recibidos y ver lo que ocurre. Fijarse que el tiempo de bucle en este caso es más rápido y esto tiene ventajas.

Tutorial webserver: http://playground.arduino.cc/Code/WebServerST

Solución: https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/tree/master/Ejercicio39-EthernetServer_DHCP

Anuncio publicitario

Arduino Web Server

Web Server

Crear un servidor web sencillo que saque por el puerto serie y también devuelva al navegador que le ha llamado la petición http recibida.

Luego añadir el valor leído en la entrada analógica A0.

Avanzado: Modificar el ejercicio anterior y leer solo la línea de la petición, esto es útil cuando hay que analizar el http request y que Arduino devuelva una cosa u otra en función de la petición que llegue. Quitar comentarios en el bucle que lee los caracteres recibidos y ver lo que ocurre. Fijarse que el tiempo de bucle en este caso es más rápido y esto tiene ventajas.

Tutorial webserver: http://playground.arduino.cc/Code/WebServerST

Solución: https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/tree/master/Ejercicio39-EthernetServer_DHCP

Otro ejemplo similar muy bien explicado: https://wngeek.wordpress.com/2013/07/24/185/

Al igual que hemos hecho un web server podríamos implementar un telnet server escuchando por el puerto 23. Ejemplos:

Web Embebida con Arduino. Botón enciende Led.

Crea una web embebida en Arduino con un botón que al pulsarlo desde el navegador encienda un led y al volver a pulsarlo apague un led.

Al recibir un get Arduino muestra una web para encender o apagar el led en función del estado del led.

Cuando pulso el botón de la web, el navegador manda un post con la instrucción de encender o apagar el led, Arduino la ejecuta y devuelve la web actualizada con el estado del Led.

Esquema de conexión:

Solución: https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/tree/master/Ejercicio40-Boton_Mejorado_DHCP

Código de la web mostrada:

 
<!DOCTYPE html>
<html>
<body>
  <p>LED APAGADO</p>
  <form action="" method="post">
    <input type="submit" value="Enciende Led" />
  </form>
</body>
</html>

Esta web manda un post request sin parámetros cada vez que pulsas el botón del formulario.

NOTA: Aquí además de programar Arduino, se usan conceptos de HTML

Otro tutorial similar: http://diymakers.es/crear-servidor-web-con-arduino/

Otro ejemplo: http://miarduinounotieneunblog.blogspot.com.es/2016/03/control-de-un-led-desde-un-servidor-web.html

Webserver con Ajax

Crear una web embebida que controle el encendido y apagado de un led tanto manualmente pulsando un botón como automáticamente al sobrepasar un umbral que pasamos a Arduino como parámetro mediante la web con una entrada numérica. Podría asemejarse a un termostato donde la entrada es una sonda de temperatura y su valor lo comparo con la temperatura que le paso como parámetro.

La web mostrará el estado de varias entradas analógicas, un botón para encender manualmente el led y una entrada numérica para enviar el dato del umbral.

NOTA: aquí se usa programación en javascript para ajax.

Ajax es una técnica muy eficaz para estos casos porque para mostrar los datos actualizados dinámicamente no es necesario cargar la web completamente, sino que sólo manda los datos que se actualizan en la web que son unos pocos bytes.

Mediante Ajax podemos actualizar los datos de la web embebida en Arduino sin necesidad de cargar toda la web, sino solo mandando los datos actualizados, economizando los datos mandados a través de la red y ocupando menos tiempo en el loop de arduino.

Ajax:

Esquema de conexión (para el led usamos el builtin led en el pin 13):

Solución: https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/tree/master/Ejercicio41-Ajax_DHCP

Web que devuelve Arduino: https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/blob/master/Ejercicio41-Ajax_DHCP/web.html

Web Embebida en Linux

Otra técnica para tener una web embebida en Arduino es usar los Arduino Yun o Tian que tiene un procesador MIPS con un linux embebido y usar un servidor web linux para servir las páginas. Luego mediante las librerías bridge o ciao se puede comunicar el microntrolador de Arduino con el procesador MIPS.

En este caso la web está en un servidor web del sistema operativo openWRT basado en linux y al interactuar con él la librería bridge se encarga de comunicar internamente linux con el microcontrolador del Arduino Yun.

Ejemplo para controlar los leds de un neopixel mediante una web en un Arduino Yun: https://github.com/jecrespo/NeoPixel

Neopixel: https://www.adafruit.com/category/168

Control del coche: https://github.com/jecrespo/Coche_AprendiendoArduino

Arduino Web Server

Crear un servidor web sencillo que saque por el puerto serie y también devuelva al navegador que le ha llamado la petición http que le ha llegado.

Luego añadir el valor leído en la entrada analógica A0.

Por último leer línea a línea la petición, esto es útil cuando hay que analizar el http request y que Arduino devuelva una cosa u otra en función de la petición que llegue.

Tutorial webserver: http://playground.arduino.cc/Code/WebServerST

Solución: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio26-EthernetServer

Otro ejemplo similar muy bien explicado: https://wngeek.wordpress.com/2013/07/24/185/

Al igual que hemos hecho un web server podríamos implementar un telnet server escuchando por el puerto 23. Ejemplos:

Web Embebida con Arduino

Crea una web embebida en Arduino con un botón que al pulsarlo desde el navegador encienda un led y al volver a pulsarlo apague un led.

Al recibir un get Arduino muestra una web para encender o apagar el led en función del estado del led.

Cuando pulso el botón de la web, el navegador manda un post con la instrucción de encender o apagar el led, Arduino la ejecuta y devuelve el estado en que queda el led y te da la opción de volver a la página anterior.

NOTA: Aquí además de programar arduino, se usan conceptos de HTML

Solución: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio27-Boton

Otro tutorial similar: http://diymakers.es/crear-servidor-web-con-arduino/

Webserver con Ajax

Crear una web embebida que controle el encendido y apagado de un led tanto manualmente pulsando un botón como automáticamente al sobrepasar un umbral que pasamos a Arduino como parámetro mediante la web con una entrada numérica. Podría asemejarse a un termostato donde la entrada es una sonda de temperatura y su valor lo comparo con la temperatura que le paso como parámetro.

La web mostrará el estado de varias entradas analógicas, un botón para encender manualmente el led y una entrada numérica para enviar el dato del umbral.

web_ajax

NOTA: aquí se usa programación en javascript para ajax.

Ajax es una técnica muy eficaz para estos casos porque para mostrar los datos actualizados dinámicamente no es necesario cargar la web completamente, sino que sólo manda los datos que se actualizan en la web que son unos pocos bytes.

Mediante Ajax podemos actualizar los datos de la web embebida en Arduino sin necesidad de cargar toda la web, sino solo mandando los datos actualizados, economizando los datos mandados a través de la red.

Ajax:

Solución: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio42-Ajax

Web Embebida en Linux

Otra técnica para tener una web embebida en Arduino es usar los Arduino Yun o Tian que tiene un procesador MIPS con un linux embebido y usar un servidor web linux para servir las páginas. Luego mediante las librerías bridge o ciao se puede comunicar el microntrolador de Arduino con el procesador MIPS.

En este caso la web está en un servidor web del sistema operativo openWRT basado en linux y al interactuar con él la librería bridge se encarga de comunicar internamente linux con el microcontrolador del Arduino Yun.

Ejemplo para controlar los leds de un neopixel mediante una web en un Arduino Yun: https://github.com/jecrespo/NeoPixel

Neopixel: https://www.adafruit.com/category/168

Control del coche: https://github.com/jecrespo/Coche_AprendiendoArduino