miércoles, 24 de diciembre de 2014

Los primeros pasos con el Intel Edison

Ahora bien, vamos a hablar un poco de más del intel Edison...


Primeramente es conveniente que se diga como se ve en IntelEdison con respecto a las otras tarjetas Linux abiertas del mercado que hemos probado.


1. La GPU está desactivada... por ahora... aparentemente en un futuro será desbloqueda asi que de seguro algún día podremos ver un breakout con salida hdmi.


2. El S.O. esta en memoria flash. Al contrario del RaspberryPi que se inicia en la memoria sd. Ésto no es ni malo ni bueno, depende del punto de vista que uno tenga con respecto de cómo debe ser iniciar un sistema SoC con Linux. Si lo que queremos es ahorrar espacio ésta es la mejor opción.


3. Posee un USB cliente y un USB host. Genial!!!. Se puede entonces usar una cámara usb; ya que al menos en éstos momentos no hay en el mercado una (como en el caso del RaspberryPi) que se pueda conectar en un puerto dedicado.


4. Consume en promedio 200mA, excelente nivel de consumo ideal para aplicaciones alto nivel de cómputo y bajo consumo energético. 

5. Posee Wifi integrado como el caso del ArduinoYun, solo que el del Edison es mejor y tambien tiene el Bluetooth 4 LE.

6. El linux por defecto es un Yocto aunque los chicos de Sparkfun sacaron una distribución basada en Debian, lo que facilita el manejo de paquetes para el Edison.


El Intel Edison hay que conectarlo en algun breakout que posea el conector de 70pines de su factor de forma. Intel provee de dos tipos de Breakout, el que tiene los pines hembra del Arduino y el edisonminibreakout; hay que acotar que hay otros hechos por terceros pero en este blog sólo trataremos los de intel.


fig 1.  EdisonArduinoBreakout



fig 2. EdisonMiniBreakout


El EdisonArduinoBreakout es algo parecido a la filosofia del ArduinoYun, digo "algo parecido" porque no hay un leonardo trabajando en paralelo con el Edison, como lo podran observar en la fig 3.


fig 3. Esquematico del EdisonArduinoBreakout

El Edison se encarga de todo, y por supuesto la tarjeta posee el factor de forma del Arduino.

En otra Instancia el EdisonMiniBreakout es mucho mas pequeño y se olvida de que el Arduino Existe, el plano esquematico se puede ver en la figura 4.


fig 4. EdisonMiniBreakout


Como pueden ver solo es posible energizarlo con una bateria LiPo, por el USB-OTG o por el conector VIN que permite entre 7 y 15 voltios, en todos los casos hay que tener mucho cuidado con la polaridad sino freiras el equipo.

Cuando uno va a trabajar por primera vez con el EdisonMiniBreakout debe tenerse claro que es lo que uno va a hacer con el equipo, si por ejemplo nosotros queremos usar un cable USB-OTG para colocar un pendrive es mandatorio energizarlo por el pin VIN.

Conectando el Edison:

Veamos primero el esquemático de jumpers que proporciona Intel.



J3: USB Cliente
J16: USB Host
J2: Bateria
J21: VIN 


La prueba se realizó conectando por el J21 9 voltios de una fuente de laboratorio.



Luego se conecto el Cable USB en el J3 con la Computadora, si estan usando Linux o MAC deben buscar primero como se llama el puerto TTY.

$ ls /dev/tty* | grep usbserial

a mi me dio como respuesta

/dev/tty.usbserial-A402F2N1

posteriormente lo conecto con el comando screen de la siguiente manera:

screen /dev/tty.usbserial-A402F2N1 115200 -L

El booteo, tomó alrededor de 24 segundos.


Saludos y feliz navidad. Que el niño jesus les regales a todos un Intel Edison.

lunes, 22 de diciembre de 2014

Libreria GT511C1 y GT511C3 Actualizado

