4 dic 2012

Despiezando un estropeado aparato TDT

Últimamente estuve haciendo limpieza por casa y me percaté de la existencia de un estropeado TDT. Sin pensar lo que me podría encontrar dentro de él me puse ha desmontarlo. Y cuál fue mi alegría cuando descubrí diferentes partes que me podían ser muy útiles en un futuro. Al abrirlo me encontré con 3 partes principales, un circuito electrónico al que estaban anclados el TDT propiamente dicho y los euroconectores, otro circuito electrónico en la zona del frontal y una fuente de alimentación.

Interior del aparato TDT
Ésta última me viene genial a la hora de alimentar los circuitos electrónicos que tengo en mente montar, ya que ofrece salidas a 3.3, 5, 9, 12 y 30V.
Fuente de alimentación incluida en el TDT
Para la fuente de alimentación he decidido, modificando y recortando la carcasa del aparato, crear una caja que me permita acceder a sus salidas. El resultado obtenido es bastante chapucero, la verdad, pero me servirá para los propósitos que quiero darle.
Aspecto de la caja modificada para poder acceder a las salidas de la fuente de alimentación
Diferentes componentes obtenidos del TDT
En el circuito del frontal se encontraban componentes que también me pueden servir como un display 7 segmentos de 4 dígitos, un registro de desplazamiento, pulsadores y un receptor infrarrojos (que lo podré usar para el coche con control remoto). En el circuito principal había reguladores de voltaje y otros componentes varios que pueden venirme bien. 
Me parece importante destacar cómo conseguí desoldar los componentes de las placas, y es que es un método que encontré en youtube y que, al menos en mi caso me resultó muy sencillo, efectivo y que no estropeó ningún componente que desoldé. Os dejo el link del vídeo aquí.

24 nov 2012

¿Cursando fundamentos de programación en la UNED? Tengo un regalo para tí. Parte 2.

Hola a todos aquellos interesados y cursando la asignatura de fundamentos de programación de la UNED. Con dos días de retraso con respecto a la fecha indicada en el planning, publico una solución a la práctica 3. El programa imprime la hoja de calendario correspondiente a un mes comprendido entre Enero de 1601 y Diciembre de 3000.
El código se encuentra comentado para una fácil comprensión. Espero que os sea de ayuda. Simplemente decir que no encontré un mecanismo en condiciones para el procedimiento que imprime el calendario, así que al final me decanté por hacerlo utilizando el comando "printf" tantas veces como fuera necesario.
El código fuente lo podéis encontrar aquí.

Recordar que las dos primeras prácticas las podéis encontrar aquí

22 nov 2012

Fritzing, mucho más que software de diseño de PCB

Últimamente venía pensando que sería interesante para mí adentrarme más en el mundo del diseño de circuitos impresos. Si bien en la carrera estudiamos al respecto, no lo hicímos con gran profundización. Así que me puse manos a la obra y por el camino apareció Fritzing. En el sitio web lo definen, no solo como una herramienta software para el diseño de layouts, sino también como una iniciativa open-source hardware y una comunidad virtual que permite a los usuarios documentar, enseñar y compartir sus proyectos electrónicos. Y bien que lo han conseguido, a tenor de lo que se puede ver en el apartado de proyectos de su sitio web. Cientos y cientos de proyectos electrónicos y muchos de ellos utilizando Arduino, lo cuál me viene en este momento como anillo al dedo.
La herramienta software se encuentra en este momento en fase beta, aunque la he estado probando y no he encontrado problema alguno. Destacar que es realmente sencillo y visual el montar tu circuito virtual y obtener el layout en caso de que queramos crear u ordenar nuestra tarjeta de circuito impreso PCB. Podéis encontrar un videotutorial básico aquí, aunque hay realmente mucha documentación en Internet al respecto. Como punto negativo (a mi modo de ver bastante negativo) decir que no permite la simulación de circuitos. Según indican en su web, la idea es montar el circuito real y, una vez comprobado que funciona, documentarlo mediante Fritzing y obteniendo la PCB si así lo deseamos.
Aspecto visual de la aplicación

