Embedded Web Server

embedded web serverDesde hace ya mucho tiempo existen sistemas embebidos con conectividad Ethernet. De hecho en casi cualquier placa o kit de desarrollo de microcontroladores de 32bit hay dos cosas que no faltan casi nunca: los puertos USB y el conector RJ-45 para Ethernet.

Actualmente existen un sinfín de fabricantes que ofrecen integrados dedicados  íntegramente a la interfaz Ethernet, incorporando la PHY, algunos la MAC y hasta podemos encontrar dispositivos que incorporan la Stack IP integrada controlable mediante bus I2C o SPI.
Todavía recuerdo el primer desarrollo embebido que tuve que hacer con Ethernet para conectarse mediante Sockets TCP/IP a un servidor de datos para mandar datos captados por sensores para telemetría. Para entonces lo de incorporar un integrado que se encargase de esta parte daba un poco de miedo (a mi no tanto pero al jefe de proyecto basándose en el tiempo de desarrollo, si) así que se usó un módulo on-board para pasar de UART a Ethernet. El módulo incorporaba todo, absolutamente todo lo necesario para poder conectarse a la red Ethernet, lo único que teníamos que tener en nuestro microprocesador era espacio necesario para programar la configuración de dicho módulo, un buffer dedicado para la cola de datos y una Uart libre para poder mandarlos y charlar con el módulo.

Si no recuerdo mal el módulo era el XPort Direct, del cual os dejo aquí una imagen y el link para que veáis las características de su última versión: XPort Direct+.

Reconozco que el desarrollo fue sencillo, pero ya entonces me pareció poco elegante el  tener que parsear cadenas de caracteres tipo telnet para poder configurarlo (el módulo estaba pensado para conectarlo al puerto serie de un pc). Este módulo lo he puesto a modo de ejemplo, dado que es el único conversor de este tipo que he tenido que incorporar y configurar en un diseño. Pero si buscáis por Google veréis que existen infinidad de empresas que fabrican conversores de este tipo, siendo quizás la más conocida Digi, que también fabrica interesantes embebidos con una versión de Linux propia pero enfocándolos sobretodo a la conectividad Ethernet y Wi-Fi.

ConnectCore Wi-i.MX53

Volviendo a los módulos puramente Ethernet, el precio de estos es elevado si se compara con otras opciones como las que comentaba de integrados dedicados. Además, si queremos incorporar algunas característica o atributos como podría ser una aplicación web o un simple web server totalmente personalizado y con datos a tiempo real  estos módulos dejan de ser una buena opción.

Es más, si se está usando un sistema operativo embebido tipo Linux o Windows, la utilización de estos módulos, no deja de ser una manera de tirar el dinero (bajo mi punto de vista); ya que como comentaba al inicio, actualmente hay un sinfín de fabricantes que dan muchas facilidades y variantes ofreciendo integrados acompañados del driver tanto para Windows como para Linux, etc…

Si no tenemos sistema operativo y tenemos una UART, los módulos dedicados Ethernet son una buena alternativa aunque existen otras posibilidades como los microcontroladores con la PHY integrada como por ejemplo los PIC18F de Microchip con la Stack IP disponible para su descarga de forma gratuita pudiendo toquetear su programación directamente en C. De hecho y dependiendo de la posterior utilización o no en otros proyectos y del tiempo disponible para su realización, no es ninguna locura plantearse hacer un módulo de conversión Serie-Ethernet con una PIC18F67J60 (la pequeñita de la familia) pues el coste será bastante más bajo a medio y largo plazo y el hardware adicional no son más que los típicos condensadores para la alimentación, algunos más, un par de resistencias y el conector Ethernet.

Aún así quizás lo más sensato si lo que se quiere es tener una interfaz web como principal, que el sistema y el código fuente de esta PIC sea nuestro pues la personalización del embedded web server permite algunos detalles que darán valor añadido a nuestro sistema embebido dado que permitirá un acceso sencillo y fácil al usuario final. En este aspecto actualmente hay fabricantes que después de hacer algunas modificaciones sobre el firmware básico de la Stack IP venden PCBs pequeñitas para soldar on-board o con tira de pines que son exactamente eso:  PIC18F67J60 + conector Ethernet + tira de pins con UART, SPI, etc…

Si el diseño tanto firmware/software como de usabilidad son buenos se pueden conseguir páginas web muy completas que facilitan el uso del sistema embebido haciendo posible cosas relevantes para el usuario final como la configuración del dispositivo, la visualización de datos a tiempo real, etc como para el propio desarrollador para debugar o incluso para utilizar el embedded web server como herramienta de mantenimiento y actualización del firmware del sistema.

