viernes, 29 de agosto de 2014

RaspberryPi or not RaspberryPi he ahí el dilema

"Eligiendo entre el RaspberryPi y el BeagleBoneBlack"

Inicialmente mi intención era colocarle un nombre a este artículo un poco mas tradicional, tal vez RaspberryPi vs BeagleBoneBlack pero ya hay muchos por internet con este nombre.

El RaspberryPi lo podríamos definir en una sola frase como "Realmente es lo máximo" pero como decía el Oráculo de la Matrix realmente el problema es saber elegir.

Inicialmente la primera pregunta que uno se debe hacer es

1- ¿Para que voy a utilizar un Linux embebido?

En ocasiones uno por querer ir con la moda elegimos una arquitectura no adecuada, es como si quisiéramos una bazuca para matar una mosca. Hay que seguir la regla de oro al momento de diseñar una solución; maximizar la simplicidad sin sacrificar la seguridad, que tenga un bajo consumo energético y que sea estable y económico en términos de costo.

2- ¿No será que con un simple Arduino puedo darle la solución a mi problema?

Tal vez, incluso a veces ni siquiera es necesario utilizar un microcontrolador, en ocasiones un sencillo circuito analógico puede ser la solución a algunos de los problemas; por ejemplo, en mi casa utilizo cámaras ip, lógicamente una cámara de estas debe estar basada en un sistema embebido posiblemente un linux o quizas un freebsd, el punto es que en una ocasión la cámara dejo de funcionar porque se colgó su sistema operativo, sin embargo me llamo la atención que al momento de la transición de la luz a la oscuridad o viceversa se activaba el filtro de luz, un pequeño lente oscuro que se mueve con un relé; uno puede deducir que la decisión de colocar éste lente no la toma el sistema operativo de la cámara sino que con un pequeño circuito que se alimenta con una sensor de luz puede poner o quitar el lente polarizado.

3- Cual de tantos linux embebidos es el que voy a usar?

Ésto es lo más difícil, hay demasiadas opciones, tendríamos que redefinir la pregunta a ¿Cuál de tantos linux embebidos que ya he trabajado y que son relativamente fáciles de conseguir es el que voy a utilizar?; y si estamos en Venezuela eso de fáciles de conseguir complica un poco el asunto.

Bueno ahora si vamos al grano, en esta ocasión analizaremos al RaspberryPi y el BeagleBoneBlack con un enfoque no tradicional.

* Lo primero que salta a la vista entre estos dos sistemas es que el BeagleBoneBlack tiene muchísimas más GPIO que RaspberryPi, 65 el BBB vs 8 el RaspberryPi. Sin embargo existe en el mercado una tarjeta que expande el número de pines del RaspberryPi, lo hace a traves del I2C.

* El BBB no requiere de una microsd para trabajar, posee 4Gb de memoria flash para almacenar el sistema operativo, si se va utilizar el RaspberryPi es recomendable que la microsd sea mínimo de clase 4, bueno eso depende de lo que se vaya a hacer, si vamos a trabajar con video una clase 10 no nos caería nada mal.

* El RaspberryPi tiene 2 USB y dígame si hablamos del RaspberryPi B+ que tiene 4 vs Un simple host del BBB, hay que resaltar que BBB posee un USB cliente y el Raspberry no lo posee.

* Set de instrucciones: El BBB es un sistema embebido basado en ARMv7 el RaspberryPi está basado en ARMv6 el cual ya esta siendo poco usado en el mundo de los dispositivos embebidos adicionalmente si agregamos el hecho de que el BBB trabaja a 1Ghz de forma nativa y RaspberryPi a 700Mhz sin hacer overclock, hace que el BBB se lleve al raspberryPi por los cachos en lo que a poder de cómputo se refiere.

* Capacidades gráficas: Ahí gana el RaspberryPi, este pequeñin se jacta de tener un poderoso procesador gráfico que le permite decodificar video streaming a 1080p sin mayor dificultad en tiempo real.

* Salidad de Audio: sencillamente el BBB sólo puede sacar audio por el HDMI mientras que el RaspberryPi tiene un plug dedicado, claro está, lo malo es que si se va a utilizar este conector no se debe utilizar el generador de pulso modulado ya que tiene solo 1 y lo comparte con el puerto de expansión.

