SERVIDOR WEB CON ARDUINO UNO



By Kevin Miguel Acho Condori.

Paralelo. 6to “B”.
Materia. – Ingeniería de Redes I.
Carrera. – Ingeniería de Sistemas.
Universidad. – Universidad Pública de El Alto.
Correo Electrónico. kevinmigu0000@yahoo.com
                                         kevinmigu0000@outlook.com
                                         kevinmigu0000@gmail.com

OBJETIVO GENERAL 
  • Demostrar que el arduino también puede ser usado como un servidor web, complementando con todo lo aprendido en ingeniería de redes, electrónica básica y poco conocimiento en arduino, aplicar dentro de las teorías en sí.

OBJETIVOS ESPECIFICOS
·         Usar conocimientos de electrónica básica y programación dentro del arduino.
·         Demostrar la conexión de red y su forma de trabajo.
·         Analizar y controlar los procedimientos dentro del arduino y el código de programación.
·         Aplicar conocimiento básico del HTML.

JUSTIFICACION

·         Justificación Técnica. – la aplicación del arduino además de la programación y los complementos que tuvimos para hacer este servidor, dan a conocer que los complementos que utilizaremos dentro de nuestro proyecto da a conocer que necesitaremos material físico y lógico además de tener conocimientos de programación básica e intermedia (dentro del arduino), además de tener los componentes necesarios como ser los componentes necesarios tal como el cable rj45, el arduino uno y el ethernet shield, y un pc de conexión.
·         Justificación Social. – el servidor arduino servirá de buen complemento en casos de necesitar un servidor manual, además de ser un buen complemento de ser accesible y económico puede ser muy útil en sectores de pocos recursos.
·         Justificación Económica. – los complementos dentro del servidor son de precios accesibles, además poder conseguir fácilmente dentro del mercado de arduinos y los complementos de programación.
 
ALCANCES Y LIMITACIONES
  • Alcance y limitación Técnica. – Para aplicar el servidor web con arduino se necesitas los complementos anteriores mencionados, que con ellas se prevé que nos ayude a aplicar e implantar el servidor.  Algunos complementos pueden ser difíciles de conseguir ya que estos son muy requeridos dentro del servidor además de no poder tener más acceso a los servidores además de tener pocos accesos a usuarios.
  • Alcances y limitación Social. – Los dispositivos modernos y digitales pueden ser de mayor ayuda dentro de los clientes, además de ser accesible dentro del cliente que lo necesite, pero puede ser rechazado por no ser muy adaptable a los usuarios.
  • Alcance y limitación Económica. – el dispositivo no es en sí muy costoso pero los complementos en si además como llega a ser una primera fase de el uso del servidor.

INTRODUCCIÓN
El servidor web es un distribuidor de contenidos web que es parte de una red de ordenadores, arduino es una placa de circuito que se encarga de procesos de puertos digitales y analógicos de entrada y de salida y la programación de HTML que se encarga del lenguaje de programación para páginas web.
Con todo el conocimiento de redes y de la programación nos dedicamos a crear un servidor web que se encarga de enviar y recibir datos que tuviese en sí las características mínimas de un servidor, la aplicación de los componentes en si nos da a conocer que el servidor es en sí accesible y económico.
También debe de aplicarse el conocimiento en HTML que servirá para poner dentro de la programación del servidor, dentro del programa HTML es la que determinara como está la página web.
Además de tener conocimiento básico de redes se deberá de poner las redes que en si pueden ser directas o crossover, además este servidor se puede añadir con un router o un switch, pero eso dependerá del usuario porque también puede ser directa como ser de arduino a PC.
Con todos estos complementos se tendrá de manera eficiente el servidor de arduino que aplicándose en si los complementos serán de manera que cree una página web que se accede por el arduino.

MARCO TEORICO
Para aplicar los complementos y los conocimientos de la programación del servidor que se encarga de hacer el servidor además de los conocimientos se debe de tener los conceptos de los componentes siguiente las cuales son:

SERVIDOR WEB