Desde este punto de vista, el del desarrollador, es importante que tenga en cuenta la incorporación no sólo de HTML sino de JavaScript, una hoja de estilo css bien hecha, jquery, Ajax, cgi’s y si resulta que nuestro sistema embebido corre con Linux y es suficientemente potente con Apache para poder hacer mini-aplicaciones php con una pequeña MySQL.

AVISO: Ya sé que no viene a cuento y que se merece un extenso post pero… ¿Realmente es necesario un Linux u otro embedded OS? Para según que cosas es evidente que si, pero para muchísimas otras no. Ahora me tiraré a las brasas, pero me atrevo a decir que hay una extendida manía u obsesión por parte de algunos desarrolladores en la utilización de sistemas operativos para todo (ya sean partidarios de Windows o de Linux). Quizás porque los desarrolladores del código de los sistemas embebidos en gran parte provienen del Software de PC, no lo sé, pero la cuestión es que hay desarrollos que incomprensiblemente están sobredimensionados y simplemente por cabezonería de Linux, Linux, Linux; por la tendencia que está de moda; por lo que se piensa pero no se dice: “el hardware da miedo”, “el firmware no es guay”,  ”tengo mono de arrays de doubles enormes”, “buuuuuhhh”…

La cuestión es que con un buen planteamiento tanto Hardware como Firmware podemos hacer que el usuario, el operario o cualquier persona que se conecte a la misma LAN que nuestro embebido pueda reconfigurarlo, modificar su funcionamiento e incluso realizarle un test desde su Smartphone, y únicamente con un microcontrolador RISC de 8bits o un ARM9 de 32bits de muy bajo coste como los STM32 de ST con StackIP. No hay que olvidar, como es lógico y primordial, que no se debe priorizar el web server sobre el buen funcionamiento del sistema embebido y este realice las tareas de conexión y envío de datos con el protocolo correspondiente y cumpla con la función para la que realmente se ha diseñado pues el embedded web server puede ser muy útil y facilitar el uso, pero puede que sólo sea la cara bonita de lo que realmente está haciendo el embebido y el rendimiento en el sistema sea un factor determinante, pues independientemente de su facilidad de uso es su principal y primordial objetivo. También puede que el embebido sea única y exclusivamente para poner una cara bonita a un interior oscuro y tenebroso, pues se puede tratar de un upgrade exclusivamente hardware que puede decrementar el tiempo de dedicación del personal que finalmente trabaje con el sistema, maquinaría, lo que sea; e incluso mejorar la experiencia usuario en caso de sistemas enfocados al gran público.

Como con las páginas web convencionales soy de la opinión que los embedded web server ya deben tener la capacidad de adaptarse a un visionado o interacción desde smartphones y tablets, algo que con un poquito de práctica de css puede conseguirse de forma elegante y sencilla y que no afectará al rendimiento dado que es el navegador el que interpreta los datos y lo muestra por pantalla y teniendo en cuenta que es independiente de la parte que muestra los datos por pantalla (HTML simple, php, JavaScript, Ajax, etc..) la frecuencia de los datos no se verá afectada.

Todos los navegadores que incorporan tanto iPhone, como iPad y Android soportan perfectamente opciones de degradado y sombreado (box-shadow, por ejemplo) lo que permitirá programar webs embebidas fáciles y bonitas sin ocupar nuestra program memory o el filesystem con archivos de imágenes e incluso realizar efectos con jquery o HTML5 para los valientes. En el siguiente post colgaré un ejemplo sencillo de web embebida que se adapta al tamaño de pantalla y que se ve genial tanto desde cualquier Smartphone, Ordenador o tableta adaptando su distribución y tamaño a la pantalla del dispositivo y a su orientación con un tamaño más que asequible para el más sencillo de los web server.

En definitiva, en el caso de no ser un dispositivo destinado a ser usado por usuarios expertos o con conocimientos técnicos, el embedded web server es una opción mucho más económica y fácilmente personalizable que el uso de una pantalla táctil además de no estar expuesto al ataque de los vándalos (creedme que es algo importante a tener en cuenta). ¿Por qué digo lo de usuario experto? Hoy día cualquiera con dos dedos de frente es capaz de instalarse un WordPress y gestionarlo; sino, miradme a mí con mi blog… La navegación por la web ya es algo que la grandísima mayoría de la gente tiene como algo cuotidiano y viendo a los pequeños de la familia parece algo que el ser humano ya posea de forma innata.

Un ejemplo que se me acaba de ocurrir y que posiblemente ya exista: Algo tan sumamente fácil como un código QR pegado al exterior del dispositivo, una foto con el Smartphone y, tal cual, se abre el navegador de nuestro móvil para navegar por dentro del dispositivo y ver las opciones que ofrece.. Sencillo, rápido y barato ¿no?

Tagged with: , , , , , , ,
Posted in Blog Técnico, Embedded Web Server, Sistemas Embebidos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*


*

enlaces patrocinados