26 diciembre 2013

Los pequeños Hackers



El día de hoy mientras revisaba las noticias, me encontré con la pequeña entrada de los "jueves de ingeniería" de SparkFun Electronics. Es una lectura motivante de la cual me sentí muy identificado y pienso que es una gran lectura para padres y maestros que están buscando la forma de motivar a sus niños en el mundo del conocimiento.

Con el permiso de la gente de SparkFun Electronics, me he tomado el atrevimiento de traducirla al español para que puedan disfrutar también de esta muy bonita lectura.

Créditos originales de la versión en ingles para Mike Grushin de SparkFun Electronics quién escribió tan motivadora entrada. / Original credits for Mike Grushing from SparkFun Electronics who wrote this motivating lecture. / Link: https://www.sparkfun.com/news/1350

Enginursday: Los pequeños Hackers


Cuando yo era una pequeña cría, allá por el cretáceo tardío, podías dar por sentado que mis regalos de navidad no se iban a mantener intactos por más de un día o dos.

Me encantaban los regalos que te permitían construir cosas, como los juegos de Tinkertoys, Legos e insumos artísticos. Y hacía mi mejor esfuerzo (y probablemente fallaba miserablemente) en expresar mi agradecimiento por los regalos más “prácticos” como pantalones y calcetines. Mis favoritos eran los juguetes electrónicos - naves espaciales, tanques y robots; cosas que caminaran por ahí, encendieran luces e hicieran ruido. Me gustaba mucho jugar con ellos, pero lo que me más me gustaba era intentar aprender sus secretos.

Después de jugar con ellos por menos tiempo del que mis padres o el fabricante hubieran pensado, dejaba que el desatornillador saliera de la gaveta de cosas en la cocina, limpiaba un espacio en el piso de mi cuarto y comenzaba hacer el desarmado obligatorio. Mi código ético era no hacer daño. Quería explorar, no arruinar… así que trataba de llevar un delicado registro de todo lo que salía, de tal manera que pudiera ensamblarlo en orden inverso. Dios no permitiera cuando (o cuando no) el perro de la familia viniera corriendo hacia a mí, desordenando la cuidadosamente ordenada vista de despiece de partes y tornillos.

Desensamblar cosas que no estaban pensadas para desensamblarse es un reto divertido. Rápidamente aprendí que algunas veces los tornillos eran obvios y otras veces estaban al fondo de un profundo agujero (Ahora tengo un desatornillador Phillips especial de dos pies de largo para esas ocasiones), y otras veces parece que aparecían por ningún lado. Una pequeña protuberancia indicadora abajo de un sticker o un compartimento de baterías usualmente rebelarían el tornillo final. O tal vez un diente y sus agarraderos ocultos podrían ser separados abriéndolos gentilmente (Usualmente dejando desafortunadas marcas en el plástico, un fallo personal. Esto mucho antes de aprender acerca de las palancas plásticas y otras herramientas especializadas para esas tareas).

Cuando un juguete finalmente era abierto, un mundo escondido de soportes y tabletas electrónicas baratas se revelarían, miraba los mecanismos, encontrando cosas ingeniosas de las cuales yo no conocía sus nombres aún, como los potenciómetros y tornillos sin fín. Una vez había visto todo y tenía mis momentos "aha!", hacía mi mejor intento para colocar todo de vuelta en su lugar. Era más difícil para juguetes armados con mecanismos y resortes que "explotaban" al desensamblarse, y alguna veces me tomaba algunos intentos cuando las cosas no funcionaban tan bien (Un telescopio por el cual no se miraba bien al re ensamblarse, me enseñó acerca de la direccionalidad de algunos lentes y como los árboles binarios pueden crecer rápidamente). Pero en general, lograba armar las cosas nuevamente de manera satisfactoria y podía seguir jugando con ese juguete con un profundo y satisfactorio conocimiento de los secretos que yacían dentro.

Me imagino que muchos de los que están leyendo esto hicieron lo mismo. O tal vez sus hijos están haciendo esto  y te estás preguntando ¿Qué significa y que hacer acerca de ello?. (Spoiler: Han venido al lugar indicado).


Al inicio mi único objetivo al desarmar mis juguetes era averiguar que había dentro. El impulso para explorar lo desconocido, encontrar que hay adentro de la caja cerrada, fuera de las paredes o que es lo que hay al otro lado de un cable de red es profundamente humano y el corazón del hacking (en el buen sentido).

Todo lo que desarmes y del cual aprendas sus secretos es el código fuente de ejemplo de tus futuras creaciones. Hay un montón de descubrimientos y lecciones para aprender acerca de la ingeniería y el diseño que se pueden adquirir solo con mirar el interior de los juguetes o casi cualquier producto comercial. (Muchas de las lecciones incluyen diseño para manufactura, que es típicamente de una vía. Si quieres aprender acerca de diseño para el mantenimiento, deberías desarmar algún equipo viejo de pruebas de HP o Tek. Son cosas preciosas.)

En poco tiempo, las lecciones que aprendí cuando desarmaba cosas y las armaba de vuelta se volvieron útiles para cuando estas fallaban. A veces el fallo estaba oculto en una tableta impresa; otras veces no podía hacer nada en el momento (pero esperaba aprenderlo algún día). Algunas veces la causa era obvia, un soporte roto que podía ser pegado, un resorte que se había salido de su soporte o un cable que obviamente se había desconectado. Ser capaz de arreglar un juguete arruinado era algo impresionante entre las personas que me rodeaban y esto fue notado por el ojo de mis padres.