* Comunicación: El BBB se luce con esto, posee nada mas y nada menos que 5 puertos seriales por hardware vs 1 solo el RaspberryPi; en cuanto con el I2C el BBB posee 3 vs 1 en el RaspberryPi.

* Convertidor Analógico Digital: Ups el Raspberry no tiene, hay que apoyarse con una tarjeta de expansión que la ayude a tener ésta característica, en el caso del BBB posee 7 y lo mejor de todo es que es de 12 bits "excelente!!!".

* Consumo eléctrico: Sin duda alguna el ganador es el RaspberryPi.

En Resumen si la solución a implantar está basada en Multimedios el RaspberryPi es la mejor opcíon, en cambio si el objetivo es Robótica de álta complejidad es decir si vamos a incluir visión artificial sin duda alguna es necesario el BBB, es muy difícil poner a correr las últimas versiones de OpenCV, OpenNI en el RaspberryPi.


Y por último una pequeña fotico donde posan los dos sistemas ademas del ArduinoYUN que insistió mucho que le tomara una foto y que porque también es un Linux Embebido, no lo quize nombrar será para otra ocasión.


lunes, 25 de agosto de 2014

Cómo funcionan los sensores Biométricos de Huellas dactilares.

"Nadie se baña dos veces en el mismo Rio" 
Heráclito de Efeso (535 - 484 a.C.)


Je, je quizás pensarán algunos que he enloquecido al citar la frase de Heráclito; cuando estaba muy joven en la escuela y la escuché por primera vez esta frase me causo curiosidad, el profesor de filosofía ayudaba a que nuestras inexpertas mentes asimilaran estas frases de gran trascendencia en este caso del tema del Devenir de Heráclito. Según él solo existen sensaciones subjetivas nadie conoce la realidad tal cual es; eso me suena a la Matrix. Definitivamente estos grandes filósofos de la antigüedad estaban más claros que nosotros. Mas adelante veremos que tiene que ver Heráclito con un sensor de huellas dactilares.

Los sensores biométricos son dispositivos electrónicos que a través de sofisticados procedimientos son capaces de medir características morfológicas de una parte de un ser vivo. El más común de ellos es el lector de huellas dactilares.

Pero cómo hace una aparato de estos para saber de quien es una huella si todas se parecen?.

Bueno esto es como verle la cara a un Chino, en apariencia uno dice que todos son igualitos pero si nos fijamos atentamente todos son diferentes.

Tomarle la huella a alguien es casi igual que cuando tomamos una fotografía de la cara de una persona; ahora bien imaginemos que nos toman una foto con una cámara digital que hace ráfagas, cuando uno toma fotos de éste modo la cámara hace como una ametralladora, tacatacatacataca… si analizamos cada una de las fotos uno dice "pero si son exactamente iguales!!!", pues NOOOO todas son diferentes volvemos a lo mismo que mencioné al principio del blog "Nadie se baña dos veces en el mismo Rio", si analizamos la imagen pixel por pixel, veremos que el sensor que percibe la realidad tal como lo hace nuestra retina en cada instante de tiempo lo hace de forma diferente; bueno es casi igual pero diferente nuestro ojo no lo ve pero para las máquinas todas son diferentes y eso las confunde, una máquina no tiene como saber si alguna de ellas se parece a otra, a final de cuentas una computadora es una gran calculadora, ella va a decir que los números no cuadran.

Por esta razón a alguien se le ocurrió que mejor que estar comparando los pixeles es mejor buscar características que tienen todas las huellas de los seres humanos


fig. 1. Patrones

En la figura 1 vemos que estos son los patrones mas comunes que poseen la huellas de un ser humano

fig. 2. Ubicación de los patrones.


En la figura 2 vemos que se puede ubicar que posición se encuentran cada uno de estos patrones.

Ahora bien a partir de este momento viene lo bueno…

Al momento que se ingresa por primera vez una huella al sensor biométrico se extraen los patrones y se guardan en un formato que se le llama Template o Plantilla, ésto es lo que se almacena permanentemente en el sensor de manera que en el futuro para identificar a un usuario se verifica que corresponda con la huella Template que está almacenada en el dispositivo.

Definiremos la siguiente premisas:

1- Los sensores de huella dactilar NO almacenan las fotos de la huella del usuario, puesto que consumen mucha memoria y no sirven para comparar, solo almacena lo que se le llama Template o Plantilla si lo decimos en Español. 

2- Un Template posee poca información si lo comparamos con la foto de la huella en si. Por lo tanto a un equipo electrónico se le hará mas fácil interpretarlo, un Template básicamente posee la información de ubicación de los patrones  de la huella de un usuario, el Template en si, o sea su codificación es secreto industrial del fabricante, a partir de un Template NO se puede reproducir la huella de una persona.

3- Si nosotros usamos un sensor de Huella de un fabricante A y extraemos el Template de un usuario y lo comparamos con el Template de ese mismo usuario pero generado con un sensor de huella de un fabricante B veremos que son completamente diferentes. Cada quien interpreta la huella a su manera.

4- Los sensores de huella tienen un almacenamiento de número de Templates limitados, suelen ser de 100, 200, 10000 o 20000 templates, estos últimos con mas costosos. Si se desea manejar mas usuarios hay que utilizar una plataforma más compleja basada en redes de datos y servidores con software y bases de datos especializados.

Cualquier computista podría verse tentado en algún momento en construir un lector de huellas dactilares sin embargo esto no es nada trivial, se requiere de mucha investigación, habría que invertir muchísimo dinero para fabricar uno que sea viable en el mercado, el protocolo de prueba es muy extenso y complejo, por esta razón es que existen los módulos biométricos, para que cualquier cristiano común y corriente pueda diseñar una solución de sensores biométricos a la medida. Ya he publicado algunos artículos sobre esto, y he hecho proyecto con tres modelos distintos de sensores biométricos, por eso considero que tengo algo de solvencia moral para hablar del tema.

Es importante querido lector que el punto 1,2,3 y 4 estén claros para saber que una solución de sistemas biométricos tiene muchas limitantes.

Actualmente en Venezuela para evitar el contrabando de extracción de Alimentos hacia Colombia y el sobreprecio en general de estos rubros en la calle se desea implantar sistemas biométricos en todos los automercados y bodegas o tiendas como dicen en Colombia. 


Implantar un sistema biométrico sólo va a impedir que una persona compre varias veces un producto el mismo día o inclusive en una semana en un solo lugar, sin embargo al no ser factible que exista la búsqueda de huella en tiempo real entre todos los abastos del país ya que no es posible tenerlos interconectados (ver puntos 3 y 4) el contrabandista podrá hacer la compra en un abasto del producto de primera necesidad y luego irse a otro abasto a comprar el mismo producto y así sucesivamente a otros en la misma ciudad.

Según las últimas noticias cada negocio va a reportar el consumo por persona a una base de datos central gubernamental, analizando estas declaraciones podemos analizar que lo que se puede enviar es el número de cédula y la cantidad neta de rubros comprado de manera que se pueda monitorear si una persona está haciendo compras desproporcionadas de un producto, esperemos a ver si la gente no le da la vuelta al sistema.

Por último y para respetar los derechos de autor las imágenes de la Fig. 1 y 2 fueron sacados de una publicación que hizo mi estimado amigo Patricio Holguin en el siguiente link http://neutron.ing.ucv.ve/revista-e/No6/Olguin%20Patricio/SEN_BIOMETRICOS.html





miércoles, 20 de agosto de 2014

Ohhh!!! Imprimiendo el Cuerpo Humano

En esta publicación veremos como hice para imprimir una vertebra lumbar a partir de una Tomografia, al final veremos como quedo el modelo en una impresora 3D.

De seguro habremos visto aunque sea por CNN, Discovery o NatGeo algun programa de TV donde utilizando un Tomografo reconstruyen huesos del cuerpo humano o algún otro animal, valga la redundancia.

Para hacer esto hay que desarrollar varias destrezas en el mundo modelado 3d especialmente lo relacionado con imagenes médicas. Lo recomendable en estos casos y lo digo por experiencia es tomar un curso de imagenes biomédicas, yo hice uno en linea con la Universidad de Sidney.

Googleen un poco y encontraran mucha información al respecto, trataremos de ser breve porque el tema es muy amplio y profundo.