Amigos lectores acabo de publicar una actualizacion de la libreria para el GT511C1, ahora funciona en NetduinoPlus, por fin escribo algo para microframework.

Por otra parte empezé a desarrollar la correspondiente libreria para el GT511C3 solo que por los momentos está escrito para Windows y Microframework.


jueves, 2 de octubre de 2014

Intel Edison. What will you make?

Por fin llega el esperado Intel Edison el linux embebido no militar más pequeño del mundo.

Desde que lo mostraron en las Vegas en enero había mucha gente en lista de espera para adquirirlo, y créanme volaron rápido ya no hay.

Lo que más me gusta de esta miniatura es que incluye 
- Conexión inalámbrica a/b/g/n
- Bluetooth 4.0, (este bluetooth si que es ahorrativo refiriéndonos al consumo energético). 
- Es ¡¡¡DualCore!!! 
- Tiene ¡¡¡1Giga  de RAM!!! 

Hay que acotar que por razones obvias el voltaje de funcionamiento es muy bajo 1.8v y no es tolerante a 3v3 esto para que consuma muy poca energía.




Es casi del tamaño de una memoria SD, estoy ansioso de hacer un robot basado en este cerebrito, que tal será el rendimiento de la visión artificial?.


miércoles, 17 de septiembre de 2014

Impresión 3d en Odontologia

Siguiendo el tema con las impresoras 3d y su amplio espectro de usos mostramos en esta entrada un análisis interesante de un paciente odontológico que posee un diente que no ha salido, es decir aún sigue oculto en la dentadura, me disculpan pero este no es un blog de medicina ni odontología; como dicen en mi tierra tiene el diente esta "emperipollao".

Seguimos el mismo esquema que hicimos para imprimir la vértebra lumbar que mostramos tiempo atrás,

1. Usamos el CD que contienes las imágenes tomográficas.

2. Construimos el Volumen.

3. Segmentamos las imágenes.

4. Creamos el Modelo

5. Exportamos a STL

6. Imprimimos en plastico.


A continuación mostraremos el Volumen construido a partir de las imágenes DICOM del tomógrafo




Como pueden observar la raíz de diente casi se puede tocar metiendo el dedo en la nariz, el ortodoncista tiene que buscar la manera de separar los dientes para darle cabida a la pieza que esta enterrada, lo importante de todo esto es que en los modelos 3D uno puede hacer mediciones de un órgano, rotarlo en la pantalla sin abrir al paciente.

También es posible una vez tenemos el volumen generar una panorámica virtual y radiografías de planos oblícuos tal como vemos en la siguiente imágen.



Como pueden observar el diente mide aproximadamente 20,9 milímetros a continuación veremos el diente impreso y mide exactamente lo mismo



Con el diente en la mano se puede presentar en la dentadura y ver como va a quedar.

jueves, 4 de septiembre de 2014

La impresión 3D en la cocina

Ya me dio hambre... nada mas de ver todo lo que se puede hacer con las impresora 3d en la cocina, googleando un poco he podido ver diversas técnicas aplicables en el arte culinario.

El uso inicial que se le dió a esta tecnología fue el de derretir una mezcla dulce tal vez con algo de chocolate sobre la bandeja de impresión para hacer figuras geométricas; hoy en día se pueden ver que se han hecho maravillas, verdaderas obras de arte; en este blog no mostraremos específicamente este uso sino de la construcción de moldes para complacer los caprichos del comensal.

A unas amigas les salió un contrato donde se les pedía hacer una galleta para un quinceaños en forma del premio del Oscar con un tamaño específico; obviamente es practicamente imposible encontrar un molde que cubra sus necesidades, hacerlo a mano es demasiado complicado si queremos la perfección; es por esto que la impresora 3D nos puede solucionar esto haciendo un molde a la medida.

Así quedo el molde, pesó 25 gramos; fué diseñado en 3D en Autocad Inventor por nuestro amigo German Castaño y luego exportado a formato STL para que pueda ser impreso.


el video de la impresión en 3d



