Todos los caminos conducen a … Arduino

El dia de ayer recibí mi regalo de Navidad, mi arduino starter kit y su respectivo manual de iniciación, vari@s amig@s me preguntaron ¿Qué es arduino?, ¿Y para qué es eso? Entre otras cosas y pues sus interrogantes además de la emoción de mi nuevo kit me han motivado a escribir este post para arrojar una idea para aquellos que desconocen de que se trata o que al igual que yo están iniciandose en este mundo.

Definición: Arduino es una plataforma de electrónica abierta para la creación de prototipos basada en software y hardware flexibles y fáciles de usar. Se creó para artistas, diseñadores, aficionados y cualquiera interesado en crear entornos u objetos interactivos.

Arduino puede tomar información del entorno a través de sus pines de entrada de toda una gama de sensores y puede afectar aquello que le rodea controlando luces, motores y otros actuadores, además de poder comunicarse con otros componentes, como pueden ser un ordenador u otra placa arduino, es decir que con una tarjeta arduino, un programa cargado en el microcontralador de la tarjeta además de algún sensor podemos obtener información y en base a la misma llevar a cabo una accion, como podría ser procesarla, guardarla en BD, compartirla mediante un servidor web, controlar algun dispositivo o simplemente apagar o encender una luz.

Ahora bien de donde surgió este interés por Arduino, pues resulta que a un familiar unos vándalos le ensuciaron el auto y pues conversando con este pariente, analizamos que alternativas teníamos para poder determinar quienes eran los autores de la fechoría en caso de un nuevo intento de vandalismo, pensamos en cámaras espias, cámaras web, pero indagando por la web, salió una mención a Arduino y pues ese fue el detonante de todo, pues mi familiar empezó a investigar de esta arquitectura y se dio cuenta del gran abanico de posibilidades a desarrollar/construir con esta arquitectura, él luego me lo comento y me contagio, por si acaso se quedaron con la duda, pues «si que se puede» construir algo para recabar pruebas que impliquen a unos vándalos, ya que con una tarjeta Arduino, una cámara y un sensor de movimiento ya puedes empezar a captar video. Casos como el que les acabo de contar he leído ya en la web que terminan siendo un proyecto personal inspirado por circunstancias no muy agradables, pero es que las ventajas de Arduino no terminan allí, sino que también se puede programar en distintos lenguajes, entre los que les puedo comentar, Java, C/C++, Objetive C, entre otros, es decir, lenguajes punteros hoy en día, además de lo anteriormente comentado es una arquitectura «barata» que incluso puedes hasta construirla por ti mismo, recuerden es una «arquitectura abierta».

Qué mas podríamos hacer con Arduino, además del ejemplo detallado anteriormente?

Pues entre las cosas que se me ocurren y he leido les puedo mencionar:

  • Un sistema que te avise vía sms o email cuando te ha llegado correo al buzón de tu casa.
  • Imagina una pantalla LED al estilo Times Square (mucho mas humilde claro) los tweets donde eres mencionado.
  • Montar una aplicación web donde puedas visualizar y controlar la temperatura de tu hogar encendiendo y apagado de la calefacción para regular la temperatura.
  • manejar un carro a control remoto pero desde tu iPhone, Andriod o incluso Blackberry.
  • Construir tu propio sistema de vigilancia casera, con sus respectivas cámaras, sensores de movimiento, etc.
  • Con fines didácticos incluso llegar a construir un robot simple.

En fin como ya se pueden ir imaginando el limite es nuestra imaginación, y la versatilidad y sencillez que nos da esta arquitectura la hacen una herramienta muy útil al momento de abordar un proyecto (dependiendo de las características del mismo), lo que hace que si un proyecto personal requiera de características como conectividad, uso de sensores, servomotores, etc… Arduino muy probablemente sea tu solución, es fin, todos los caminos te llevarán a Arduino.

Espero muy pronto irles contando mis anecdotas con esta arquitectura, ya que como me han comentado la emoción de controlar y encender tu primer bombillo LED es casi una experiencia religiosa. A continuación les dejo unos enlaces de interés:


iPad y la copa América 2011

Después de mucho tiempo alejado del blog (por motivos laborales) vuelvo para hacer una pequeña entrada, motivado por varias cosas entre ellas el empate de la vinotinto (para quien no lo sepa es como se le denomina al equipo de fútbol de Venezuela) ante Brasil. Ustedes se preguntaran ¿qué tiene que ver la copa América de fútbol con un blog que supuestamente habla de tecnología?