En el mundo de la fotografia todos sabemos lo que es un pixel, lo primero que nos viene a la cabeza es photoshop y los megapixeles de una camara fotográfica; en el mundo 3d el pixel tiene profundidad y se llama Voxel, entre más pequeño sea el voxel mayor sera la definición de un volumen en 3d, vemos el siguiente ejemplo.

fig. 1. Voxels

El volumen A01 tiene una definición de voxel muy grande no podemos distinguir exáctamente que es, a medida que avanzamos y llegamos al modelo A04 los voxels soy muy pequeños y podemos apreciar perfectamente de que se trata de unos de los mejores vehículos el legendario Volkswagen escarabajo.

Cuando se uno se hace una tomografia el operador establece el número de cortes que tendrá el volumen, entre más cortes tenga la imagen el tamaño del voxel será mas pequeño por consiguiente podremos generar una buena impresion 3d.

Ahora bien definamos algunos otros conceptos; una cosa es una imagen de photoshop y otra un dibujo vectorizado hecho con Corel Draw, cuando uno hace un Acercamiento o Zoom en Photoshop la imágen se pixela, el cambio cuando uno hace Zoom a un dibujo vectorizado no ocurre esto ya que son coordenadas no pixeles.

Esta analogía se aplica para imprimir partes de una tomografía en una impresora 3d ya que el Tomógrafo solo nos entrega pixeles en formato de imagenes medicas conocida como DICOM, y sí solo cortes en dos dimensiones, hay que utilizar algun software que dados los cortes 2d se generen voxels 3D del volumen a estudiar; he usado varios pero el que me parece mas completo es el 3dSlicer.

 fig. 2. Volumen a partir de cortes 2d


Una vez que tenemos los voxels debemos "vectorizar" bueno asi se diría en 2d pero en el mundo 3d se llamaria algo asi como crear el modelo 3d, esto es en realidad lo más complicado.

Primeramente a cada corte 2d hay que aplicar la técnica de segmentación o lo que sería agruparlo por características similares utilizando algoritmos o técnicas que nos permitan separar el área de interes del resto de los pixeles del corte, este proceso se hace manual no es automático requiere de analisis y la aplicación de filtros especializados.

fig. 3. Corte de Vertebra en 2d


En la fig 3 podemos apreciar un corte de la vertebra, a uno le correponde con el software que hace la segmentacion indicarle cual es la parte que nos intersa, en este caso es el borde de la vertebra. Una vez terminado el proceso por cada corte se debe generar le modelo en VTK, este es el formato estándar en el mundo medico para los modelos 3d

 fig. 4. Modelo en formato VTK

Luego hay que convertirlo en formato STL (Stereo Lithography) para que el software de la impresora 3d lo entienda y pueda generar el formato de control numérico CNC estándar el gcode.

Es muy importante el archivo STL tenga la menor cantidad de caras y no contenga errores como caras ocultas, invertidas, vertices repetidos, porque si no el software que convierte a gcode sencillamente no va a funcionar.

La vertebra que imprimí es la Lumbar 3 el archivo gcode quedó de un tamaño de 4MB



Y por ultimo la impresión en ABS de color blanco.






viernes, 8 de agosto de 2014

Resucitando bombillos ahorradores

"Lazaro levántate y anda"


Eso fue lo que me provoco decir al ver como se pudo resucitar un bombillo fluorescente, pero más allá de la broma y para la reflexión definitivamente los chinos son una m......

Uno en este país puede darse cuenta que estos artículos no cumplen con el cuento ese de que duran 8000 horas.

Tomé un bombillo que se encuentra en buen estado y me puse a medir resistencia por resistencia a ver si es verdad que miden lo que dicen; para mi sorpresa las resistencias que por cierto son smd son de la peor calidad que uno se pueda imaginar, por ejemplo una de ellas dice en letra blanca 4703 como es de tipo smd no posee colores y su valor debería ser de 470kiloohmios, cuando la mides con el multímetro marca 180k, y así las demás con unos márgenes de error muy exagerados, el circuito está lejos de sus parámetros de diseño, por eso es que se queman rápido.



El bombillo ahorrador de la foto anterior estaba quemado tenia los 2 transistores averiados y 3 resistencias calcinadas, simplemente lo que hice fué cambiar estos componentes y volvió a la vida
por cierto coloqué resistencias Through-hole y quedo así:



Hay otro tipo de falla común en este tipo de bombillos y es cuando se quema uno de los 2 filamentos, lo que uno debe hacer en estos casos es ponerlos en corto y listo funciona.

El bombillo en cuestión es el proporcionado por Corpoelec (Empresa eléctrica estatal de Venezuela). Los primeros 30 millones provienen de China gracias al convenio con nuestro camarada Xi Jinping.

miércoles, 6 de agosto de 2014

Técnica de pulido para impresiones 3d para ABS y probablemente PLA

Dije probablemente PLA porque no tengo este material;  he escuchado que como viene del maíz mientras se está impriendo huele a Cotufa(Venezuela) Crispeta(Colombia) Palomitas de Maiz(Mexico).

Bueno la técnica que apliqué fue de mi propia inspiración no la he leído pero seguramente a alguien se le pudo haber ocurrido.

Una vez terminado el trabajo de impresión 3D utilicé Acero Plástico, también sirve macilla (No se como se le llama a esto en otros países), luego de secar o sea unas cuantas horas, utilicé una lija gruesa, al principio lo hice a mano pero de verdad ésto es muy cansón; asi que me acordé que tenia una lijadora profesional y el trabajo realmente fue un paseo, quedó muy bien terminado a pesar de que sólo coloqué 1 capa de macilla plástica, posteriormente lavé la pieza y la pinte con spray negro mate.

He aqui los resultados... :)



la carcasa contiene:

1 Pantalla LCD Touch
1 Arduino UNO
1 Shield microSD
1 Convertidor TTL a RS232

El programa que está cargado en el Arduino es un Generador de datos WITS, es decir, este aparatico simula una Cabina de Mudlogging de un Taladro Petrolero hecho con unos poquitos dolares y mucha imaginación.

lunes, 4 de agosto de 2014

Case para Arduino + LCD táctil impreso en 3D con filamento ABS

El tema de la impresión 3d es algo que nos apasiona a muchos, he visto muchos artículos sobre los pro y contras de ésta tecnología, antes de entrar en el tema del fulano Case quería expresar mi opinión sobre ésta tecnología en un par de puntos.

- Software de diseño 3d:

Antes de pensar en comprar una impresora 3d ocúpece primero en aprender a diseñar en 3d, desde hace algún tiempo he estado usando el SketchUp de Google, nunca había visto algo tan fácil de usar, vale la pena ver los video tutoriales para entrar en calor.

- Tecnología de impresion:

Hay un dicho en mi tierra que dice "papel aguanta todo"; bueno algo así ocurre con la impresión 3d solo que tendríamos que cambiar un poco el refrán por "Diseño en 3d aguanta todo".  No todo es imprimible, esto se aprende mas que todo con la experiencia, un concejo hagan sus diseños, imprimanlo, estén dispuestos a perder mucho material para que vean que hay que tomar en cuenta las propiedades mecánicas de la extrusión, temperatura, orientacion del diseño en la plataforma, parametros de densidad y demas bla bla bla que se aprende llevando golpes.

Ahora si a lo que vamos el Case.

Desde hace algún tiempo quería hacer un hardware genérico multipropósito que tuviera su propio Display y con bastante capacidad de memoria, lo que se me ocurrió fue sumar varios artefactos:

1 arduino + 1 shield microsd + 1 transceiver RS232 + 1 LCD TouchScreen

Con estos 4 artefactos trabajando de forma armoniosa podemos tener un punto de inicio para hacer cualquier aparato, ejemplo que tal si queremos un control de acceso? simplemente le adicionamos un lector RFID, o si queremos que sea con la huella, agregamos un módulo sensor de huella, en fin lo que nos dicte la imaginación.

Lo único que le faltaba para se perfecto era un case respetable, ya que en el mercado no hay nada disponible que nos sirviera nos toco hacer un diseño y generarlo en una impresora 3d.




Éste modelito tiene la pantalla levemente inclinada 30 grados y suficiente espacio para meter muchas cosas en su interior, en nuestro caso nuestro muy apreciado Arduino UNO.


Vemos como quedó, lo único malo es que tardó 4 horas en imprimirse.



Solo falta pulirlo un poco para darle el acabado final.