Además de algunas reglas básicas de sentido común como "no desarmes cosas que no te pertenescan" (Hubo un desafortunado incidente que involucró el equipo de sonido de la sala), mi mamá y papa fueron sorprendentemente motivantes en lo que probablemente era un comportamiento inusual para un niño (mis padres eran músicos, no ingenieros). Mi papá comenzó a darme cosas como una caja de cigarrillos llena de partes viejas de reloj (su padre era un relojero). Mi mamá expandió el juego de un solo desatornillador a una pequeña caja de herramientas. Pero una de las cosas que abrió más mi mente fue la librera de mis padres, particularmente la Enciclopedia del Mundo. Antes del Internet (¡Salgan de mi jardín!), podías buscar un resumen decente de los logros de la humanidad en cerca de tres pies de espacio de la librera. Ahí aprendí porqué el telescopio funcionaba (Y también la historia de su invención), que el curioso mecanismo que encontré se llama un tornillo sin fin (Y era uno de muchos otros mecanismos ingeniosos), y que eran lo que estaba adentro de las cosas que abría pero no sabía que eran, como las baterías (Pro tip: hagan esto afuera de casa). Y en lo que los libros todavía son una maravilla es en la tarea de buscar - podrías no descubrir un artículo acerca de "ariete de baterías" a menos que primero hayas buscado "baterías". (El internet sin embargo, es mejor para encontrar fotos divertidas de gatitos)

Eventualmente me gradué de arreglar lo que se podía arreglar, a re-utilizar, modificar y deshacer (canibalizar). Un radio que adolecía de no tener salida para audífonos podía ser ayudado. Un VCR roto (¡Te dije que salieras de mi jardín!) en un cesto de basura podía caminar desde la escuela de regreso a mi casa y convertirse en una pila de motores y pantallas. No sabía aún cómo utilizar muchas de esas cosas, pero cada parte era la puerta de entrada a nuevo conocimiento y posibilidades. Esos primeros días con un desatornillador y un juguete en el piso de mi cuarto comenzaron con un largo, divertido viaje que me ha traído hasta acá.

Muchos de nosotros en SparkFun, incluyendo Nate, crecimos haciendo esto, y aún desmantelamos cosas cuando tenemos la mínima oportunidad (el término utilizado para ello de moda es "teardown"). Es una experiencia gratificante y educacional como siempre lo fue. Nick Poole hace poco me trajo una caja de algunas piezas de un viejo juego de pinball para mostrarme lo ingeniosa que era. La parte divertida era que toda la lógica electromecánica estaba ahí, visible, y fácilmente podías identificar como los bumpers activaban los solenoides que incrementaban los contadores de puntajes, etc. Es bueno recordar que hay muchas más formas de resolver a un problema que simplemente utilizando transistores y mientras más abiertamente pienses en soluciones, más problemas serás capaces de resolver.

Gracias papá y mamá, padres y maestros de todas partes por motivar este tipo de curiosidad, incluso cuando a veces parece más del lado destructivo. El apoyo, las herramientas y el acceso al conocimiento llevará a un niño a donde sea y cada día estoy agradecido de que me fueron dadas todas esas cosas. Si tú tienes un niño de corta edad, piensa en tomar un desatornillador y un juguete viejo y descubrir juntos que hay adentro.


¡Todos aquí en SparkFun esperamos que hayas obtenido lo que deseaste para estas fiestas y les deseamos que tengan todos un feliz año nuevo!



Si piensas que esta traducción podría ser mejorada, puedes agregar los cambios a el texto en la siguiente dirección: https://docs.google.com/document/d/1zUq3qTgwhUDCo7IW7rv9hTg_RY87WjfEC5t755SPF1s/edit?usp=sharing


11 diciembre 2013

Conectando el lector NFC RC522 (MF-522AN) en Arduino

Primero que nada disculpas a todos por no haber escrito estos últimos días, han sido días muy pesados en el trabajo.

La próxima semana tendré algunos días libres y aprovecharé para publicar varias entradas que me han quedado en borrador que pienso les parecerán muy interesantes.

Primero, hablemos un poco de Fritzing


Fritzing es una herramienta muy sencilla, fácil de usar, en donde pueden elaborar "sketchs" de sus proyectos electrónicos. Pero más que una herramienta para hacer proyectos es una interfaz rápida de publicación en línea para proyectos Open-Hardware.

Si tienes una idea de un pequeño proyecto, puedes armarla en Fritzing y publicarla directamente en línea. Una de las cosas que me gusta de este software es que pasas del Sketch al circuito a la PCB e incluso puedes ordenar la manufactura de tus PCB en línea así que la recomiendo mucho.

Podrás encontrar el vínculo de descarga al final de esta entrada.

Hablando un poco más sobre el lector NFC



Hace unos días publiqué una entrada sobre como hacer funcionar el lector NFC RC522 con la Raspberry Pi. Este módulo funciona a 3.3V así que se puede conectar directamente a la Raspberry Pi sin mayor problema.

Sin embargo, cuando uno busca información sobre este módulo en Internet el primer ejemplo con que se encuentra es un ejemplo de uso en Arduino donde conectan dicho módulo directamente al Arduino y funciona sin mayor problema.

El problema es que al revisar la hoja técnica nos encontramos con algunos parámetros importantes que hay que tomar en consideración.

Voltaje de alimentación límite


Según el fabricante, el voltaje de alimentación digital (Vdd) soporta desde -0.5 hasta +4.0V y el voltaje de trabajo de las entradas digitales soporta hasta Vdd +/- 0.5V, esto significa que alimentando el módulo con 4V podemos colocar entre 3.5V y 4.5V en un pin digital y en teoría el módulo debería de soportarlo.

El problema es que el Arduino trabaja con 5V, conectado a USB he obtenido lecturas de cerca de 4.6V y 4.7V y con una fuente externa de voltaje este se incrementa un poco más.

Este problema de voltajes se ve agravado cuando utilizamos la alimentación de 3.3V regulada por el Arduino, esto reduce el rango de voltaje de las entradas digitales desde 2.8 hasta 3.8V, con los voltajes de las salidas digitales de Arduino trabajando casi a 5V estamos superando el voltaje límite recomendado.

En otras palabras: Este es un buen ejemplo de algo que "se puede hacer" pero no "se debería hacer", al corto plazo puede que el módulo funcione bien y haga las lecturas normalmente pero al estar utilizando voltajes que superan los límites establecidos por el fabricante nada nos garantiza que al largo plazo el módulo se mantenga funcionando de manera estable o simplemente nos despertemos un día y nos demos cuenta que el módulo está dañado y ya no funciona más.

Pero entonces... ¿Qué hacemos?


La solución más sencilla es utilizar un convertidor de nivel lógico de voltaje, este pequeño circuito se encarga de regular los niveles de voltaje para evitar que dañemos el dispositivo.