Para quien aun no lo sepa la copa América de fútbol esta siendo transmitida por youtube (streaming) por el siguiente canal www.youtube.com/copaamerica, es por dicho canal donde he podido visualizar par de juegos (incluido el de la vinotinto), hasta aquí nada nuevo, si no es por el hecho que lo he visto en la comodidad de mi casa con mi TV y con una calidad de imagen espectacular y como he podido lograr eso, pues utilizando mi iPad2 como centro multimedia conectado a mi televisor con el digital AV adapter y un cable HDMI, por supuesto hay que tener en cuenta que gozo con una conexión a Internet con un ancho de banda que lo definiré como decente (6 Mbps). ¿Cual ha sido el resultado? Sencillamente disfrutar de unos partidos con una calidad de imagen fantástica sin temor a equivocarme con una resolución igual a las trasmisiones digitales de los canales que emiten su imagen en HD.

Una vez más he podido percibir en carne propia la versatilidad del iPad en el día a día, a su vez no esta demás agradecer a la organización de la copa América 2011 por llevar esta magnifica fiesta del fútbol a todo el mundo adaptándose a las nuevas tecnologías.

Aqui les dejo algunas imagenes tomadas del iPad.

Ipad 2 presentado a la sociedad

El pasado 2 de marzo fue presentado a la sociedad, el tan esperado y muy rumoreado Ipad 2, se podría decir que no se había llegado aun al tope de ventas del Ipad y ya se estaba especulando con la segunda versión del mismo. Se comentaban muchas cosas de esta keynote, un nuevo ipad con camara(s), capacidad de expansión de memoria con tarjetas SIM, pantalla con retina display, quizás más pequeño, nuevo procesador y mas… A su vez se comentaba la posibilidad de una nueva versión de iOS y un MobilMe gratuito, en fin había tantos rumores que dudo que los mejores adivinos del mundo incluso pudieran acertar en sus predicciones.

Y se hizo la luz, el tan esperado dispositivo fue presentado por Steve Jobs, con unas características hasta ahora muy bien valoradas por la critica y que a mi particularmente me han encantado. Señalo a continuación las características (resumidas) del Ipad 2:

  • Procesador A5 dual core de 1 GHz, que le permite procesar hasta 9 veces mas rápido el desempeño gráfico.
  • Doble cámara, una frontal VGA y otra trasera HD 720p 30 frames por segundo y zoom 5X.
  • 10 horas de duración de la batería en uso continuo (9 horas en caso de hacer uso continuo de redes 3G).
  • Dimensiones (alto x ancho x grueso): 24,12 cm x 18,57 cm x 0,88 cm y un peso de 601 gramos (607 o 613 gramos en el caso de ser la versión con 3G para redes CDMA y GSM respectivamente).
  • Pantalla LED de 9,7 pulgadas y resolución 1024 x 768 (misma pantalla del primer Ipad).
  • Giroscopio de 3 ejes, acelerometro, brújula digital y GPS asistido en la versión 3G además de funciones de teléfono.

Además de estas características también se presentaron 2 nuevos accesorios, la funda smart cover y el adaptador AV digital de Apple, cada uno con un valor añadido que no caeré en detalles sino que les dejo par de vídeos y les den un vistazo y luego me comentan que opinan al respecto. Por ultimo nos presentaron 3 estupendas aplicaciones  para Ipad que darán que hablar y desde ahora les auguro un éxito rotundo como lo fueron GarageBand, PhotoBooth e iMovie, sencillamente ESPECTACULARES en especial me ha impactado iMovie, da la impresión de poder llevar a cabo la edición de video casi en un modo profesional y sencillamente con tus dedos, ni mas ni menos.

 

En conclusión en esta oportunidad Apple nos ha traído un dispositivo muy mejorado, cuyas características traen consigo un valor agregado importante, como lo son el poder hacer uso de FaceTime para videoconferencias un nuevo procesador que nos da la oportunidad de crear mejores aplicaciones y aprovechar al máximo su velocidad así como su desempeño para tratar gráficos, un set de aplicaciones (y las que vendrán) que sencillamente y sin ser demagogo son ESPECTACULARES. Hay ciertas tablets con Android que me han llamado la atención como lo son la Xoom de Motorola, la nueva Galaxy tab de 10 pulgadas de Samsung y el prospecto de Sony la S1, que gozarán (y gozan) de una arquitectura de mucho poder, pero después de lo mostrado por Apple a día de hoy pienso que ninguno de estos dispositivos presenta la fluidez y amigabilidad que nos da el Ipad2 (y el Ipad) y por mencionarles algo y a su vez hacerles ver mi punto de vista, es cuestión de ver solo un pedazo de la keynote y ver la presentación de las aplicaciones  iMovie y de GarageBand aquí los hechos valen más que las palabras (con ello no quiero decir que no recomiendo adquirir uno de esos tablets, ya que se, que tienen su gama de usuarios ansiosos de mas control sobre el sistema, amantes de android, etc…). Es más en mi opinión ha sido una de las keynote donde la opinión de casi todos ha sido favorable al nuevo dispositivo y sus respectivos accesorios y aplicaciones, es mas no me extrañaría que surjan nuevos accesorios a usar con adaptador AV digital y darle a su vez mucho mas potencial del que tiene (visualizar películas en HD con o sin home sharing, video en espejo).