Un servidor web o servidor HTTP es un programa informático que procesa una aplicación del lado del servidor, realizando conexiones bidireccionales y/o unidireccionales y síncronas o asíncronas con el cliente y generando o cediendo una respuesta en cualquier lenguaje o Aplicación del lado del cliente. El código recibido por el cliente suele ser compilado y ejecutado por un navegador web. Para la transmisión de todos estos datos suele utilizarse algún protocolo. Generalmente se usa el protocolo HTTP para estas comunicaciones, perteneciente a la capa de aplicación del modelo OSI. El término también se emplea para referirse al ordenador que ejecuta el programa.
El término servidor es ampliamente utilizado en el campo de las tecnologías de la información. A pesar de la amplia disponibilidad de productos etiquetados como productos de servidores (tales como versiones de hardware, software y OS diseñadas para servidores), en teoría, cualquier proceso computacional que comparta un recurso con uno o más procesos clientes es un servidor. Tomemos como ejemplo la acción de compartir ficheros. Mientras la existencia de ficheros dentro de una computadora no la clasifica como un servidor, el mecanismo del sistema operativo que comparte estos ficheros a los clientes si es un servidor.
De manera similar consideremos una aplicación web servidor (como por ejemplo el servidor multiplataforma "Apache"). Este servidor web puede ejecutarse en cualquier tipo de computadora que cumpla con los requerimientos mínimos. Por ejemplo, mientras un ordenador portátil (laptop) o computadora personal usualmente no son consideradas como servidores, en ciertos casos (como el anterior) pueden cumplir el rol de uno y por lo tanto ser denominadas servidores. En este caso es el rol de la computadora el que la coloca en la categoría de servidor.
En el sentido del hardware, la palabra servidor normalmente etiqueta modelos de computadora diseñados para hospedar un conjunto de aplicaciones que tiene gran demanda dentro de una red. En esta configuración cliente-servidor, uno o más equipos, lo mismo una computadora que una aplicación informática, comparten información entre ellos de forma que uno actúa como host de los otros.
Casi todas las computadoras personales pueden actuar como un servidor, pero un servidor dedicado tendrá cualidades más adecuadas para un ambiente de producción. Entre estas cualidades se pueden mencionar CPU más rápidas, RAM mejoradas para alto desempeño, y mayores capacidades de almacenamiento en forma de múltiples discos duros. Los servidores también cuentan con otras cualidades como confiabilidad, disponibilidad y utilidad (RAS) y tolerancia a fallos, esta última en forma de redundancia en el número de fuentes, almacenamiento (RAID), y conexiones de red.

ARDUINO ETHERNET SHIELD
El Arduino Ethernet Shield permite a una placa Arduino conectarse a internet. Es la parte física que implementa la pila de protocolos TCP/IP.
Está basada en el chip ethernet Wiznet W5100. El Wiznet W5100 provee de una pila de red IP capaz de TCP y UDP. Usa la librería Ethernet para leer y escribir los flujos de datos que pasan por el puerto ethernet.
Es compatible con el Arduino UNO y Arduino Mega.
El shield provee un conector ethernet estándar RJ45 y un conector lector de tarjeta Micro SD
El botón de reset en la shield resetea ambos, el W5100 y la placa Arduino.
El shield contiene un número de Leds para información:
  • PWR: indica que la placa y la shield están alimentadas
  •  LINK: indica la presencia de un enlace de red y parpadea cuando la shield envía o recibe datos
  • FULLD: indica que la conexión de red es full dúplex 
  • 100M: indica la presencia de una conexión de red de 100 Mb/s (de forma opuesta a una de 10Mb/s)
  • RX: parpadea cuando la shield recibe datos
  • TX: parpadea cuando la shield envía datos
  • COLL: parpadea cuando se detectan colisiones en la red


ARDUINO UNO
Arduino (en EEUU, Genuino a nivel internacional) es una compañía de hardware libre, y comunidad tecnológica, que diseña y manufactura placas de desarrollo de hardware y software compuesta respectivamente por circuitos impresos que integran un microcontrolador, y un entorno de desarrollo (IDE) en donde se programa cada placa. Arduino se enfoca en acercar y facilitar el uso de la electrónica y programación de sistemas embebidos en proyectos multidisciplinarios. Toda la plataforma, tanto para sus componentes de hardware como de software son liberados bajo licencia de código abierto que permite libertad de acceso a los mismos.
El arduino Uno Es una forma más optimizada de una placa ordinaria de arduino tradicional, además ella cuenta con menos pines (pero están los más importantes), además de tener más óptimo el tamaño colabora en si.
Arduino Uno es una placa de microcontrolador basada en ATmega328P ( hoja de datos ). Tiene 14 pines digitales de entrada / salida (de los cuales 6 se pueden usar como salidas PWM), 6 entradas analógicas, un cristal de cuarzo de 16 MHz, una conexión USB, un conector de alimentación, un encabezado ICSP y un botón de reinicio. Contiene todo lo necesario para soportar el microcontrolador; simplemente conéctelo a una computadora con un cable USB o con un adaptador de CA a CC o batería para comenzar. Puede jugar con su ONU sin preocuparse demasiado por hacer algo incorrecto, en el peor de los casos, puede reemplazar el chip por unos pocos dólares y comenzar de nuevo.
"Uno" significa uno en italiano y fue elegido para marcar el lanzamiento del software Arduino (IDE) 1.0. La placa Uno y la versión 1.0 de Arduino Software (IDE) fueron las versiones de referencia de Arduino, ahora evolucionadas a versiones más recientes. El tablero Uno es el primero de una serie de placas USB Arduino, y el modelo de referencia para la plataforma Arduino; para una lista extensa de tableros actuales, pasados ​​u obsoletos, vea el índice de tableros Arduino.