El funcionamiento y la conexión es bastante sencillo, a un lado tenemos la alimentación de voltaje inferior (3.3V) y al otro lado una alimentación de 5V, el módulo tiene varias líneas de conexión (TX y RX) que permiten conectar entre sí módulos de diferentes voltajes.

El convertidor de nivel lógico de SparkFun tiene además la ventaja de que la línea TX es bi-direccional es decir puede utilizarse tanto para envío y recepción de señales, algo muy util en conexiones bi-direccionales como I2C.

De esta manera podemos utilizar módulos a 3.3V en nuestro Arduino sin miedo a dañarlos.

Pueden conectar el módulo NFC como muestro en el diagrama en Fritzing a continuación:


Una pequeña nota: El módulo NFC se conecta de frente, el pin de más a la izquierda es el marcado como SDA y el de más a la derecha 3.3V. Voy a tratar de hacer la parte para Fritzing luego cuando me quede más tiempo.

El código de prueba lo pueden obtener de la siguiente dirección:

http://www.grantgibson.co.uk/blog/wp-content/uploads/2012/04/ggrfid.ino_.zip

Concluyendo

Las hojas técnicas son sus amigas. Los fabricantes de componentes invierten mucho tiempo en determinar los parámetros óptimos de funcionamiento de los mismos. Leer las hojas técnicas nos puede ahorrar un montón de tiempo, dolores de cabeza y además nos garantiza que lo que sea que estemos armando no solo se comporte de manera predecible sino también dure por bastante tiempo.

Espero que esta entrada les sea util y no teniendo nada más que decir...

¡Hasta la próxima!


Más información


03 noviembre 2013

Arduino y peticiones GET HTTP con el SIM900


En esta entrada voy a tratar de explicar un tema que muchos consideran casi "magia negra" y esa es el realizar peticiones a servidores web con un módulo GSM a través de una conexión GPRS.

El objetivo de esta entrada es sencillo: Enviar datos a un servidor web a través de una petición GET utilizando únicamente los comandos AT del SIM900 y funciones de lectura de datos del puerto serial.

Para esta entrada no vamos a utilizar ningún tipo de bibliotecas extra. La dinámica que seguiremos será sencilla: Primero vamos a realizar una conexión con el módem desde la propia consola de comandos y una vez la logremos hacer funcionar de manera adecuada, vamos a desarrollar un código para Arduino que nos permita realizar esta misma acción de forma programática.

De nuevo advierto que esta entrada podría resultar un poco larga ya que explicaremos los conceptos básicos antes de entrar al detalle de la programación con Arduino. Pero de nuevo, les recomiendo que la lean completa para que tengan una mejor comprensión de como funcionan las conexiones en Internet, el protocolo HTTP y como podemos enviar datos fácilmente desde nuestro dispositivo hacia cualquier prácticamente cualquier servidor en Internet.

Un pequeño video para que se hagan una idea de lo que vamos a lograr hacer al final de esta entrada:

Habiendo dicho lo anterior... ¡Comencemos!

31 octubre 2013

Arduino y el GSM PROPOX MMsmartGSM ( SIM900 )

¡Hola a todos!

Nuevamente mil disculpas por no haber escrito nada en las últimas casi tres semanas. Actualmente en mi trabajo oficial (ese que me da de comer) estamos realizando tareas de levantamiento de encuestas en campo y eso está consumiendo mucho de mi tiempo. Tal vez un día con más de tiempo les cuento un poquito de lo que estamos trabajando y de paso les sirve de ayuda en su trabajo diario.

Ahora, regresando al tema de las últimas entradas, hace unos días conseguimos los módulos GSM PROPOX para la Tienda TeUbi.co, estos módulos me gustaron mucho ya que están basados en el muy versátil módulo GSM SIM900, este es un módulo capaz de funcionar casi en cualquier lugar del mundo donde haya cobertura de GSM y tiene algunas funciones muy prácticas en caso de que quieran conectar su proyecto electrónico a Internet.

Esta entrada me voy  dedicar a explicarles la configuración básica del mismo para que lo puedan utilizar con su Arduino y como utilizar funciones básicas como envío de SMS y realización de peticiones a servidores HTTP. En esta entrada vamos a centrarnos en el envío de SMS y la siguiente en hacer peticiones HTTP.

Advierto que esta entrada podría resultar un "poco larga" y llena de texto, pero les recomiendo la lean por completo ya que si bien el módulo es sencillo de utilizar requiere de algunas preparaciones previas que son completamente necesarias antes de que podamos utilizarlo en conjunto con nuestro Arduino.

Habiendo dicho esto... ¡Comencemos!

22 septiembre 2013

Utilizando el driver de motor DC L9110 en Arduino

¡Hola a todos otra vez!

No, ni estaba muerto ni andaba de parranda. He pasado trabajando muchísimo el último mes en un proyecto personal que está consumiendo mucho de mi tiempo. Lo bueno es que estoy aprendiendo muchísimas cosas nuevas y conociendo un montón de gente excepcional.

Por ahora los dejaré en el misterio sobre mis otros proyectos, pero quiero aprovechar esta entrada para compartirles un pequeño código en arduino para controlar el driver de motores DC L9110.

Habiendo dicho esto... ¡Comencemos!

18 agosto 2013

Controlando Arduino vía Bluetooth desde Android Pt.1

Hace casi dos semanas, les compartíamos un pequeño tutorial donde les explicaba rápidamente el funcionamiento de un puente H y su utilización en el control de la dirección de motores DC.

Si recuerdan un poco, les mencioné en ese momento que la idea era armar un carro a control remoto que pudiéramos controlar desde bluetooth a través de una aplicación en Android.

En esta entrada revisaremos la sencilla construcción del módulo controlador del carrito y les mostraré rápidamente como probar la conexión Bluetooth del Arduino en Android con un software gratuito que pueden encontrar en la PlayStore.

En los próximos días les estamos preparando un tutorial en conjunto con los amigos de AndroiSensei donde les mostraremos como programar la aplicación que se encargará de controlar el carrito en Android.


¡Comencemos!

06 agosto 2013

