Intel® ha liberado una segunda versión de la tarjeta Galileo, esta nueva edición se comercializara bajo el nombre de Intel Galileo Gen 2. El sucesor de la generación 1 de Galileo estará próximamente en el mercado por lo que es importante conocer las diferencias entre estas dos plataformas de desarrollo.


1. En general


Intel Galileo Gen 2 retiene la esencia de su predecesor al mantener el conector para shields de Arduino UNO, sin embargo, agrega nuevas características de hardware y mejora las prestaciones de algunos periféricos en comparación con la generación 1.


A lo largo de este documento se numeraran los cambios mas importantes entre estas dos tarjetas, se asume que el lector tiene cierta familiaridad con Galileo Gen 1. Para todos los lectores que busquen información mas detallada de esta próxima generación de Galileo los invitamos a consultar las siguientes ligas:


Documentación Oficial para la Tarjeta de Desarrollo Intel Galileo Gen 2

** Documentación en Ingles. Próximamente en español en esta comunidad.

Getting Started with Intel® Galileo Gen 2 - emutex labs

** Parte de la información de este documento fue extraída de esta fuente.

intel.web.480.270.jpg


2. Características nuevas de Galileo Gen 2


Entre los cambios mas notables con respecto a la generación 1 podemos encontrar:


  • Nuevas opciones para alimentar la tarjeta:
    • Galileo Gen 2 puede ser alimentado con fuentes de poder entre 7 y 15 Volts. Con este cambio, ahora puedes alimentar tu Galileo Gen 2 con la fuente de poder de tu Arduino UNO. (Nota: Las fuentes de alimentación incluidas con las tarjetas Galileo Gen 1 no son compatibles con la generación 2)
    • Poder a través de Ethernet (POE). Galileo Gen 2 puede ser alimentado por medio de un cable de ethernet (RJ45), eliminando de esta manera la necesidad de una fuente de poder extra. Es importante notar que el cable de ethernet debe estar conectado a un switch o dispositivo capaz de proporcionar un voltaje de 12 volts.
    • Alimentación a través de un shield con la terminal VIN. Ahora es posible alimentar la tarjeta desde un shield a través de la terminal VIN. El voltaje inyectado a través de esta terminal debe estar en el rango de 7 a 15 volts.
  • Desempeño del ADC. Galileo Gen 2 utiliza un nuevo ADC (Texas Instruments ADS108S102) lo que permite un muestreo de señales 4 veces mas rápido en comparación con la Generación 1 de Galileo.
  • Mejor desempeño para los GPIO. 12 de los 20 pines del conector de Arduino UNO en Galileo Gen 2 ahora se encuentran conectados de manera directa al procesador Quark X1000 SoC. Esta conexión directa permite un mejor desempeño en estas terminales.
  • Resolución de PWM extendida.  La generación 2 de Galileo utiliza un chip dedicado (NXP PCA9685) para la generación de señales de PWM con una resolución de 12 bits. Este cambio permite un control mas preciso en los movimientos de servomotores con Galileo.
  • Puerto de Consola Serial compatible con FTDI. El acceso a la consola serial de Linux ahora presenta un conector estándar de 6 pines FTDI, este conector trabaja bajo el estándar de voltaje de 3.3 Volts TTL. Un cable FTDI TTL-232R-3V3 o similar, es recomendado para iniciar una sesión por consola serial con Galileo Gen 2.
  • Conector de tamaño estándar para el puerto USB anfitrión. El puerto USB anfitrión de Galileo Gen 2 ahora cuenta con un conector USB tipo A de tamaño completo.
  • Aumento de tamaño físico. Debido a los nuevos componentes incluidos en la Generación 2 de la tarjeta, esta a aumentado su longitud a 124 mm.

 

Estos son los cambios mas sobre salientes en la nueva generación de Galileo, sin embargo existen otras modificaciones ademas de las mencionadas anteriormente. Para una lista completa de las características de la tarjeta visita la documentación oficial de Intel Galileo Gen 2.

 

3. Cambios en el IDE Arduino

 

El IDE de Arduino para Galileo ya presenta soporte para la Generación 2 de la tarjeta en su versión mas reciente (Descarga Aquí). Todos los cambios en la tarjeta son absorbidos por el API de programación de Arduino, por lo que migrar un sketch a una tarjeta de la Generación 2 solo requiere una nueva compilación del código. Es importante mencionar que es necesario seleccionar como tarjeta objetivo a Intel® Galileo Gen 2 en el menú Herramientas -> Tarjeta del IDE, de lo contrario el código generado después de la compilación de un sketch no se ejecutara de manera correcta en la tarjeta Galileo Gen2.

 

toolsGen2.png

 

3.1 Segundo puerto serial UART en los pines IO2/IO3

 

El procesador Quark X1000 tiene dos puertos seriales. En la generación 1 de Galileo uno de los puertos del procesador esta conectado a las terminales IO0/IO1 para mantener compatibilidad con los shields de Arduino UNO, mientras el segundo puerto esta atado de manera rígida al conector de audio de la consola serial de Linux. En Galileo Gen 2 el puerto serial de las terminales IO0/IO1 se mantiene sin cambios, sin embargo el segundo puerto serial puede ser dirigido a las terminales IO2/IO3, dejando la terminal serial de Linux sin conexión física mientras las terminales alternas estén en uso.

 

La activación de las terminales alternas para el segundo puerto UART solo requiere la invocación del objeto Serial2 como se muestra en el siguiente ejemplo:

 

void setup() {
    Serial2.begin(9600);
}

void loop() {
    Serial2.println(“Hola Mundo, desde el puerto 2 UART”);
    delay(1000);
}





 

Mientras Serial2 este en funcionamiento en un sketch la consola serial de Linux permanecerá inaccesible. Para restablecer su uso, es necesario la llamada dentro del sketch de la función Serial2.end(), o la carga de un nuevo sketch que no haga uso de Serial2 o como ultima media el reinicio total de la tarjeta Galileo Gen 2.

 

La biblioteca SoftwareSerial ha sido portada para su uso con Galileos de la segunda generación. Sin embargo, esta biblioteca esta ligada al uso del segundo puerto UART del procesador, por lo que no implementa realmente un puerto serial por software.

 

3.2 GPIO mas rápidos en las terminales IO0 - IO6 y IO9 - IO13

 

El manejo de las terminales IO0 a IO6 y de IO9 a IO13 se encuentra bajo control directo del procesador Quark X1000 en Galileo Gen 2. Si se utiliza las rutinas estándar de Arduino, digitalWrite() y digitalRead(), para el manejo de las terminales es posible que el sketch alcance velocidades de cambio de estado a la salida del pin de aproximadamente 390 kHz. Esta velocidad de cambio de estado en un pin estaba disponible en Galileo Gen 1 solo en las terminales IO2 y IO3, ademas requería que estas ultimas se configuraran como OUTPUT_FAST.

 

Galileo Gen 2 viene acompañada con nuevas rutinas para mejorar la velocidad de respuesta de sus terminales de entrada/salida de propósito general, estas son:

 

fastGpioDigitalWrite(id)
fastGpioDigitalRead(id)
fastGpioDigitalRegSnapshot(id)
fastGpioDigitalRegWriteUnsafe(id, mask)




 

A continuación mostramos un ejemplo del uso de estas nuevas rutinas:

 

void setup() {
    pinMode(2, OUTPUT);
}
void loop() {
    bool value = HIGH;
    while (1) {
          fastGpioDigitalWrite(GPIO_FAST_IO2, value);
          value = !value;
    }
}




 

** GPIO_FAST_IO2 es un identificador para indicar que el pin 2 sera utilizado para operaciones de alta frecuencia.