y por último la galleta lista para comer.


buen provecho.

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.

miércoles, 25 de junio de 2014

Crosscompilando y Crossdepurando programas en Raspberry

Ok esta bien se lo que estan pensando, no se dice asi....

Crosscompiling ----> Compilacion cruzada

Segun el google sabelotodo un compilador cruzado es un programa capaz de generar un codigo ejecutable de una plataforma distinta a la que se ejecuta.

En este caso nos interesa tratar el tema de Raspberry e ir un poco mas alla y hacer depuración remota, es decir desde mi computadora con MaxOSX, Linux o Windows puedo ejecutar un programa en un raspberry que por cierto puede estar ubicado al otro lado del planeta y por si fuera poco desde la IDE de desarrollo colocar breakpoints evaluar variables y seguir ejecutándolo como si nada.

Ahora veremos cómo hacemos todo esto en unos sencillos pasos.

1- Para hacernos la vida un poco más fácil googleamos algo así:
Cross-compile toolchain for raspberry <coloque aqui el nombre de su sistema operativo>

esto les llevara a algún link donde algun tío se tomo la molestia de generar un compilador cruzado y de querer compartirlo con la comunidad. Por lo general viene comprimido en tar.bz2 o algo parecido; deben descomprimirlo si usan MaxOSX o linux es recomendable por razones estéticas colocarlo en la carpeta /opt

Lo descomprimí en la carpeta:

/opt/arm-none-linux-gnueabi/

Si logran detallar dice linux pero en mi caso ese toolchain fue compilado para MacOSX.

2- Utilicen una buena IDE, yo se que a muchos les gusta Eclipse, a veces la uso pero prefiero Codeblocks, es libre y mucho más rápida; en esta entrada voy a mostrar el uso específico para esta IDE de desarrollo; los usuarios de Eclipse deben buscar la equivalencia, realmente no es nada del otro mundo.

3- En Compiler Setting deben ubicar la carpeta Toolchain executables, en esta parte se especifica el crosscompilador ubicado en /opt/arm-none-linux-gnueabi/

los ejecutables tienen el prefijo arm-none-linux-gnueabi- y estan en la subcarpeta bin


Hasta este punto ya deberíamos poder compilar el famoso programa holamundo.c, particularmente les recomiendo usar una herramienta gráfica que les permita transportar el programa Compilado a su raspberry para no tener que hacerlo por la terminal, yo utilizo el FileZilla deben haber muchos parecidos disponibles para Linux y Windows


Observen que lo arrastré al Raspberry remoto, es muy importante que el archivo tenga permisos de ejecución, hay que ponerselo porque por defecto no lo trae.

Ahora bien si abren una consola ssh podran ejecutar su holamundo del raspberry sin mayor dificultad


Pero que pasa si queremos colocar breakpoints para buscar solucionar algún problema difícil de detectar.

3- Uso del Depurador Remoto.

Ésta parte es un poco más complicada vamos paso a paso:

- Hay que utilizar el depurador gdb, pero no el de su sistema operativo sino el gdb crosscompilado para raspberryPi que se ejecuta en su sistema operativo.
Deben verificar que haya sido incluido en el tar.bz2, no siempre está presente y es indispensable para la depuración remota. Si no está mejor busquen un toolchain que si lo tenga.

el mio esta ubicado en

/opt/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-gdb

se puede usar sin IDE es decir por comando pero es incómodo utilizarlo de esta manera mejor lo usamos de forma transparente con la IDE de CodeBlocks.

Cada vez que vayan a hacer una depuración remota deben asegurarse de llamar el gdbserver desde el Raspberry, lo que van a hacer es indicarle que holamundo se va a depurar desde otro equipo, el gdbserver permite depuracion por TCP/IP y por puerto serial, en este caso usaremos TCP/IP, adicionalmente indicaremos el puerto, es importante que no haya ningun proxy que esté bloqueando este puerto ya que impediría la comunicación, para éste ejemplo usaremos el puerto 1234