Control de motores DC con Arduino Nano v3

Hace unos días, alguien me preguntaba... ¿Cómo controlar proyectos que utilizan Arduino desde Android vía Bluetooth?

Algo mejor  para responder a esta pregunta, era montar un pequeño proyecto que ejemplificara el uso de Arduino para controlar algo que se moviera y que nos permitiera conectarnos remotamente desde Android vía bluetooth.

Esta entrada, a pesar de lo que puedan imaginar, no vamos  a hablar ni de Bluetooth ni de Android, sino más bien del proyecto que quiero armar: Un pequeño carro a "control remoto" vía Bluetooth.

El primer paso, obviamente, es el control del motor DC que moverá al carrito. Así que en esta brevísima entrada, les explicaré como controlar motores DC son su Arduino Nano, un par de transistores y un poco de paciencia. Al final de esta entrada podrán controlar un pequeño motor DC como el que les muestro en este video:


¡Comencemos!

27 julio 2013

Fabricando shields para Arduino con Tabletas Perforadas

¡Hola a todos!

Mis más sinceras disculpas por haberlos dejado un poco "abandonados". Hace casi un mes comencé un un pequeño proyecto personal que me ha estado quitando mucho tiempo para el blog.

La parte buena es que es relacionada al Open Hardware y a los proyectos electrónicos, así que espero que con el tiempo me sirva para generar más contenido que pueda compartir con todos en el blog.

Una de las primeras cosas que estoy trabajando es una pequeña "mesa de trabajo", donde voy a tratar de compartir tips sencillos para utilizar módulos con sus Arduinos.

Pero bueno, no los aburro más con texto y les comparto el primer video. ¡¡Espero les guste!!

17 julio 2013

Sensor de distancia HC-SR04 con Arduino

Una de las funciones más útiles en las aplicaciones de robótica es la medición de distancias. Esto puede ser utilizado para evadir obstáculos o para generar una "imagen" del entorno en el que nuestro robot se está desplazando. En esta entrada explicaremos como utilizar el sensor HC-SR04 que nos permite estimar distancias a través de un eco ultrasonido.

 Luego de la muy bonita foto anterior... ¡Comencemos!

07 julio 2013

Utilizando el módulo serie Bluetooth en Arduino

Si estás cansado de tener mil cables por doquier, es posible que en este momento estés pensando en agregar un módulo Bluetooth a tu proyecto Arduino.

En esta entrada, revisaremos el módulo de JY-MCU que podemos conectar al puerto serie de nuestro Arduino para agregar funcionalidad bluetooth de una manera sencilla y sobre todo de muy bajo costo.

01 julio 2013

Utilizando el lector NFC RC522 en la Raspberry Pi

La tecnología de Near Field Communications (NFC) se ha vuelto muy popular desde hace un par de años, al incluirse en teléfonos móviles, tarjetas de crédito e incluso pasaportes.

Hace unos días, adquirí algunos lectores NFC para intentar conectarlos a la Raspberry Pi para un par de proyectos que tengo en mente. Esta será una extremadamente-corta entrada, donde les explicaré los avances en su uso y funcionamiento y les compartiré el código que he utilizado para hacer funcionar el módulo lector.



20 junio 2013

El instalador automatizado de DrGPIO vía SSH

Una de las preguntas que varias personas me han estado haciendo últimamente es ¿Cómo funciona el instalador automatizado de WebIOPi en DRGPIO?

En esta ocasión voy a dedicarme a explicar de manera muy breve como funciona el instalador de DrGPIO utilizando algunos conceptos un poco "abstractos" pero que simplifican muchísimo la programación.

Luego de terminar esta entrada podrán hacer uso del código fuente para generar sus propios instaladores o para controlar remotamente máquinas utilizando Android.

19 junio 2013

Bug de DRGPIO arreglado / DRGPIO bug fixed


¡Hola a todos!


Disculpas por haber tardado tanto en solventar este bug, a veces me gustaría que los días tuvieran más de 24 horas jejeje

Hace algunos días me reportaban que DrGPIO no estaba funcionando con la última versión de WebIOPi y efectivamente así era. El problema radicaba en que DrGPIO consulta continuamente el estado del puerto y la última versión de WebIOPi ha modificado levemente el formato de respuesta que utiliza y obviamente esto generaba un error.

En fin, no era algo demasiado complicado pero ya está arreglado:

La versión 1.3.1 corrige los siguientes problemas:

  • Se corrige el bug de conección al intentar conectar a WebIOPi 0.6.0.
  • Se eliminó el molesto mensaje "Trying to connect".
  • Arreglado pequeño bug de visualización en los botones I2C.
  • Se eliminaron las opciones sin utilizar en la configuración.

Esta versión es compatible con las versiónes 0.5.3 y 0.6.0 de WebIOPi. El instalador automático instala la versión 0.5.3.




¡Hello everybody!


Sorry for taking too long to fix this bug, sometimes I wish the day was longer than 24 hours...

A couple of days ago some people reported having problems with DrGPIO. It wasn't working with the latest version of WebIOPi. The problem was a small change in the format of the response from WebIOPi between the versions 0.5.3 and 0.6.0.

It wasn't that complicated but it's fixed now.

Version 1.3.1 fixes the following bugs:

  • Fixes connection bug when trying to connect to WebIOPi 0.6.0
  • Removed annoying message "Trying to connect"
  • Fixed small display bug with I2C buttons
  • Removed unused options in "Settings"

25 mayo 2013

Grupo de Usuarios de Raspberry Pi en El Salvador


Hace unos días un amigo hizo en Facebook un grupo de usuarios de Raspberry Pi en El Salvador.

El grupo es abierto, así que pueden unirse sin restricciones e invitar a los amigos que quieran. La idea del grupo es compartir experiencias, conocimientos, problemas y soluciones relacionados a nuestras Raspberrys Pi.

Si son de El Salvador o en general del área de Centro América están cordialmente invitados al grupo. Si son de un poco más lejos también pueden unirse, el único inconveniente es que no los vamos a poder ver de cara a cara si planeamos algún evento o reunión.

¡Los esperamos en el grupo!

20 mayo 2013

