Sistema de propiedad

1.1 Historia de este libro y lo que obtendrá de su lectura

En el transcurso de aproximadamente un año, después de completar mi primer libro, resucité un viejo proyecto de construcción de un submarino autónomo (conocido como el proyecto E-2) con ciertos requisitos de funcionalidad bastante desafiantes. Durante el desarrollo de esta idea, pasé muchas horas en Internet y en otros lugares, investigando técnicas para el desarrollo rápido de diversos sistemas de control electromecánico y plataformas para ejecutar algoritmos de procesamiento de señales bastante complejos. Aunque hay, por supuesto, miles de proyectos útiles y fragmentos de información que se pueden obtener en Internet y en libros sobre robótica para aficionados, descubrí que nadie más parecía tener mis prioridades exactas. En concreto, parece que no hay una sola referencia que reúna, al menos, soluciones introductorias a todos los problemas de diseño embebido que afectaban a mi proyecto: la necesidad de utilizar herramientas y sistemas operativos de bajo coste (de código abierto), la exigencia de varias funciones con requisitos de tiempo real bastante duros, y el deseo de utilizar componentes baratos y disponibles para el consumidor siempre que sea posible. Los recursos disponibles en muchos temas se concentran en componentes industriales muy caros y disponibles en el mercado, o en sistemas muy limitados construidos en torno a un único microcontrolador, con código delicadamente optimizado y no transportable para controlar los periféricos, y con una gama muy limitada de soporte de periféricos. Estas últimas restricciones en el diseño del sistema son inevitables cuando se trabaja con requisitos de potencia muy ajustados, limitaciones de espacio o un coste de la lista de materiales (BOM) muy bajo, pero construir y poner a punto estos sistemas para un proyecto único o un prototipo supone un esfuerzo desmesurado. Además, aprender todos los detalles necesarios para ensamblar un sistema de este tipo es una tarea enorme; es fácil perderse en el ajuste de los detalles sin conseguir nunca poner en marcha un sistema completo y funcional. Irritantemente, muchos de los ajustes y la mayor parte de la cuidadosa planificación que se hace para conseguir que el sistema sea operativo tendrán que ser desechados si se pasa a la producción real, o si se necesita construir algunas unidades más con componentes ligeramente diferentes.

Lo que estaba buscando mientras desarrollaba el proyecto E-2 era una manera de construir varios módulos de tiempo real duro (sensores y actuadores) que pudieran interconectarse fácilmente y de forma barata con un ordenador de propósito general que ejecutara Linux. La caja de Linux servía como banco de pruebas para los algoritmos que más tarde se trasladarían a un módulo de procesamiento más pequeño, más fresco y con mayor eficiencia energética. Necesitaba una base sólida de código y técnicas conocidas para poder partir de ese punto y construir mi propio sistema personalizado. También quería una guía sencilla para construir distribuciones Linux integradas. Para el prototipo inicial, no apto para el campo, de mi submarino, no tenía una idea exacta de cuántos caballos de fuerza de la CPU necesitaría en la versión final, así que no quería atarme a una arquitectura de microcontrolador específica, ni tampoco quería empantanarme tratando de ajustar y afinar muchas tareas en tiempo real en un solo microcontrolador. También quería utilizar algunos periféricos -como las cámaras- que son más fáciles de interconectar a través de un sistema operativo de propósito general.

Estos requisitos pueden coincidir con tu propia vida laboral. Es probable que te hayas encontrado con situaciones en las que sería útil automatizar algún experimento de recopilación de datos a largo plazo o crear un sencillo controlador automatizado para una tarea de programación, fabricación o de otro tipo. En este sentido, otros tres casos en los que he aplicado las técnicas de este libro son:

El desarrollo de una gama de exitosos aparatos multimedia en red (comercializados), diseñados para aplicaciones publicitarias y de galerías de arte desatendidas.

El desarrollo de aparatos especializados de comprobación de fallos mecánicos, casi totalmente automáticos, para ciertos artículos de electrónica de consumo.

La construcción de un registrador de datos automático de alta velocidad que monitorea un enlace de radio y extrae mensajes DTMF dirigidos a receptores específicos.

El segundo punto anterior es de particular interés, porque demuestra muy bien cómo este libro puede ser de valor práctico en aplicaciones de control de procesos y pruebas. Durante el año 2002, trabajé brevemente para una pequeña división de una empresa multinacional cuya principal actividad era la fabricación de artículos de plástico para el hogar y la oficina. Fue muy instructivo examinar sus dispositivos de prueba automatizados -sistemas propietarios- y comparar el coste y la complejidad de configuración de estos dispositivos con el coste y el tiempo de configuración relativamente bajos de un simple SBC basado en Linux que controla los mismos actuadores y sensores neumáticos. Está claro que existe un mercado infraexplotado de sistemas de prueba de bajo coste de este tipo. Los sistemas patentados que se utilizan en estas instalaciones cuestan casi 20.000 dólares por media docena de actuadores y los PLC asociados, además de incontables horas de tiempo de configuración1. El software de control de estos dispositivos era especializado y no se entendía bien; de hecho, la mayoría de estos equipos estaban parados porque las personas que los configuraron originalmente habían dejado la empresa. En cambio, las mismas tareas podrían realizarse fácilmente con un PC normal que costara apenas unos cientos de dólares, más quizás 200 dólares por actuador para la neumática asociada. Y lo que es más importante, el software de control para un sistema de este tipo es un sencillo programa en C fácilmente comprensible y adaptable por cualquier estudiante competente de informática o ingeniería electrónica; había varios candidatos fácilmente disponibles en el laboratorio de la empresa.

