Las herramientas para prototipado han ido apareciendo en el tiempo según se iba aumentado el conocimiento existente sobre la física, especialmente en los campos de la electricidad y magnetismo. Estas herramientas son vitales tanto para el desarrollo de nuevas aplicaciones como para la reparación y revisión del funcionamiento de las ya existentes.

Las herramientas más importantes y versátiles para análisis en la historia han sido el voltímetro, procedente del desarrollo de los galvanómetros y el osciloscopio.

La tecnología ha ido mejorando a lo largo de los años y esto ha permitido crear analizadores para magnitudes físicas que no se podían verificar con exactitud o hacerlo de una manera más barata, sencilla o cómoda.

El analizador lógico apareció como el sustituto de los osciloscopios para el análisis de circuitos digitales, que permitía tener un gran número de entradas en comparación con el primero.

Objetivo del proyecto

El objetivo de este proyecto es el desarrollo de una solución formada por aplicación multiplataforma, garantizando su funcionamiento en Windows, Linux y Mac OS, con la que poder manejar la información desde y hacia la placa de interfaz; un protocolo de comunicación y una placa de interfaz con el mundo físico.

Hace dos años apareció ArduLab, un software que combinado con una placa Arduino permitía controlar manualmente los periféricos del chip integrado en la placa Arduino, por lo que facilitaba las tareas de prototipado al poder cambiar los valores lógicos en los pines, leer dichos valores o tensiones de forma analógica, sacar ondas PWM y todo esto sin tener que cambiar cables ni programar una línea de código por parte del usuario. El problema de este programa es que es de código cerrado y programado sobre LabView, por lo que depende también depende de las librerías cerradas de éste. La idea inicial fue la de que el programa llegara a la mayor cantidad de personas, pero para ello se necesitaba soporte para Windows, Linux y Mac, y aunque LabView en las especificaciones proveía ese soporte, a la hora de la realidad no se podía preparar el compilar el programa para los sistemas operativos Linux y Mac, quedando sólo disponible la versión de Windows. Las actualizaciones de las librerías han ido arreglando problemas existentes en el pasado, pero llegan muy lentamente y no solucionan el problema de forma completa, por lo que no es viable la dependencia que existe sobre éste paquete de software.

El proyecto surge como respuesta a estos problemas, crear un programa similar en funcionamiento para solucionar este problema de dependencia, por lo que se vio la necesidad evidente de crear un framework desde cero, implementando desde el comienzo el soporte multiplataforma, a partir del cual ir incorporando tanto módulos similares a los ya existentes como otros nuevos. También era requisito indispensable que fuera de código abierto, para permitir que cualquier persona pudiera modificar, adaptar o añadir los cambios que crea necesarios sin tener que depender del desarrollador principal en caso de que se tengan los conocimientos necesarios para ello.

Las características del framework deberán cumplir las siguientes especificaciones:

  • Placa de interfaz con el mundo físico accesible a todo el mundo y de bajo coste.
  • Los periféricos de la placa de interfaz deben incluir al menos los siguientes: entradas y salidas digitales, entradas analógicas, salidas de PWM y USART
  • para la comunicación con el ordenador.
  • Fácil montaje de la placa de interfaz de manera casera y con componentes comunes.
  • Protocolo de comunicaciones simple pero estable.
  • Programa de la interfaz de usuario en el ordenador intuitiva.
  • Fácil inclusión de nuevos módulos al programa.
  • Todas las partes estén bajo licencias libres y sean de código abierto.
  • Multiplataforma: Windows, Linux, Mac OS.
  • Por todo ello se consideran importantes las siguientes tareas:
  • Estudio del estado del arte sobre sistemas de prototipado similares ya existentes.
  • Aprendizaje y uso del entorno de desarrollo integrado Eric, así como del lenguaje de programación Python.
  • Análisis del protocolo de comunicaciones Firmata.
  • Aprendizaje y uso tanto entorno de desarrollo integrado Arduino como su ecosistema y los lenguajes de programación C y C++.
  • Estudio de la plataforma y programación de los AVR de Atmel.

Definiciones

El vocabulario técnico utilizado a lo largo de este documento es definido para su correcta comprensión:

  • Microcontrolador: es un circuito integrado programable, capaz de ejecutar órdenes grabadas en su memoria. Está formado por la unidad central de procesamiento, memoria y periféricos de entrada y salida.
  • Framework: es un conjunto estandarizado de conceptos, prácticas y criterios para enfocar un tipo de problemática particular, que sirve como referencia para enfrentar y resolver nuevos problemas de índole similar.
  • Bit: es la unidad mínima de información empleada en informática, capaz de representar dos estados, verdadero o falso, activado o desactivado.
  • Byte: unidad de información formada por 8 bits.
  • Core: (núcleo) parte principal de los microcontroladores y microprocesadores que se encarga de todo el procesamiento. Está formado por los registros, la unidad de control, la unidad aritmético lógica y los buses.
  • Compilador: programa informático que traduce el código fuente escrito en un lenguaje de programación a otro lenguaje de programación de menor nivel, generando un programa equivalente que la máquina sea capaz de interpretar. Normalmente al lenguaje al que se compila suele ser a lenguaje máquina.
  • Toolchain: (cadena de herramientas) conjunto de herramientas de compilación y enlazado, necesarias para transformar el código fuente en un programa ejecutable compatible con la plataforma con la que se desarrolla.
  • DIP: empaquetado en el que se pueden fabricar los chips, consistente en dos filas paralelas de pines distribuidas a lo largo del empaquetado y con una separación de 0,1 pulgadas entre ellos.
  • Shield: en el mundo relacionado con Arduino, se refiere a la placa que se conecta encima de éste para ampliar sus capacidades tanto de procesamiento, como de control o interfaz.
  • Bootloader: porción de código almacenado en una zona especial de la flash del microcontrolador que le permite ejecutarse en cada inicio. Normalmente es utilizado para poder programar el microcontrolador a través del puerto serie en vez de con un programador especializado.
Fuente: ALSW