Velocímetro Digital con Raspberry Pi y GPS Venus

En la entrada anterior les mostraba como conectar el útil (y barato) GPS venus a la Raspberry Pi. Sin embargo, quedé pendiente de mostrarles una aplicación práctica que se pudiera armar fácilmente.

Durante esta entrada les mostraré un sencillo proyecto que pueden armar con sus Raspberrys en su tiempo libre y que les servirá mucho si el velocímetro del vehículo ha dejado de funcionar por cualquier motivo.

Antes de continuar, pueden ver un pequeño video donde se demuestra su funcionamiento:

Habiendo dicho esto... ¡Comencemos!

09 mayo 2013

Conectando el GPS Venus a la Raspberry Pi

Para los que han venido leyendo mis artículos, sabrán que estoy trabajando en un data-logger/visualizador de los parámetros de los sensores eléctricos de mi carro. Una de las funciones que quiero incluir en el módulo, es la capacidad de guardar el recorrido que ha realizado el vehículo. Para agregar esta funcionalidad necesito utilizar un receptor de GPS que me permita conocer la ubicación del vehículo.

El día de hoy, les presentaré al GPS Venus, un pequeño módulo de GPS de relativamente bajo costo que puede ser conectado fácilmente a la Raspberry Pi para cualquier proyecto que estén realizando en el que necesiten información de ubicación.

07 mayo 2013

Problemas con WebIOPi and DrGPIO / Problems with WebIOPi and GPIO

¡Hola a todos!

Hace unos tres días recibí un correo reportando que DrGPIO no está funcionando para las últimas versiones de WebIOPi.

Estoy trabajando en una solución a este problema. Espero tener una solución para el final de la semana.

¡Saludos y disculpas por los inconvenientes!

Mario.

Hi everybody!

Three days ago I received an email reporting that DrGPIO is not working with the latest versions of WebIOPi.

I'm working on a fix now. I hope to have a fix for the next weekend.

Sorry for the inconveniences,

Regards,
Mario

23 abril 2013

El Convertidor Análogo-Digital en Arduino

Primero que nada disculpas a todos por haber estado desaparecido durante el último mes. Se me juntaron muchas cosas del trabajo y estuve un par de semanas completamente desconetado de Internet.

Regresando al tema, habrán visto que en algunas entradas anteriores he hecho uso del convertidor Análogo-Digital incluído en el Arduino. Pero poco o nada me he detenido a explicar su funcionamiento o como utilizarlo.

Para dar continuidad a los artículos de Arduino, en esta entrada les explicaré algunas generalidades sobre convertidores Análogos-Digital y cómo utilizarlos en el Arduino.

24 marzo 2013

Inclinometro digital con Arduino (uso de acelerómetros)


Un inclinómetro es un dispositivo que nos permite medir la inclinación en grados de una superficie. Si se han subido alguna vez a una camioneta es posible que lo hayan visto en el tablero:


En el siguiente video pueden ver rápidamente como funciona este dispositivo:



Para la entrada de ahora intentaré explicar como crear un sencillo inclinómetro utilizando un sencillo y barato acelerómetro de 3 ejes que puede ser adquirido en DealExtreme, un Arduino y un poquito de código en Python con la biblioteca PyGame. Espero les sea útil.

+Agregado:  Más información sobre los Convertidores Análogo-Digital en Arduino.

15 marzo 2013

Invitación al FLISOL 2013

¡Hola a todos!

La semana pasada no pude cumplir con la tarea de publicar un artículo. Ha sido una semana sumamente atareada en mi trabajo. Les tengo que ser muy sincero ya que dudo mucho poder publicar algo esta semana.

Sin embargo, quiero aprovechar esta entrada para invitarlos a las actividades que estará organizando el Grupo de Software Libre de la UCA, el día Sábado 27 de Abril en conmemoración del Festival Latinoamericano de Instalación de Sofware Libre.



En el evento se tendrán varias ponencias relacionadas a la aplicación/utilización del sofware libre y para los que quieran instalar su distribución linux existirán mesas de instalación. Habran varios stands por distribución para los que quieran obtener mayor información sobre ellas.

Para más información y detalles pueden visitar esta URL:


Adicionalmente estoy encargado de coordinar el "stand" de aplicaciones Embebidas y esperamos tener un par de demostraciones de uso de las Raspberrys Pi. Obviamente la mesa es abierta y si alguno quiere sugerir alguna aplicación en específico (Modems, Control Industrial, Electronicos, etc.) y quiere colaborar con la misma, pues bienvenido sea.

También, si están interesados en adquirir su Raspberry Pi, ese día les puedo ayudar con la compra en línea sin absolutamente ningún recargo.*

No habiendo más que decir... ¡Están todos invitados y espero verlos en la FLISOL 2013!

*Esto significa que solo tienen que pagarme exáctamente lo que aparesca reflejado en la factura en línea. Sin embargo, los costos de manejo de aduanas, impuestos y demás que cobre el courier son responsabilidad del comprador una vez la rPi se encuentre en El Salvador. Se entregará copia de la factura digital y esta estará a nombre del comprador. El courier (usualmente DHL) se comunicará con ustedes cuando la rPi esté en el país y realiza un recargo de entre $30-$40 por manejo del paquete.

02 marzo 2013

Connecting to WebIOPi from Android

The last time when I published DRGPIO I received a couple of requests to explain the "inner workings" of DRGPIO.

This time, I'm going to try to explain how to use a small API to connect to WebIOPi, It's very simple and is available on Github if you find it interesting or useful for your projects.

27 febrero 2013

Estableciendo conexiones SSH con Java (y Android)

Mientras programaba DRGPIO pensé que una de las funciones que deseaba incluir era un instalador automático de WebIOPi vía SSH.

¿Por qué? Pues porque si bien yo me considero un usuario de Linux un poco hardcore, de esos que prefieren tener que compilar mil paquetes a mano antes de ejecutar ese diabólico comando "apt-get", estoy muy consciente que la mayoría de usuarios de Android y la Raspberry Pi, posiblemente quieran una solución que simplemente puedan descargar y usar.

En esta pequeñísima entrada les intentaré explicar qué es y como funciona la biblioteca que utilizo para iniciar conexiones SSH en Android del instalador automatizado incluido dentro de DRGPIO.