CABLE DIRECTO UTP
El cable directo de red sirve para conectar dispositivos desiguales, como un computador con un switch. En este caso ambos extremos del cable deben tener la misma distribución distribuciones. No existe diferencia alguna en la conectividad entre la distribución 568B y la distribución 568A siempre y cuando en ambos extremos se use la misma, en caso contrario hablamos de un cable cruzado.


ROUTER
También conocido como enrutador oencaminador de paquetes, es un dispositivo que proporciona conectividad a nivel de red o nivel tres en el modelo OSI. Su función principal consiste en enviar o encaminar paquetes de datos de una red a otra, es decir, interconectar subredes, entendiendo por subred un conjunto de máquinas IP que se pueden comunicar sin la intervención de un encaminador (mediante puentes de red), y que por tanto tienen prefijos de red distintos.
El primer dispositivo que tenía fundamentalmente la misma funcionalidad que lo que el día de hoy entendemos por encaminador, era el Interface Message Processor o IMP. Los IMP eran los dispositivos que formaban la ARPANET, la primera red de conmutación de paquetes. La idea de un encaminador (llamado por aquel entonces puerta de enlace) vino inicialmente de un grupo internacional de investigadores en redes de computadoras llamado el International Network Working Group (INWG). Creado en 1972 como un grupo informal para considerar las cuestiones técnicas que abarcaban la interconexión de redes diferentes, se convirtió ese mismo año en un subcomité del International Federation for Information Processing.
Esos dispositivos se diferenciaban de los conmutadores de paquetes que existían previamente en dos características. Por una parte, conectaban tipos de redes diferentes, mientras que, por otra parte, eran dispositivos sin conexión, que no aseguraban fiabilidad en la entrega de datos, dejando este rol enteramente a los anfitriones. Esta última idea había sido ya planteada en la red CYCLADES.
La idea fue investigada con más detalle, con la intención de crear un sistema prototipo como parte de dos programas. Uno era el promovido por DARPA, programa que creó la arquitectura TCP/IP que se usa actualmente, y el otro era un programa en Xerox PARC para explorar nuevas tecnologías de redes, que produjo el sistema llamado PARC Universal Packet. Debido a la propiedad intelectual que concernía al proyecto, recibió poca atención fuera de Xerox durante muchos años.
Un tiempo después de 1974, Xerox consiguió el primer encaminador funcional, aunque el primer y verdadero enrutador IP fue desarrollado por Virginia Stazisar en BBN, como parte de ese esfuerzo promovido por DARPA, durante 1975-76. A finales de 1976, tres encaminadores basados en PDP-11 entraron en servicio en el prototipo experimental de Internet.
El primer encaminador multiprotocolo fue desarrollado simultáneamente por un grupo de investigadores del MIT y otro de Stanford en 1981. El encaminador de Stanford se le atribuye a William Yeager y el del MIT a Noel Chiappa. Ambos estaban basados en PDP-11. Como ahora prácticamente todos los trabajos en redes usan IP en la capa de red, los encaminadores multiprotocolo son en gran medida obsoletos, a pesar de que fueron importantes en las primeras etapas del crecimiento de las redes de ordenadores, cuando varios protocolos distintos de TCP/IP eran de uso generalizado. Los encaminadores que manejan IPv4 e IPv6 son multiprotocolo, pero en un sentido mucho menos variable que un encaminador que procesaba AppleTalk, DECnet, IP, y protocolos de XeroX. Desde mediados de los años 1970 y en los años 1980, los miniordenadores de propósito general servían como enrutadores.
Actualmente, los encaminadores de alta velocidad están altamente especializados, ya que se emplea un hardware específico para acelerar las funciones de encaminamiento más específicas, como son el encaminamiento de paquetes y funciones especiales como la encriptación IPsec.