En fin para mi acabó la espera y he reservado uno para  el 25 de marzo, día que estará a la venta el Ipad en Europa. Estén pendientes, apenas lo tenga en mis manos tengo pensado hacer un video de unboxing.

y tu ¿Que opinas del nuevo Ipad? ¿Estas conforme con sus nuevas características?¿le agregarías y/o quitarías algo?

Aqui les dejo el video de la keynote

entrada por linea de comandos con Java

Aquellos que como yo vienen de la vieja escuela Java (por ejemplo java 1.1 o 1.2) recordarán que era algo engorroso la cantidad de lineas de código a escribir para ingresar datos por linea de comandos con Java(hay que comprender que desde un principio Java no estuvo pensado para esto), he aqui un ejemplo

Desde la versión 1.6 de java existe la clase java.io.Console, una clase que nos hace un poco mas intuitivo el manejo (entrada y salida) de datos por linea de comandos, al igual que otros lenguajes como podrían ser C/C++.
Les muestro ahora la clase anterior haciendo uso de la clase Console

Como se puede observar es código es menor e incluso no hay que agregar una parte de código que para mi es engorrosa (en este caso) y son los bloques try, catch, así como tampoco manejar flujos, sino que en cambio se hace todo de una forma mas amigable por medio de la invocación de métodos de la clase Console. Hay una parte del código que seguro les causa un poco de curiosidad y es el ubicado entre las lineas 9-12, y este se debe, ya que hay ocasiones en que la obtención de la consola puede ser null, esto es debido a que las operaciones de consola o linea de comandos no están permitidas, por ejemplo al intentar el programa anterior desde el IDE Eclipse.

Además de los métodos de la clase Console utilizados en el segundo ejemplo, también existen métodos para entrada de password, lo cual deshabilita la impresión (o mostrado) de los valores ingresados por linea de comandos, así como también métodos para salida de datos formateados.

Si no has utilizado antes esta clase, no te preocupes tiene una API muy sencilla.

¿Has hecho alguna aplicación interesante con la clase Console? cuentalo y comparte tu experiencia con nosotros.

javaDB embebido en archivo jar ejecutable

Hace tiempo atrás revisando en que diferían JavaSE 5 y JavaSE 6, observe que el jsdk de la versión 6 incluía javaDB y me asombro el saber que Java traia consigo su propio gestor de base de datos, así que desde entonces tenia el gusanillo de trastear con el mencionado gestor y Java.

Para quien no lo sepa aun javaDB es el mismo apache Derby, un gestor de base de datos relacional «ligero» 100% Java (tiene un tamaño de 2MB).

He aquí mi primer encuentro con javaDB.

El entorno es Mac OS X snow leopard con la ultima versión de java (1.6.0_22) distribuida para este entorno de parte de Apple y como IDE Eclipse. Mi primera decepción fue el darme cuenta que la versión del jsdk distribuido por parte de Apple no trae consigo javaDB asi que procedí a descargarlo desde este enlace, por otro lado es agradable mencionar que el archivo a descargar es en formato .dmg, una vez ya relatada mi primera decepción (esperaba que mi jsdk fuera igual de completo que cualquier otro distribuido de parte de Oracle para los entornos Linux o Windows), procederé a explicarles como obtener un Jar  que traiga consigo javaDB y fuese un ejecutable a mi modo de verlo fácilmente distribuible.

Como mi idea principal consistía en probar javaDB, procedi a buscar un ejemplo en la red, lo bueno es que encontré uno casi perfecto, que cumplía casi a la perfección todo lo que quería, consiste en el ejemplo del libro de direcciones (AddressBook). Antes de continuar será necesario que descarguemos el código fuente del ejemplo y aquellos que hagan uso de un IDE importemos el código fuente en un proyecto (ver figura)