Nota: Esta entrada asume que usted posee conocimientos básicos sobre E/S en Java.

¡Gracias estimado lector!


Estos días he pasado un poco más atareado que de costumbre así que se me ha hecho imposible publicar dos artículos a la semana como tenía planeado originalmente.

Sin embargo, revisando las estadísticas del blog, me he dado cuenta que el día de hoy este ha superado las 10,000 visitas.

Realmente esto no es demasiado considerando las métricas de Internet (además que la mitad de las visitas podrían ser bots spammers), pero cuando comencé en diciembre del año pasado a escribir artículos bastante aleatorios sobre las cosas que me toca resolver día a día, pensé que tal vez no eran de tanto interés.

Sin embargo, me alegra que lo poco que puedo compartir les sea de utilidad y espero poder seguir compartiendo más de lo poco que se con ustedes.

¡¡Debido a lo anterior solo puedo decirles que me alegra tenerlos de visita en fuenteabierta.teubi.co!!

Mario.

25 febrero 2013

Controlando el GPIO de la Raspberry PI desde Android

Como dicen que una imagen vale más que mil palabras y un video más que mil imágenes, les dejo un pequeño demo de la versión 1.3 de DRGPIO:


Nuevas características de la versión 3:
  • Instalador automático de WebIOPi vía SSH
  • Control de funciones avanzadas de salida: envío de pulsos,  envío de secuencias de bits, modulación del ancho de pulso (PWM) por "ración del ciclo de trabajo y envío de PWM con ángulo para control de servos.
Espero les sea útil y no olviden reportar cualquier bug a info_at_teubi.co.

16 febrero 2013

Controlando el puerto GPIO de su Raspberry Pi con WebIOPi y DRGPIO

Hace unos días me encontraba revisando la comunidad de Google+ para la Raspberry PI cuando alguien preguntó:  ¿Cual podría ser la mejor manera de controlar el puerto GPIO desde Android?

Otro usuario sugirió WebIOPi que es un pequeño script de python que te provee de una API RESTFUL para controlar el puerto GPIO de la Raspberry PI.

En las últimas dos semanas, he ocupado mi tiempo libre en desarrollar una pequeña herrameinta que te permita controlar el puerto GPIO de la misma manera que lo harías en la interfaz web de WebIOPi. También funciona como una sencilla referencia para las funciones de los pines cuando no está conectada a la Raspberry Pi.

Esta entrada la voy a dedicar a mostrarles como funciona DRGPIO y como lo pueden utilizar para controlar el puerto GPIO desde su dispositivo Android.

Controlling your Raspberry PI GPIO from Android using WebIOPI and DRGPIO

A couple of days ago, I was reading the Google+ Community for Raspberry PI when someone asked:  What could be the best way to control the Raspberry PI GPIO port from Android?

Another user suggested to use WebIOPi, a small python script that provides you with a small RESTFUL API to control the GPIO port on the Raspberry PI.

In the last two weeks, I have spent my spare time on developing a small tool for Android that allows you to control the GPIO port in the same way that you would do it on the web interface of WebIOPi. It also works as a handy reference for the pin functions when is not connected to the Raspberry PI.

This time, I'm going to show you how DRGPIO works and how you can use it to control your Raspberry PI GPIO Port from your Android device.

09 febrero 2013

Configurando la Mini-Pantalla LCD de la Raspberry PI

El día de ayer, les comentaba que he adquirido una mini pantalla LCD para la Raspberry PI para mi proyecto de carreras.

Ahora, con un poco más de tiempo y un poquito menos desvelado me puse a modificar la configuración para sacarle el mayor provecho.

Esta entrada será un pequeño review + algunos tips que podrán utilizar en caso de que ustedes quieran comprar una pantalla similar.

08 febrero 2013

Una Mini-Pantalla LCD para la Raspberry PI

Nota: Visita la segunda parte de esta entrada con información de como configurar la pantalla.

Para los que me conocen sabrán que me gustan mucho las carreras de carros, tanto así que desde hace cerca  de 5 años que participo en el campeonato de automovilismo en una de las categorías inferiores.

Uno de los proyectos que tengo pensado a futuro es hacer un poquito de telemetría del vehículo con la Raspberry PI, WiFi y un par de Arduinos, adicionalmente durante la carrera quisiera tener un pequeño monitor de parámetros "críticos" del motor que me permita identificar rápidamente cualquier mal funcionamiento en el vehículo durante la carrera.

Los monitores de este tipo pueden llegar a costar miles de dólares y hay que decirlo... su funcionalidad muchas veces está limitada a cosas muy sencillas. Así que me dije ¿Por qué no hacer un pequeño monitor de sensores del vehículo de "bajo coste"?

Esta es entonces, la primera entrada de varios artículos donde les compartiré el avance en el pequeño monitor que quiero armar para mi carro... 

03 febrero 2013

Asegurando el SSH en la RaspberryPI (o cualquier Linux)

Primero me quiero disculpar por no haber publicado ninguna entrada la semana anterior, me he encontrado muy ocupado trabajando en el proyecto de un amigo.

Si son curiosos les recomiendo visitar http://www.aciseaprende.com/ este es un nuevo centro de entrenamiento enfocado a la enseñanza de tecnologías web. Fué desarrollado en aproximadamente 2 semanas usando CakePHP, aún faltan algunos detalles pero el esqueleto básico está listo ya. Otro día les escribo un poquito más sobre CakePHP y el desarrollo de aplicaciones con frameworks y patrones de diseño.

El día de hoy vamos a hablar de como utilizar autenticación de pares de llaves publicas/privadas con SSH y deshabilitar la autenticación vía password. Esta entrada la escribo en base a la sugerencia que me hizo Gonzalo en la entrada del "Muro de la Vergüenza" acerca de como tengo "asegurada" mi Raspberry PI.

22 enero 2013

De romances y asiaticas - ¿Qué es Git?... y un ejemplo.

Uno de los problemas con que uno se encuentra como desarrollador, es el de llevar el control del código fuente de sus programas.

Con seguridad les ha ocurrido alguna vez, que se encuentran trabajando un código, modifican un archivo y se dan cuenta que tal vez no era lo que querían hacer. Algo que luego de un tiempo se termina convirtiendo en una experiencia muy frustrante y estresante.

A causa de lo anterior, hace ya bastante tiempo se inventaron los denominados sistemas de versionado o de control el versión, estos programas nos permiten llevar el control de los archivos de código fuente de tal manera que podamos realizar modificaciones y regresar o modificar algo que habíamos editado previamente.

Durante algún tiempo estuve utilizando Subversion, sin embargo desde hace relativamente poco me topé con git. Este es un sistema de control de fuentes. desarrollado originalmente por Linus Torvalds para administrar las fuentes del Kernel de Linux y me parece extremadamente poderoso por varias razones que les explicaré en esta entrada.

En esta ocasión voy a tratar de comentarles algunos beneficios de un sistema de versionado, como este puede servirles incluso a otros profesionales ajenos a la informática y les explicaré con un ejemplo sencillo como utilizar la funcionalidad básica de git utilizando el ejemplo de "romances y asiaticas". Solo lamento defraudarlos ya que esta tampoco es una entrada sobre mujeres.

Habiendo dicho esto... ¡¡Comencemos!!

18 enero 2013

Controlando la Raspberry PI desde Twitter

Esta entrada la escribí originalmente en inglés para la comunidad de Raspberry PI en Google+. Sin embargo se hacía necesario que escribiera la correspondiente versión en español, así que aquí les dejo para que se entretengan un rato.

La idea principal


El día de ayer, estaba intentando escribir un pequeño script en Python para llevar el registro del tráfico aquí en mi país, estaba pensado que podría ser realmente interesante si pudiera controlar la Raspberry PI usando mi estado en Twitter.

Despues de googlear por un rato, me encontré con las Herramientas para Twitter en Python, este es un pequeño script que se conecta a la API REST de Twitter y te provee de un par de herramientas para seguir las publicaciones en Twitter.

Lo que resulta más interesante es que estas herramientas incluyen una pequeña API que te permite escribir programas personalizados. Creanme, pueden crear cosas interesantes en menos de 10 líneas de código.

Así que me dije a mi mísmo... ¿Por qué no programar algo?

Controlling the Raspberry PI via Twitter

Before writing anything, I just want to warn you that English is not my native language, that means that this articles are my "best try" on trying to exercise my written English. So I would be very happy if you can correct me or suggest me a better way to write my articles.

The Main Idea


Yesterday I was trying to write a small python script to track tweets about traffic here in my country, and I was thinking that it would be really interesting to control the Raspberry PI using my twitter status.

After googling for a while, I found the "Python Twitter Tools", this is a small script that connects to the Twitter Rest API and gives you a couple of tools to publish and follow Twitter posts.

What is most interesting is that this tools includes a small API that allows you to create customs programs. And believe me, you can create interesting things in lesss than 10 lines of code.

So I told to myself... Why not program something?

13 enero 2013

Troubleshooting Android SDK install on Slackware 14 (64 bits)

Yesterday I was installing the Android SDK on my Linux Slackware 14. But when I was trying to run "adb" I was getting the following error:

No such file or directory

Slackware 14 is a pure 64 bit operating system and appears that you will need 32 bit support to run the android developer tools.

You can enable the 32 bit support installing the multilib packages, this packages are going to allow you to run and compile executable for 32 bit architectures.

To install 32 bit support on Slackware you will need to follow this steps


First, create a directory to download all the needed packages, and change to that directory:

$ mkdir multilib
$ cd multilib
~/multilib$

Then, to download the packages, we are going to use wget, this is a command line download tool that is included with Slackware.

~/multilib$ \
> wget -np -nH -r -A txz,tgz \
> http://slackware.com/~alien/multilib/14.0/

This are the options that I'm using:
  • -np prevents to download files from the parent directories.
  • -nH prevents to create a directory named "slackware.com".
  • -r follows links recursively.
  • -A txz,tgz only downloads the files ending with "txz" or "tgz".

The total download size is around 208MB.

Note: if you are using other version of Slackware just change the number "14.0" to the corresponding version.

Next, we need to change to the right directory and install the packages with the following command (as root):

~/multilib$ \
> cd \~alien/multilib/14.0/
~/multilib/~alien/multilib/14.0/$ \
> su -c "upgradepkg --reinstall --install-new *.t?z"

The last step is to install the compatibility packages:

~/multilib/~alien/multilib/14.0/$ \
> su -c "upgradepkg --reinstall --install-new *-compat32/*/*.t?z"

An that's all... Just restart your Slackware and you are going to be able to run the Android SDK tools!! 


En español


Nota: Escribí esta entrada en dos idiomas porque la mayoría de respuestas de google se refieren a las distribuciones ubuntu y/o redhat y debido a que casi nadie usa Slackware decidí que valdría la pena escribir las instrucciones también en inglés.

Solucionanod problemas de instalación de Android SDK en Slackware 14 (64 bits)


El día de ayer luego de seguir las instrucciones de Androidnauta para instalar el Android SDK en mi Slackware 14, me encontré con que las herrameintas de la plataforma daban el siguiente error:

No such file or directory

Slackware 14 es un sistema operativo de 64 bits puro y parece que se necesita soporte de 32 bits para correr las herrameintas de desarrollo de Android.

Tu puedes habilitar el soporte para 32 bits instalando las bibliotecas "multilib", estos paquetes te permitirán correr y ejecutar  programas para arquitecturas de 32 bits.

Para instalar el soporte de 32 bits en Slackware debes de seguir los siguientes pasos


Primero, crea un directorio para descargar todos los paquetes necesarios y cambiate a ese directorio:

$ mkdir multilib
$ cd multilib
~/multilib$

Luego, para descargar los paquetes, vamos a utilizar wget, esta es una herramienta para descarga de archivos en linea de comandos que se incluye con Slackware.

~/multilib$ \
> wget -np -nH -r -A txz,tgz \
> http://slackware.com/~alien/multilib/14.0/

