Por un par de días pensé que se me había ocurrido una idea original y que quizá podía ser una idea interesante y con buen futuro.
Normalmente para llevara a cabo nuestros proyectos partimos haciendo algunos cálculos para ver cuanta memoria nos haría falta, la cantidad de I/O que necesitamos, verificamos algunas características que deseamos que tenga nuestro equipo y con esto en mente nos decidimos por algún microcontrolador que tenga lo básico para poder realizarlo.
Partiendo de esa base, tenemos una CPU, algo de ROM y RAM y una buena cantidad de GPIOs, y desde ahí vamos añadiendo circuitos integrados y otros módulos dependiendo de que requiera nuestro proyecto. Por ejemplo, si necesitamos comunicación Ethernet agregamos el módulo necesario, si requiere manejar una pantalla gráfica, pues ponemos un controlador LCD (o incluimos las librerías para su control en nuestro programa) y una pantalla, si el proyecto necesita un acelerómetro, pues se lo agregamos y hacemos el programa para su control…
Si sumamos el costo de todo aquello componentes electrónicos, y consideramos además que tenemos que hacer la placa, pasar cientos de horas haciendo pruebas y ajustes para que todo funcione, resulta que nos hemos gastado una buena cantidad de pesos, dólares o euros.
Y ahí, como una revelación, surge la idea… ¡¡¡Pero si hoy existen cientos de dispositivos que tienen casi todo lo que uno podría necesitar y están integrados, probados, funcionando, con sistema operativo, pequeños y a un precio de risa!!! …. Se denominan smartphones, y tienen invadido el mercado.
¿Qué necesitas?... WiFi… lo tienen, Conexión USB… la tienen, una pantalla gráfica… la tienen, giróscopo, acelerómetro, GPS, sonido, cámara, video, sensor magnético, lector RFID, Bluetooth, Pantalla Táctil, OS, Mensajes de Texto… todo esto lo tienen y varias cosas más todo probado, funcionando y metido en una hermosa cajita de apenas unos 15x5 cmts.
Ahhh pero necesito GPIOs…. Eso no tienen y ese es su talón de Aquiles.
Que faltaría entonces para que esto sea el paraíso feliz del electrónico…. Que le pudiéramos agregar algunas entradas y salidas para interactuar con los elementos finales de nuestros proyectos.
A partir de lo anterior y pensando ilusamente que acababa de tener una epifanía, me puse a investigar cual sería la mejor forma de proveer a estos equipos de un buen conjunto de GPIOs y abajo dejo una lista de las opciones que barajé:
Método | Pros | Contras |
Destriparlo y Conectarse a I/Os de la CPU | Velocidad de I/Os | Complejidad / diferencia de patillaje entre dispositivos / poca documentación / Complejo de realizar programas |
USB | Baja Latencia / Simplicidad / Economía | Controlador con USB Host |
WiFi | Baja Latencia / Simplicidad | Costo del Módulo Wifi |
Bluetooth | Simplicidad / Economía | Alta Latencia |
Audio | Simplicidad / Economía | Comunicación Unidireccional / Latencia Media |
En toda la búsqueda realizada, terminé descubriendo que lo que intentaba hacer ya estaba hecho y analizado por varios otros entusiastas de la electrónica.
Una de los proyectos que descubrí se llama IOIO (se pronuncia como Yoyo) y curiosamente está basado en un microcontrolador de Microchip, el PIC24FJ256. Su página web es:
https://github.com/ytai/ioio/wiki Aporta a un sistema basado en android las siguiente capacidades de entrada/salida:
• 46 GPIO pins (digital input / output). Internal pull-ups / pull-downs / open drain mode are supported on all pins. 21 of which are 5V-tolerant.
• 16 analog inputs (use on designated pins).
• 9 PWM outputs (use on any pin marked “P”).
• 3 UART buses (use on any pin marked “P”).
• 3 I²C buses (use on designated pins).
• 3 SPI buses (use on any pin marked “P”).
• 6 pulse input channels for measuring pulse width and frequency - 3 single-precision + 3-double precision (use on any pin marked “P”).
• 16 capacitive sensing inputs (use on analog pins).
• Precision motor control - up to 9 steppers / servos / DC motors and digital outputs with precise timing, pulse counts and synchronization (coming soon with a firmware upgrade).
Otro de los aportes importantes es la posibilidad de realizar nuestros programas directamente en plataforma android, incluyendo las librerías correspondientes al compilador.
Incluye un programa para hacer actualizaciones de firmware a la placa IOIO desde nuestro dispositivo android y es Open Source.
Varios fabricantes, como Sparkfun y SeeedStudio lo fabrican y venden la placa. Por el momento la encuentro muy cara, pero si esto se esparce como lo que sucedió con arduino, varios fabricantes chinos harán que su precio baje a valores irrisorios, de hecho ya es fácil encontrarla en páginas como AliExpress, Deal Extreme o DhGate a mejores precios.
El punto flaco es que obviamente no podremos utilizar un conjunto como el descrito para manejar entradas y salidas a alta velocidad o tasa de refresco, pero creo que para la mayoría de los desarrollos es viable.
Que puedo decirles… mi esperanza de la idea genial y maravillosa se me fue por el desagüe, pero me alegra mucho esta vuelta de tuerca a la electrónica y aunque en un par de intercambio de ideas con compañeros del foro varios lo ven como más cercano a la informática que a la electrónica, yo creo que es la senda natural a la que va ir migrando todo esto.
Basta utilizar el oráculo que todo lo sabe (léase google) para encontrar cientos de ingeniosos artilugios e interesantes desarrollos hechos con un dispositivo android y una plaquita IOIO.
Si alguien analiza el tema, quizá para un electrónico de hace treinta años, que usaba compuertas lógicas para hacer sus circuitos, el uso de un microcontrolador que puede programarse y cumplir objetivos distintos era más programación que electrónica. Hoy estamos pensando lo mismo, que esto es más informática que electrónica, pero no me extrañaría que en unos cuantos años, eso ya no sea tema y todos estemos haciendo electrónica con algún dispositivo que tiene un sistema operativo e integra un montón de sensores y módulos embebidos, basado en android o cualquier otro OS que nos depare el destino….