Una vez importado el código, podemos detallar que nuestro proyecto tendra una carpeta «lib» allí estará un jar de nombre derby.jar, que no es mas que nuestro javaDB en una versión vieja (si prestan atención el ejemplo data del 2006), si quisiéramos trabajar con una versión mas nueva pues sencillamente copiaríamos al proyecto el  derby.jar ubicado en la carpeta de instalación de javaDB,  además también podemos notar que el proyecto también contará con un build.xml (para quien no conozca Ant, ir al menu Windows->show view y seleccionar la vista de Ant, una vez se muestra la vista arrastrar el archivo build.xml a la vista). En la vista de Ant ejecutar la tarea «dist», la cual es la tarea por defecto. Una vez ejecutada la tarea procedemos a refrescar el proyecto (F5) y veremos que se nos ha creado una carpeta de nombre «dist» que contendrá a su vez una carpeta «lib» con la dependencia (que no es mas que nuestro derby.jar) y un fichero de nombre AddressBook.jar  que será un jar ejecutable. Si hacemos doble click sobre este fichero o sencillamente ejecutamos la tarea «run» de Ant, y podremos ver como se ejecuta nuestra aplicación y como podemos guardar, editar y eliminar registros, sencillamente fabuloso.

Pero ustedes se preguntarán ¿Si es tan fabuloso por qué no lo definí como perfecto? y la razón es la siguiente, si copiamos ese archivo ejecutable AddressBook.jar, lo pegamos por ejemplo en nuestro escrito y procedemos a ejecutarlo, se darán cuenta que no es del todo distribuible, ya que para que se ejecute perfectamente sería necesario haber copiado y pegado la carpeta «lib» con su respectivo derby.jar. A mi modo de ver las cosas no es muy elegante distribuir un «supuesto» jar ejecutable y a su vez hacerlo con una carpeta aparte con sus respectivas dependencias, incluso el embebido lo pondría en entre dicho porque nuestra aplicación no es autocontenida, es decir la aplicación por si sola no tiene todo lo que requiere (excluyendo la JVM de esos requerimientos). Así que me puse a investigar el tener todo en 1, es decir que fuese un único jar ejecutable.

El problema esta en que un jar (asumamos AddressBook.jar) al ejecutarse, por defecto no puede cargar las clases contenidas en otro jar  (asumamos derby.jar) que este dentro del primero, es decir aunque agregásemos nuestra carpeta «lib» con el derby.jar dentro de AddressBook.jar no podríamos ejecutar la aplicación ubicada en nuestro escritorio (o en cualquier otro lugar donde lo hayamos pegado), aquí les dejo un enlace del tutorial donde se menciona. ¿Que alternativa tendríamos?  una de ellas seria usar Java Web Start para la instalación y otra hacer nosotros mismos nuestro propio ClassLoader a medida, esta opción me tentó, incluso quede con el gusanillo de investigar al respecto, pero buscando por la red encontré una buena herramienta, además de no ser la única en su clase y en el one-jar, el cual consiste en un proyecto para crear un único jar ejecutable y traiga consigo (dentro) todas sus dependencias (jars).

Existen varias opciones para crear el ejecutable, mediante tarea Maven, tarea Ant e incluso por linea de comandos, he optado por la última, la cual es muy sencilla y detallo a continuación los pasos:

  1. Descargar el archivo one-jar-boot-0.97.jar
  2. Crear un directorio «root» que contenga a su vez 2 directorios mas llamados «main» y «lib».
  3. Copiar el archivo AddressBook.jar (nuestro jar ejecutable obtenido mediante Ant) dentro de la carpeta «root/main» y copiar el derby.jar en el directorio «root/lib».
  4. Descomprimir el archivo one-jar-boot-0.97.jar en el directorio «root» y eliminar la carpeta «src» donde están ubicados los fuentes del archivo recien descomprimido.
  5. Editar el archivo boot-manifest.mf y añadir una nueva linea. One-Jar-Main-Class:   com.sun.demo.addressbook.AddressFrame
  6. En linea de comandos ubicarnos en el directorio «root». >cd root
  7. En  linea de comandos >jar cvfm ../ejecutable.jar boot-manifest.mf . (no omitir el ultimo punto «.»)

Finalmente hemos obtenido nuestro ejecutable.jar, es decir una aplicación de escritorio que tiene embebido un gestor de base de datos ligero, plena y elegantemente distribuible.

Espero les sea de utilidad y cualquier duda y/o sugerencia será bien recibida.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies