Shields

El sistema consiste en placas o "shields" que usan el form-factor de Arduino UNO R3. La versión de Arduino es importante, porque la R3 incluyó una modificación que hace mas orientado al bus a la definición de pines de Arduino, y que consiste en los pines adicionales para comunicaciones I2C, comunicación que es usada en varias de las shields de FreeSensors. Sin embargo, es posible convertir las versiones anteriores de Arduino UNO (y tal vez las predecesoras) para usarlas con shields de FreeSensors: aquí se muestra la conversión de una Arduino UNO R0 en R3.

Una observación importante fue respetar el concepto de “stackable” de las shields mediante estas premisas (raramente respetadas por las shields comerciales para Arduino):

- Todos los pines Arduino UNO R3 pasan de arriba a abajo de la shield

- No hay conectores en la parte superior, siendo posible colocar otra shield arriba de esta

- Coinciden exactamente las dimensiones exteriores y la ubicación de los cuatro agujeros respecto a la placa Arduino UNO R3 facilitando el montaje o la creación de cajas o “cases”.

La nomenclatura y códigos de colores usado es el siguiente:

  • Shield Direct con 4 puertos AI y 4 puertos DIO
  • Shield DIOport con 8 puertos DIO
  • Shield AIport con 8 puertos AI
  • Shield Motor con 4 puertos DIO, 2 puertos para motores DC y 2 para servos
  • Shield Servo con 10 puertos para servos
  • Shield SPIport con 8 puertos SPI

La cantidad de pines de una Arduino UNO es limitada. Para poder maximizar el uso simultáneo de estas shields, se busca establecer una especie de "bus" con los pines, definiendo el posible uso de cada uno de ellos. De esta forma, por un lado se aleja al usuario final de la complejidad de los pines de Arduino, y por otra se establece una base para utilizar las mismas shields con otro tipo de controladores, tal vez mas simples (en modo esclavo), o con otros µControladores como el PIC para modos autónomos (ver PICduino). A continuación se propone un uso para todos los pines de Arduino UNO y se establece una matriz de compatibilidad entre las diferentes shields de FreeSensors.

La otra posibilidad para modularizar el sistema podría basarse en explotar aún mas las comunicaciones I2C. Por ejemplo, podrían llevarse un circuito muy similar al de la shield Motor a una placa satélite que tuviese un chip I2C de solo 4 pines (como el PCA9536) que maneje al chip L293D y asi controlar 2 motores DC (hacer eso y solamente eso, sin control de velocidad PWM de los motores). Esto permitiría conectar varias de esas placas por cada dos motores a controlar. Además, si esas placas satélites tuvieran un conector I2C de entrada y otro conector I2C de salida, se podría hacer encadenamiento o "daisy-chain" de varias de estas placas. Este esquema sería uno alternativo al planteado con el apilamiento de shields sobre la controladora, y hasta podrían convivir simultáneamente ambos planteamientos.