2/20/2017

Linkit Smart 7688 Duo

Saludos,

Este es el primero de una serie de artículos que publicare respecto a esta nueva placa que hemos adquirido.


Likit Smart es un microcontrolador con un sistema operativo Linux incluido de un tamaño muy reducido, semejante o la copia de un Intel Edison. O esa es la idea, necesitamos crear un sistema balancing semejante a Eddie, que nos fue sustraído durante un curso. Eddie incluía una placa Eddison, con una controladora de motores dual h-bridge, un IMU con 9DOF, un bloque GPIO, bloque USB y un módulo de batería. Dada su forma y su manera de montaje todo quedaba reducido en un espacio muy pequeño, pero con un precio que oscila entre los 200 y 250€.




Vamos a tratar de realizar a su hermano barato, con una placa Likit Smart 7688 Duo, una placa de motores hecha con drivers L272M que hemos empleado para hacer otros robots un IMU de 9 DOF. Salvo los procesadores el resto de material es reciclado de proyectos antiguos.

Vamos con los datos técnicos.
580 MHz MIPS CPU
Single input single output(1T1R) Wi-Fi 802.11 b/g/n (2.4G)
Pin-out for GPIO, I2C, I2S, SPI, SPIS, UART, PWM and Ethernet Port
32MB Flash and 128MB DDR2 RAM
USB host
Micro SD slot SD/SDXC
Support for Arduino API (ATmega32U4)
Size: 60.8x26.0mm
MPU Chipset: MT7688AN, 580MHz, 3.3V
MCU Chipset: ATmega32U4, 8MHz, 3.3V
Memory: Flash: 32MB, RAM: 128MB DDR2
GPIO Pin: 3(MT76),24(ATmega), 3.3V
PWM Pin : 8(Atmega), 3.3V,16bits
ADC Pin 12(ATmega), 10 bits
External Interrupts: 8
SPI/SPIS
Pin numbers: S0, S1, S2, S3
Max Speed: 4MHz
I2C Pin: D2/D3, 400KHz
UART Lite: P8/P9(MT76), D0/D1(ATmega)
USB Host Pin: P6/P7
Wi-Fi: 1T1R 802.11 b/g/n (2.4G)
Ethernet: 1-port 10/100 FE PHY, Pin: P2/P3/P4/P5







Descripción del Hardware


Tal y como indicábamos el MCU del  Link Smart se puede programar con el ide de Arduino seleccionando como placa al Arduino Yun. Aunque el ordenador me lo detecta como un tensy, lo único problemático es que tras programarlo el puerto desaparece.


Esto no ha sido un problema menor, pues tras cargarle el Blink no había manera de que Windows 10 me volviese a detectar la placa. Gracias a otra gente que ha documentado este tipo de placa he descubierto que hay que pulsar dos veces el reset del MCU cuando le vas a cargar el programa. De esta manera se recupera el puerto de la placa. Para evitar este problema, primero recomiendo leerse la documentación antes de ponerse manos a la obra. Esto suele ocurririr cuando nos conectamos a la placa como si fuera un Arduino Yun. Si en preferencias de Arduino añadimos





Tras añadir la dirección vamos a Herramientas, Placa, Gestor de tarjetas. En la última posición estará la placa Linkit Smart 7688 Duo para instalar.

Para el desarrollo de este proyecto, tratamos de substituir un Intel Edison, nos damos cuenta que quizá la mejor placa para desarrollarlo sería la Linkit Smart 7688, más parecida pues la Duo al contar con el microcontrolador ofrece varios modos de programación y funcionamiento, en principio tres.




El método innovador es el que nos permite programarla desde el ide de Arduino.


La principal diferencia con la placa anterior es que todos los sensores se conectan y gestión desde el MCU, dejando solo unos cuantos pines que se gestionan con el procesador MT7688, esto principalmente es lo mismo que tiene el Arduino Yun, con la diferencia del precio. Este tipo de comunicación emplea la librería Bridge, que permite al Arduino controlar todo el sistema, incluso el Linux.



Ahora bien, podemos crear un Firmata y programar tanto el Arduino como el Linux para que lo que tengamos conectado en el MCU sea leído por el Linux y viceversa. En definitiva, es una conexión serial y se debe programar ala Arduino para que responda las instrucciones que reciba.


La tercera opción es similar a la primera, pero en el Arduino programamos el proceso de captura de los sensores y la gestión de los actuadores, y se mantiene una comunicación fluida con el Linux, que puede desarrollar procesos que requieran más potencia de computación.

  

Cosas que conectar

Para realizar el proyecto necesitamos una IMU, Grove IMU 10DOF que funciona por I2C pero tal y como veremos en la siguiente imagen el I2C está controlado únicamente por el MCU, al igual que el control de los motores, que emplearemos los drivers L272M.




Diagrama de pines del Linkit Smart 7688 Duo




Los encoders de los motores irán conectados a las entradas de interrupción D14, D15, D16, D17 que serán gestionados mediante la CPU con la librería mraa. Los motores los conectaremos en el D4, D5, D6, D7 y el bus I2C estará en los pines D2 y D3.

Para este proyecto hemos empleado los motores Micro Metal Gear motor 50:1 con Encoder, que ya vienen con el encoder y el conector y tienen un precio muy asequible. La resolución del encoder es aproximadamente 14 pulsos por vuelta, al tener dos sensores recibiremos 28 pulsos por vuelta X 50 de la reducción aproximadamente 1400 pulsos por vuelta de la rueda.

Nota: La reducción de los motores en el robot Eddie es 75:1, empleando los mismos encoders con esa reducción obtenemos 4200 pulsos aproximados por vuelta, con el programa del Eddie. Una gran diferencia con el modelo de Polulu que según indica da 12 pulsos por vuelta, aunque no he podido comprobarlo físicamente. Esto causa un problema para ajustar el PID pues los parámetros de entrada son muy diferentes.





No tiene una figura muy definida, pero para ser un prototipo ya nos funciona. La batería para esta ocasión he reciclado un par de módulos de una batería de un macbook.



... Working progress...

Anakleto.