Crear una base de datos básica de clientes en Java

Unos pocos días atrás creé una entrada en la cuál mostraba una base de datos para clientes (por ejemplo) que había creado utilizando el software y lenguaje de programación Gambas. Si bien en aquel programa utilizaba una base de datos SQLite para almacenar los datos, en este programa se almacena en la memoria del ordenador. Quedo por lo tanto en mi lista de tareas el realizar la base de datos en Java almacenando datos en un servidor. 
La aplicación consiste en una ventana principal que contiene una tabla que muestra la lista de clientes guardados. Esa ventana permanece hasta que se realiza alguna de las tres acciones posibles, que son dar de alta a un nuevo cliente, modificar un cliente o dar de baja a un cliente previamente almacenado. Al elegir la opción de alta de un nuevo cliente aparecerá sobre la ventana principal un nuevo panel con cuadros de texto para introducir los datos y el botón de guardar. En caso de que la opción elegida sea modificar o borrar un cliente, el panel que aparecerá contendrá cuadros de texto para buscar un determinado cliente y además otros cuadros de texto que muestran el cliente sobre el que realizar la opción que se desee. Personalmente pienso que la interfaz que he creado es bastante mejorable, pero la utilidad y funcionalidad que quería darle las tiene.
Decir que la lista de clientes almacenados se guarda en un ArrayList. Encontré información muy interesante con respecto a este tipo de elementos aquí. Como de cada cliente se almacena el nombre y los dos apellidos, pues la lista está formada por conjuntos de ArrayList, teniendo por tanto una lista ArrayList<ArrayList<String>>. Para recorrer los elementos de la lista he utilizado un ListIterator, y para buscar un determinado cliente el método de ArrayList "contains". Podeis ver y descargar el código fuente en el enlace al final de la entrada.

Aspecto de la ventana principal

Aspecto al seleccionar la opción de alta de cliente

Aspecto de la ventana añadiendo nuevos clientes

Ventana de modificar cliente con cuadros de búsqueda

 Podéis descargar el código fuente desde aquí.



19 nov 2012

Tweaks estéticos para Lubuntu. Efecto exposé, shadows, aerosnap...

Como hemos citado anteriormente, Lubuntu está enfocada a ser rápida, ligera y con poco consumo de recursos. Eso tiene sus ventajas (evidentes), pero también acarrea algunos inconvenientes, como puede ser el de no tener efectos de escritorio avanzados por defecto. Hablo de efectos tales como AeroSnap, Exposé o Shadows, que, a mi modo de ver, no solo son efectos estéticos sino que también pueden llegar a ser prácticos (especialmente AeroSnap).
Aunque los usuarios de Linux disponemos de Compiz, este requiere bastantes recursos y se sale un poco de la filosofía de Lubuntu. Por lo tanto aquí trataré de explicar tips para poder tener efectos de escritorio que consuman pocos recursos.

  • AEROSNAP

El primero de ellos y al que más utilidad le encuentro es el efecto AeroSnap, que consiste en que dos ventanas quedan divididas ocupando cada una de ellas la mitad, lo que permite trabajar en una mientras vemos la otra. La explicación de cómo instalarlo la podéis encontrar aquí. Básicamente consiste en modificar el archivo "lubuntu-rc.xml". Para ello, abrimos LXTerminal y ejecutamos:

gksu leafpad ~/.config/openbox/lubuntu-rc.xml

En el archivo de texto que aparece se encuentra básicamente la configuración de combinaciones de teclas que realizan alguna función en nuestro sistema. Encontraremos algunas de ellas, como subir y bajar el volumen, modificar el brillo de la pantalla, etc.
Con el editor de texto abierto, buscamos la línea que contiene el siguiente texto:

<chainQuitKey>C-g</chainQuitKey>

y debajo de ella pegamos el siguiente código:

<!-- Aero Snap for Openbox Begin Code-->
    <keybind key="W-Left">        # HalfLeftScreen
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo">
        <x>0</x>
        <y>0</y>
        <height>97%</height>
        <width>50%</width>
      </action>
    </keybind>
    <keybind key="W-Right">        # HalfRightScreen
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo">
        <x>-0</x>
        <y>0</y>
        <height>97%</height>
        <width>50%</width>
      </action>
    </keybind>
    <keybind key="W-Up">        # HalfUpperScreen
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo">
        <x>0</x>
        <y>0</y>
        <width>100%</width>
        <height>50%</height>
      </action>
    </keybind>
    <keybind key="W-Down">        # HalfLowerScreen
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo">
        <x>0</x>
        <y>-0</y>
        <width>100%</width>
        <height>50%</height>
      </action>
    </keybind>
<!-- Aero Snap for Openbox End Code-->

Guardamos el archivo, cerramos la ventana y volvemos al terminal, donde introducimos:

openbox --restart

Cerramos la terminal y ya podemos comprobar nuestra nueva funcionalidad pulsando la combinación de teclas windows y botón derecho, izquierdo, arriba o abajo, en función de dónde queramos colocar nuestra ventana.
Efecto aerosnap con ventanas separadas verticalmente

Efecto aerosnap con ventanas separadas horizontalmente

  • EXPOSÉ

El segundo efecto del que os hablo es Exposé. Podéis encontrar una explicación completa de instalación y configuración aquí. Básicamente consiste en instalar el paquete Skippy-XD y volvemos a modificar el archivo "lubuntu-rc.xml" que cambiamos para el efecto anterior. Para ello, de nuevo en una terminal

gksu leafpad ~/.config/openbox/lubuntu-rc.xml

Buscamos desde el editor de texto la línea que contiene

<chainQuitKey>C-g</chainQuitKey>

y debajo de ella pegamos el código siguiente


<!-- Start Expose for LXDE-->
<keybind key="A-grave">
     <action name="Execute">
       <command>skippy-xd</command>
     </action>
   </keybind>
<!-- End Expose for LXDE-->


Guardamos el archivo, cerramos la ventana y volvemos al terminal, donde ejecutamos

openbox --restart

Ahora si introducimos la combinación de teclas Alt y la tecla justo encima del tabulador izquierdo obtendremos el efecto exposé.
Efecto exposé

  • SOMBRAS Y TRANSPARENCIAS

Otro efecto que podemos aplicar y sin apenas consumo de recursos son las sombras de las ventanas y las transparencias de estas cuando se encuentran en segundo plano. Para ello usaremos compton, el cuál podemos encontrarlo en versiones de 32bits o de 64bits. Tras instalarlo podemos configurarlo siguiendo el tutorial de Gespadas. Si queremos incluirlo como una aplicación de inicio (para que cada vez que arranquemos el sistema se encuentre en ejecución), podemos hacerlo editando el archivo "/etc/xdg/lxsession/Lubuntu/autostart". Para ello, introduce en una terminal el siguiente comando:

sudo leafpad /etc/xdg/lxsession/Lubuntu/autostart

y añade la siguiente línea al final

@compton -cC -i 0.8 -e 0.7 -fF -I 0.065 -O 0.065 -D 6 -m 0.8

Estos parámetros son los que a mí me gustan, aunque lógicamente puedes ponerlos a tu gusto.
Efectos de sombras y transparencias

  • ZOOM

Otro efecto de escritorio que podemos utilizar, y me da la impresión que es bastante desconocido para Lubuntu, es el del zoom, que consiste en aumentar una zona determinada del escritorio. Esto lo podemos hacer con la aplicación xzoom, el cuál, si bien no es tan dinámico como el efecto lupa de compiz, puede darnos resultados bastante buenos, sobre todo si quieres hacer un screencast o simplemente necesitas hacer un zoom  para leer alguna letra pequeña. Para instalarlo basta con escribir en el terminal:

sudo apt-get install xzoom

O bien entrar en el Gestor de paquetes Synaptic, buscar xzoom e instalarlo.
Al ser un programa desde consola, que puede resultar incordioso, pero tenemos la posibilidad de hacer que se ejecute mediante una combinación de teclas, de forma idéntica a como lo hacíamos con el efecto exposé. Para ello, escribe en una terminal

gksu leafpad ~/.config/openbox/lubuntu-rc.xml

Buscamos desde el editor de texto la línea que contiene:

<chainQuitKey>C-g</chainQuitKey>

y debajo de ella pegamos el código siguiente:


    <!-- Zoom in the desktop using xzoom-->
    <keybind key="A-z">
      <action name="Execute">
        <command>xzoom -source 250x150 -mag 2</command>
      </action>
    </keybind>

Guardamos el archivo y ya podemos hacer un zoom utilizando la combinación Alt-z. Por supuesto la combinación de teclas que le asignamos, el zoom, o el tamaño de la porción a aumentar son modificables. Un tutorial lo puedes encontrar aquí.
Efecto zoom de la parte inferior derecha del escritorio

  • NOTIFICACIONES

Para terminar, un último pequeño tip que consiste en modificar las preferencias de las notificaciones en Lubuntu. Por defecto, las notificaciones aparecen durante 10 segundos, en la parte superior derecha y con un tema predeterminado. Si queremos cambiar todos estos parámetros, basta con ejecutar en un terminal:

xfce4-notifyd-config

Y ya os aparecerá la ventana de preferencias, que permite modificar el tema, la posición y el tiempo de las notificaciones. Mis preferencias son el tema Smoke, la posición abajo a la derecha y el tiempo de retardo de 4 segundos. La opacidad al 72%.
Notificaciones modificadas

En los vídeos a continuación muestro cada uno de los efectos en ejecución así como el procedimiento de instalación (para aquellos no muy familiarizados con la terminal).







17 nov 2012

¿Cursando fundamentos de programación en la UNED? Tengo un regalo para tí.

Actualmente estoy cursando la asignatura Fundamentos de Programación del Grado de Ingeniería Informática de la UNED. Para el que también esté cursándolo, sabrá que hay una parte práctica de la asignatura consistente en 4 prácticas. Por si os puede servir de ayuda, voy a tratar de colgar todas, con comentarios para que puedan entenderse, aquí en mi blog. De momento, puedes encontrar las dos primeras aquí. Espero que os sirva...

Actualización 1: Ya se encuentra disponible la práctica 3. La podéis encontrar aquí.

15 nov 2012

¿Un coche con control remoto con Arduino? ¡Vamos a intentarlo!

Desde bien pequeño he tenido una gran afición por los coches teledirigidos. Recuerdo perfectamente todos y cada uno de los que he tenido, he incluso siendo ya mayor decidí comprarme uno. Siempre me había interesado por saber cómo están hechos, cómo es posible controlarlo remotamente.
Un buen día, indagando por la web de la Escuela de Ingenierías Industriales de la Unex, descubrí que unos excompañeros míos habían creado un coche con control remoto (podéis encontrar un vídeo aquí)... y me encantó. Quedó en mi recámara la idea de hacer alguno. Y con la reciente adquisición de la tarjeta arduino y unas pequeñas adquisiciones más creo que ese día se acerca. Si observáis el vídeo podréis comprobar que montaron todo desde cero. Yo no llegaré a esos extremos, mi idea está más centrada en la programación de la tarjeta, aunque es evidente que habrá que hacer algo de manualidades. Iré comentando la evolución, espero tenerlo funcionando en un par de meses...
Coche con Arduino