*:1234 significa que aceptará a cualquier ip por el puerto 1234 que se quiera conectar, luego se quedará esperando pacientemente a que alguien se conecte.

Ahora bien desde nuestro PC vamos a indicarle a nuestro CodeBlocks ya que es por primera vez que lo hacemos dónde esta ubicado el gdb para raspberry.



las imagenes hablan por si solas. Ya esta todo listo y preconfigurado para que podamos hacer de ahora en adelante con CodeBlocks depuraciones remotas.

Simplemente lo que tenemos que hacer es colocar los breakpoints donde nos interesa y darle a Debug


ya que coloqué el breakpoint justo despues que se ejecutí i=i+1 podrán observar en la ventana de Watches que dice que i = 2.

Saludos, hasta la proxima...



domingo, 1 de junio de 2014

Raspberry como servidor DLNA

Si tienes un Raspberry como un módulo de Domótica bien vale la pena que lo configures como servidor DLNA, allí puedes almacenar Videos, Música, Fotos para que se vean en los celulares o tambien en los televisores inteligentes de la casa.

lo primero que haremos es descargar el minidlna del repositorio de raspbian

sudo apt-get install minidlna

luego editamos el archivo minidlna.conf para hacer algunos ajustes 
sudo nano /etc/minidlna.conf 
como es de costumbre en mi caso lo hago con nano, allá otros que usan vi.   >:|
media_dir=/var/lib/minidlna
media_dir=A,/var/lib/minidlna/music
media_dir=P,/var/lib/minidlna/pictures
media_dir=V,/var/lib/minidlna/videos


como verán se puede colocar media_dir las veces que sea necesario, la letra A indica carpeta de audio, la P fotos y la V videos.
Ya queda de parte del aparatejo que tengan si se ve o no un archivo, yo coloqué en pictures imagenes en varios formatos jpg,png,bmp y a pesar que los smartv que tengo son modelo 2014 de samsung solo reconoce el jpg. En el caso de "videos" reconoce perfectamente el MOV hay que probar otros formatos.
Para cambiar el nombre del servidor dlna debe descomentar a friendly_name, como soy fanático de StarTrek le puse LCARS.

friendly_name=LCARS

Cuando se conecte de cualquier televisor aparecerá LCARS como servidor dlna

Por último hay que borrar el archivo files.db que se almacena por defecto en /var/lib/minidlna allí estan los indices del contenido multimedia y reiniciar el servicio como sudo

sudo service minidlna restart

Cada modelo de televidor posee una forma distinta de buscar el contenido multimedia, eso queda de parte de ustedes...



sábado, 31 de mayo de 2014

RS232/GPIO Shield para Raspberry Pi

Si queremos saber que pasa al arrancar nuestra Raspberry probablemente la mejor opción es conectarse directamente a los pines UART, para hacerlo de la manera más elegante les recomiendo el Shield de www.linksprite.com




Ademas pone a disposición pines hembra para I2C, SPI y para el resto de las GPIO en forma de pines macho como si fueramos a conectar servo motores.

Otra de las ventajas es que realmente si hay algun problema con la ethernet o simplemente si no tenemos el cable disponible podemos trabajar con la Raspberry, la coneccion se establece por defecto con 115kbps.





domingo, 25 de mayo de 2014

Conectandose con la computadora del Carro

Bueno la historia es un poco larga, hace un tiempo pedi por Amazon un conector obdII bluetooth, para los que no estan familiarizados con el tema OBD (On Board Diagnostics) es un estándar de comunicación para vehículos, en wikipedia podrán encontrar mas información; básicamente es posible comunicarse con la computadora de los vehículos o coches de hoy dia gracias a este estándar de la industria automotriz. Como todos estos aparaticos los distribuyen de China tardó un poco mas de 3 semanas en llegar a mi buzon de Rudy Export; nunca lo vi entre las otras cosas que llegaron, luego de mas de 1 año apareció, he tratado de que me lo envien pero núnca supe que pasó.