Estas son las opciones que estoy usando:
  • -np previene que se descarguen archivos de los directorios padre.
  • -nH previene la creación del directorio "slackware.com".
  • -r sigue los vínculos de manera recursiva.
  • -A txz,tgz solo descarga archivos cuyo nombre termine con "txz" or "tgz".

El tamaño total de los archivos descargados es cerca de 208MB.

Nota: Si estás utilizando otra versión de Slackware solo cambia el número "14.0" por la versión correspondiente.

Luego, debemos de cambiarnos al directorio correcto e instalar los paquetes utilizando siguiente comando (como root):

~/multilib$ \
> cd \~alien/multilib/14.0/
~/multilib/~alien/multilib/14.0/$ \
> su -c "upgradepkg --reinstall --install-new *.t?z"

El último paso es instalar los paquetes de compatibilidad:

~/multilib/~alien/multilib/14.0/$ \
> su -c "upgradepkg --reinstall --install-new *-compat32/*/*.t?z"

Y eso es todo... ¡¡Reinicia tu Slackware y podras utilizar las herramietnas de desarrollo de Android!!


Fuente / Source :

Haciendo un respaldo de la Memoria SD de la Raspberry PI

Cuando compré la Raspberry PI realmente no tenía memorias MicroSD libres, las mas grandes las tenía o en el celular o en la cámara de video, pero por ahí tenia guardada una pequeña memoria de 2GB. Esto era en un principio suficiente para instalar raspian y poner a funcionar la RasPI.

Actualmente me veo un poco más corto de espacio y no está en mi presupuesto la compra de un enclosure para un disco duro externo, así que sacrifiqué la memoria de mi celular (8GB) como donante para la Raspberry PI.



El problema con el que me topé, es que la memoria original al parecer estaba comenzando a dar problemas de bloques malos. En Windows la herramienta de escritura de imágenes paraba con error así que tuve que realizar el respaldo desde Linux.

En esta cortísima entrada les explicaré como migrar a una memoria SD con errores de lectura a una más grande intentando recuperar sus datos.

12 enero 2013

¿Cómo hacer para adquirir una Raspberry PI en El Salvador?

Varias personas me han hecho la pregunta: ¿Cómo adquirir una Raspberry PI en El Salvador?. Esto es un proceso sumamente sencillo que no debería tomar más de 15 minutos, en esta pequeña entrada les comparto como pueden adquirir la suya y además les comparto algunas recomendaciones básicas de seguridad para realizar compras en línea.

Primero, lo único que necesitan es una tarjeta de crédito internacional y un poquito de paciencia.

Antes de seguir debo hacer una aclaración para terminar con algunos mitos: En estos días, el comprar en Internet, mientras se realice en tiendas de confianza y se sigan recomendaciones básicas de seguridad, es muchísimo más seguro que comprar físicamente con una tarjeta de crédito. Superar este mito es indispensable para que puedan adquirir su Raspberry PI en El Salvador.

10 enero 2013

Configurando el Wi-Fi USB en la Raspberry PI ( Con Realtek RTL8188CUS )

Como he comentado en entradas anteriores para disponer espacio de trabajo me he mudado "al comedor", ya que es la mesa mas grande que tengo a mi disposición en mi casa. El problema es que tanto cable dando vuelta alrededor mío ya me esta volviendo un poco "loco".



El problema se vuelve aún más grande cuando conecto la Raspberry PI ya que me conecto vía cable Ethernet. Usualmente para trabajar en la RasPI utilizo SSH así me evito el tener que usar un teclado y un ratón extra, de esta manera trabajo todo desde la laptop


Esta entrada les explicaré como he configurado mi adaptador Wireless en el Raspberry PI y de paso como eliminar algunos molestos cables de sus alrededores.

07 enero 2013

Seguro programable con Arduino y Raspberry PI (Parte II)

En la primera parte de esta entrada, hablamos de la programación del módulo Arduino para simular el seguro de una caja fuerte. En esta segunda entrada nos centraremos en el funcionamiento de la Raspberry PI y en la creación de una pequeña herramienta que nos permita realizar monitoreo remoto del módulo.

Antes de continuar les recomiendo leer las siguientes entradas (si aún no lo han hecho):


La idea es que al terminar podamos hacer uso de SQLite para ir almacenando los diferentes eventos que genera nuestro Arduino y de esta manera poder consultarlos luego haciendo uso de una pequeña aplicación web.

02 enero 2013

Seguro programable con Arduino y Raspberry PI (Parte I)

Durante el mes pasado escribí algunas entradas que explicaban como construir un pequeño "módulo de pruebas" que nos permitiría utilizar las funciones más básicas del Arduino. La idea de esta serie de artículos era prepararnos para construir un mini-Proyecto que podamos conectar a la "Raspberry" y nos permitiera controlar nuestro Arduino vía Internet.

Si no han leído las entradas anteriores les recomiendo que lo hagan ahora ya que no me detendré demasiado en explicar los detalles del funcionamiento de cada parte del módulo y me centraré en el funcionamiento del mini proyecto.


Como una imagen dice más que mil palabras y un video dice más que mil imágenes, les dejo un pequeño video del funcionamiento del mini proyecto que denominaremos "Seguro programable":


Voy a dividir esta entrada en dos partes ya que una sola podría ser muy "pesada", en la primera vamos a examinar el funcionamiento del seguro con el Arduino y en la segunda vamos a explorar como monitorear los datos desde la raspberry, almacenarlos y procesarlos para accederlos vía Internet.

Nota: Ya esta disponible la segunda parte del Seguro Programable con Arduino y Rasberry PI.

01 enero 2013

Generando archivos Auto-Extraibles en PHP para Windows (o Linux)

Para abrir el año y considerando que tuve que pasar en casa el año nuevo en casa debido a situaciones fuera de mi control, decidí que podía hacer algo interesante para aprovechar el tiempo libre.

Hace varios días había un pequeño tema en SVCommunity preguntando como hacer para generar "auto-extraibles" vía PHP. Luego de buscar un poco en Google y leer un par de respuestas un tanto "pedantes" en StackOverflow donde sugerían que lo mejor era cambiar de proveedor de hosting, decidí que tal vez había una forma sencilla de hacer un autoextraible en Linux que funcionara en Windows que no implicara correr comandos externos.