Debido a la naturaleza de la investigación que condujo a la creación de este libro, he incluido una pizca de detalles navales en el texto, no todos ellos directamente relevantes para el ingeniero empotrado. Si este material no le interesa, puede ignorarlo sin comprometer su comprensión del resto del texto. La razón por la que se incluye esta información junto a la discusión sobre el desarrollo «puro» de los sistemas integrados es principalmente para ilustrar los requisitos del mundo real y el pensamiento que condujo a varias decisiones de diseño en el proyecto E-2. La ingeniería no es una ciencia teórica; es una disciplina aplicada, y es con esto en mente que utilizo ejemplos específicos para ilustrar puntos teóricos.

También debe tener en cuenta que algunas de las opiniones expresadas en este libro, si no son exactamente controvertidas (excepto por los estándares de Usenet – ¡todo en Usenet es controvertido!), son al menos discutibles; por ejemplo, la elección de AVR como mi plataforma de control en tiempo real. Por esta razón, he proporcionado una justificación adicional para las decisiones que he tomado en este texto. Esta explicación adicional debería demostrar las razones que tuve para elegir caminos específicos, pero no está expresamente diseñada para hacer proselitismo del AVR a personas que tienen experiencia con, y prefieren, otra arquitectura. De nuevo, este «material extra» no es crítico para su comprensión de los conceptos básicos presentados aquí, y puede saltárselo con seguridad si lo desea.

Tenga también en cuenta que este libro no es intencionadamente una «biblia». No es una cobertura exhaustiva de cada uno de los matices de los temas tratados; una obra así abarcaría varias estanterías. El objetivo principal de este libro es describir e ilustrar una metodología sencilla, modular y económica para implementar sistemas embebidos complejos, y presentar algunos módulos listos para usar para que el lector los adapte a sus propios proyectos. Se hace especial hincapié en la realización de soluciones integrales utilizando hardware de desarrollo de bajo coste y herramientas de software libre. Cuando llegue a las últimas páginas, es de esperar que tenga lo siguiente:

Una comprensión funcional de los detalles críticos «bajo el capó» necesarios para arrancar Linux en plataformas x86.

Una introducción a los tipos de problemas a los que se enfrentará al utilizar ordenadores monoplaca x86 embebidos como núcleo de sistemas de registro de datos y control de movimiento.

Información básica sobre la familia de microcontroladores Atmel AVR.

Introducción práctica a la construcción de algunos circuitos sencillos de adquisición de datos y control de motores, y a su conexión a PC.

Algunas informaciones básicas de «cartilla» sobre la seguridad de los datos, la autenticación y las cuestiones de fiabilidad en la medida en que afectan a los sistemas embebidos.

La idea subyacente es que el lector tenga una experiencia razonablemente íntima con uno u otro de los temas del desarrollo de aplicaciones Linux, o del desarrollo de sistemas profundamente embebidos-este libro está diseñado para impulsarle en la vanguardia de su curva de aprendizaje con los elementos esenciales de cualquier lado de la ecuación que le falte. También proporciona el pegamento que une estas piezas de información en el contexto general de un proyecto bastante complejo. Por cierto, he utilizado la palabra «libro de cocina» con cierta desconfianza. La ingeniería de los libros de cocina, que consiste en unir piezas mal entendidas como esferas de Capsela, nunca es una buena práctica. En este libro, te doy algunas piezas de Capsela listas para usar, pero también te cuento cómo y por qué hice los engranajes y ejes de cada pieza, y hasta cierto punto cómo puedes ir más allá y hacer mejores piezas por ti mismo. Estas explicaciones son mucho más importantes que los planos de las piezas en sí.

Cuando se planifica un libro como éste, es fácil caer en una de estas dos trampas: o bien crear una única y monolítica «mega-aplicación» que ilustre todos los puntos deseados, pero que sea extremadamente difícil de explicar de forma sucinta, o bien, por otro lado, dividir el tema en numerosas y pequeñas notas abstractas que muchos lectores tendrán problemas para integrar en proyectos del mundo real. He tratado de dirigirme entre estos dos extremos dividiendo los módulos más interesantes del proyecto E-2 en unas pocas aplicaciones pequeñas y prácticas junto con código básicamente independiente y suficiente teoría para modificar y extender estas aplicaciones para sus propios usos.

Por último, una nota para las personas que tienen mi libro anterior, Embedded System Development on a Shoestring. Este libro no está diseñado para ser una secuela de ese volumen, pero definitivamente es material relacionado. Si sigues las técnicas de este libro para construir un prototipo de dispositivo, y más tarde quieres reducirlo a una solución optimizada de un solo chip, mi trabajo anterior te ayudará a entender cómo utilizar las herramientas libres de GNU para conseguir que tu software sea fácilmente portado a un microcontrolador ARM. Las principales críticas que recibí por ese libro anterior fueron que necesitaba cubrir un rango más amplio de información, y que había muy pocas ilustraciones, lo que lo convertía en una lectura bastante árida. He escuchado estos comentarios y espero que este libro satisfaga sus necesidades en ambos aspectos. Como siempre, sus comentarios y sugerencias son bienvenidos; puede enviarme un correo electrónico o visitar mi sitio web en http://www.zws.com/.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.