SWITCH
Conmutador (switch) es el dispositivo digital lógico de interconexión de equipos que opera en la capa de enlace de datos del modelo OSI. Su función es interconectar dos o más segmentos de red, de manera similar a los puentes de red, pasando datos de un segmento a otro de acuerdo con la dirección MAC de destino de las tramas en la red y eliminando la conexión una vez finalizada esta.
Los conmutadores se utilizan cuando se desea conectar múltiples tramos de una red, fusionándolos en una sola red. Al igual que los puentes, dado que funcionan como un filtro en la red y solo retransmiten la información hacia los tramos en los que hay el destinatario de la trama de red, mejoran el rendimiento y la seguridad de las redes de área local (LAN).
La aplicación de todos los complementos en si nos dará el servidor además se aplicará de la siguiente manera:
Primera Fase. – en la aplicación en si el servidor se tiene que tener conocimiento en las librerías las cuales son los SPI (Conexión de arduino a través del puerto) el ethernet (código de la conexión web) será la que se encargue de dar la programación y en él código se deberá de poner en la cabecera debajo del include las direcciones a las que se deberá de conectar el arduino además debe tener si será un servidor o un cliente además dentro del setup void tendrá que tiene el ethernet y el servidor, con además se debe de complementar en el void loop el código HTML pero dentro del código println complementado por ethernet cliente, para así dar final al código con la línea de código stop.
Después de la aplicación del código dentro del sistema se deberá de conectar el arduino, en este caso el arduino será el Uno complementando con el arduino ethernet shield (componente que se complementa con cualquier arduino) se tuvo inconvenientes (que se mencionara en el subtítulo errores), al unirse por conexión USB con el equipo y compilar el programa, pero se tuvo inconvenientes, además el complemento de que debe de dar de conexión es en la dirección IP 192.168.0.117 que nos dará la conexión con la página web que en si nos dará la página HTMLque se encargara de mostrarnos la información pero además de saber si estamos conectados nos encargaremos de verificar nuestra conexión mediante el programa de comandos CMD donde pondremos el código “Ping XXXX,XXXX,XXXX,XXXX” (X representa el rango dependiendo de la dirección IP que designamos anteriormente), además de poner el siguiente código esta nos dará una pequeña información como se muestra en la imagen.


ERRORES
Dentro del Servidor se llegó a puntos que nos llenaba de dudas de acuerdo al código además del complemento del Shield lo cual llegamos a retomar la idea de cambiar el código plasmado dentro del programa del arduino, además para tener mayor efecto en la placa cuando se compilaba los datos se debía de tener conectada el ethernet shield con el Arduino Uno.
Después de los errores cometidos, se prevé medir los errores de acuerdo a las imperfecciones que se hizo con las placas y los códigos de acuerdo con la cantidad de necesidad y de porcentaje de conclusión se tendrá lo siguiente:
Las necesidades del usuario ante los pedidos dentro del servidor son el de una pequeña página que se encarga de conectarse en sí, pero de manera clásica, la página no es muy amigable ante la necesidad del usuario además de no poseer ciertas imágenes, pero de esto hablaremos en las recomendaciones.
Incluyendo los componentes que tuvimos y algunos no pudieron reconocer, pero el componente se llegó a concluir que, dentro del sistema puesto además de poseer pocos errores, esta página solo cuenta con una aprobación de 80% además de no contar en caso de errores de 60% además de tener conflictos dentro de la programación que da de perfección al programa de un 70% lo cual ocasiono de que el mismo servidor llegase a tener un 70% de confianza además de no poder contar con ciertos datos que colaboran a cargar de manera eficiente.

CONCLUSIONES Y RECOMENDACIONES
Los componentes fueron de ayuda además del conocimiento que se tenía en la programación, se aplicó dentro de la programación del arduino además de la programación HTML que se encargara de mostrar la página web, con el conocimiento básico de redes se aplicará para la comunicación entre un servidor y un pc que dependerá de esto para que ellos se comuniquen en sí, además de tener conocimiento entre un arduino y un shield que se encargara de comunicarse entre sí.
Con estos componentes unidos se prevé llegar a hacer un servidor arduino que además de aplicarse con los códigos de programación dentro del arduino se logró tener un servidor web.
Dentro de las recomendaciones se sugiere aplicarse dentro de un router o un switch que además de aplicarse el arduino ethernet shield se tendrá que complementar con una memoria Micro SD que servirá de complemento para hacer que la página web tenga de complementos multimedia dentro de su sistema, además de poseer dentro del código del arduino las librerías del Micro SD que se llama “SD” que nos servirá de complemento en la página Web.


 Servidor Web con Arduino Uno
 


BIBLIOGRAFIA.
·         Arduino + Ethernet Shield
José Manuel Luis Gutiérrez
·         Kiwix
Programa de Almacenamiento de Wikipedia
·         Páginas de Referencias
-       Como crear una página web y su servidor con arduino | Arduino Ethernet Shield como servidor Web.
-       El Shield Ethernet Conectando Arduino en una red Ethernet
-       Arduino Ethernet Shield
-       Arduino Uno




Comentarios