Bueno realmente son muy economicos, decidí entonces construir un equipito basado en algun chip que se comunique con la red CAN del carro utilizando los protocolos del OBDII; hay varios de estos, está el archiconocido ELM327 tambien está el STN1110, Sparkfun vende un convertidor OBD-II UART, solo que el problema es que uno tendría que encargarse de conectar la salida TTL de esta tarjeta a la portatil, es decir "Un Cablerío", decidí entonces hacer una tarjetica que se acople al STN1110 con un stick Bluetooth, es esta manera tendría el equivalente al conector obdII de uso comercial que habia pedido por Amazon, solo que un poco mas grande.

Veamos el esquema del diseño final



La Bateria de los carros es de 12 Voltios entoces para alimentar el stick Bluetooth hay que regular el voltaje a 5V y por ultimo conectamos el bluetooth a la salida TTL de la tarjeta. A continuación las partes del prototipo



Stick Bluetooth baasado en el chip RN41

Tarjeta OBDII-UART

 
 Prototipo de tarjeta bluetooth



Ensamblado final

Antes de todo esto es importante tomar en cuenta que la tarjeta OBDII-UART viene por defecto a 9600baudios, o sea muy lenta; hay que conectarse via ttl por una terminal y configurarla a algo mas rapido yo utilize 115kbps. Los comandos fueron

STSBR 115200

y por ultimo para guardar en la memoria flas

STWBR

lo mismo hay que hacer con el stick bluetooth, que hable a la misma velocidad

tipear $$$ para entrar en modo comando antes de que se cumpla un minuto de haber sido energizado

presionar d para ver la configuracion actual.

usar el comando SU para cambiar los baudios en este caso 115200kbps

SU,11

Esto es todo, como yo lo que tengo es un MacBook Pro utilicé el software MoviPro, sin embargo existen mucho programas para hacer esto, por los momentos utilizaré este, pero creo que sería más interesante que haga un programa para Android aprovechando el bluetooth.





lunes, 19 de mayo de 2014

Case para Cámara de Raspberry

Saludos, os recomiendo este case para usar con la Raspicam



Con esto evitan el contacto con las manos y es mas facil de adaptar a sus proyectos de hardware se puede consegui en Sparkfun.

miércoles, 14 de mayo de 2014

Instalando PHP5 en Arduino Yun

Mostraremos como se instala el PHP5 en el Arduino Yun en pocos pasos.
El gestor de paquetes del Lilino se llama opkg y esta basado en linux OpenWrt.
Ahora a lo nuestro:

1- Conectarse via SSH. Si sabe la ip tambien se puede hacer de la manera tradicional.
#ssh root@arduino.local

2- Actualizar los repos.
#opkg update

3- A mi me gusta nano, (odio el vi) >:|
#opkg install nano

4- Instalar los paquetes respectivos.
#opkg install php5 php5-cgi

5- Editamos el archivo del configuracion del servidor web por defecto del lilino.
#nano /etc/config/uhttpd

6- Descomentamos la linea y guardamos
list interpreter        ".php=/usr/bin/php-cgi"

7- Reiniciamos el servidor web.
#/etc/init.d/uhttpd restart

8- Por ultimo creamos el archivo test.php en el directorio /www para probar si funciona

este es el contenido del archivo test.php
<?php phpinfo() ?>

9- Por ultimo llamamos la pagina http://arduino.local/test.php
deberia funcionar, es rápido...

Caja para Arduino Yun

Para el momento en que estoy escribiendo esta entrada no se dispone de muchas opciones de caja para el Arduino Yun, seria interesante que saquen al menos una metálica atornillable en la pared como la que existe para Arduino, esto le daría un acabado mas profesional para los proyectos finales, de momento en china fabrican esta...

Lo malo es que es se cierra a presión, no posee tornillos y deja visible los puertos I/O desde afuera, esto es lo que se llama comunmente un "Peor es nada!".