viernes, 30 de agosto de 2013

Control de 3 salidas - Raspberry Pi

Página principal

Control de 3 salidas

Raspberry Pi

xsetaseta@gmail.com

 El primer montaje con un microcontrolador sueles ser el parpadeo de un led. Para mi primer montaje con la Raspberry Pi he elegido el control de 3 leds mediante el teclado, o mediante un interface gráfico.
Navegando por internet encontre la siguiente página:
    http://www.diverteka.com/?p=1792#comment-3529


Explica como controlar un rele mediante Raspberry Pi, es un buen tutorial  realizado en lenguaje Python y las librerías ncurses. Yo lo único que he hecho es ampliarlo para que funcione con 3 leds.

Esquema eléctrico


Simulación de montaje


Montaje eléctrico.


Control mediante el teclado en consola.

# ==========================================
# -  Programa para manejo RELE de control  -
# ------------------------------------------
# -  J.C.G.P. - (c) Webtronika 2013 -
#
# Modificado el 22/08/2013 por SETA43
# ==========================================
#!/usr/bin/python
import sys
import curses
import time
import RPi.GPIO as GPIO
# ---------------------------------------------------------------
# - Rutina de configuracion de puertos en GPIO ------------------
# ---------------------------------------------------------------
def confiGPIO(param1):
        GPIO.setmode(GPIO.BCM)
        GPIO.setwarnings(False)
        GPIO.setup(23, GPIO.OUT)
        GPIO.setup(24, GPIO.OUT)
        GPIO.setup(25, GPIO.OUT)
        return 0
# ---------------------------------------------------------------
# ###############################################################
# - PROGRAMA PRINCIPAL ------------------------------------------
#
#   Utiliza curses para visualizar salida a pantalla
#
# ###############################################################
# ---------------------------------------------------------------
stdscr = curses.initscr()
curses.cbreak()
curses.start_color()
curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_GREEN)
hsize = curses.COLS
vsize = curses.LINES
curses.curs_set(0)
curses.noecho
stdscr.border(0)
stdscr.keypad(1)
stdscr.nodelay(1)
confiGPIO(0)
try:
        stdscr.bkgd(curses.color_pair(1))       
        while True:  # Rutina principal del programa
                char = stdscr.getch()
                time.sleep(.1)                                  ### Hace que el sistema no se sature
                if (char == 81 or char == 113): # Tecla Q/q
                        break  
                if (char == 49): # Tecla 1
                        GPIO.output(23, True)
                if (char == 50): # Tecla 2
                        GPIO.output(23, False)
                if (char == 51): # Tecla 3
                        GPIO.output(24, True)
                if (char == 52): # Tecla 4
                        GPIO.output(24, False)
                if (char == 53): # Tecla 5
                        GPIO.output(25, True)
                if (char == 54): # Tecla 6
                        GPIO.output(25, False)
                else:
                        stdscr.addstr(vsize/6, (hsize/2)-18,"Control de RELE via GPIO")
                        stdscr.addstr((vsize/5)+2, (hsize/2)- 22,"[1] - Activa el RELE1")
                        stdscr.addstr((vsize/5)+3, (hsize/2)- 22,"[2] - Desactiva el RELE1")
                        stdscr.addstr((vsize/5)+5, (hsize/2)- 22,"[3] - Activa el RELE2")
                        stdscr.addstr((vsize/5)+6, (hsize/2)- 22,"[4] - Desactiva el RELE2")
                        stdscr.addstr((vsize/5)+8, (hsize/2)- 22,"[5] - Activa el RELE3")
                        stdscr.addstr((vsize/5)+9, (hsize/2)- 22,"[6] - Desactiva el RELE3")
                        stdscr.addstr(vsize-8, (hsize/2)- 18," Pulsa [Q] para salir")                 
                        stdscr.refresh()

finally:
    curses.nocbreak()
    stdscr.keypad(0)
    curses.echo()
    curses.endwin()




Utilizando la librería Tcl/Tk he creado un interface gráfico.

Control gráfico.

#!/usr/bin/python

import Tkinter
import RPi.GPIO as GPIO

def confiGPIO(param1):
    GPIO.setmode(GPIO.BCM)
    GPIO.setwarnings(False)
    GPIO.setup(23, GPIO.OUT)
    GPIO.setup(24, GPIO.OUT)
    GPIO.setup(25, GPIO.OUT)
    return 0


def on1():
    print "on1"
    GPIO.output(23, True)
    return
def off1():
    print "off1"
    GPIO.output(23, False)
    return   
def on2():
    print "on2"
    GPIO.output(24, True)
    return
def off2():
    print "off2"
    GPIO.output(24, False)
    return   
def on3():
    print "on3"
    GPIO.output(25, True)
    return
def off3():
    print "off3"
    GPIO.output(25, False)
    return   

confiGPIO(0)


top = Tkinter.Tk()
top.geometry("200x250")
top.title("RELE_TK")
#top.config(bg="blue")


A = Tkinter.Button(top, text ="ON1 ", command = on1)
B = Tkinter.Button(top, text ="OFF1", command = off1)

C = Tkinter.Button(top, text ="ON2 ", command = on2)
D = Tkinter.Button(top, text ="OFF2", command = off2)

E = Tkinter.Button(top, text ="ON3 ", command = on3)
F = Tkinter.Button(top, text ="OFF3", command = off3)

Q = Tkinter.Button(top, text ="QUIT",fg="red", command = quit)

A.pack()
B.pack()
C.pack()
D.pack()
E.pack()
F.pack()
Q.pack()
top.mainloop()


Saludos
Juan Galaz


Bibliografía:

http://www.diverteka.com/?p=1792#comment-3529
http://docs.python.org/2/library/tkinter.html
http://www.tcl.tk/

jueves, 22 de agosto de 2013

Mis primeros pasos con Raspberry Pi

Mis primeros pasos con Raspberry Pi


La semana pasada me llego por correo la famosa placa llamada Raspberry Pi. He hecho muchos montajes con arduino, y he decidido dar un paso adelante con una placa mas potente.
Raspberry Pi es un ordenador de placa reducida (SBC) de bajo costo desarrollado en Reino Unido por la Fundación Raspberry Pi, con el objetivo de estimular la enseñanza de ciencias de la computación en las escuelas.
El diseño incluye un System-on-a-chip Broadcom BCM2835, que contiene un procesador central (CPU) ARM1176JZF-S a 700 MHz (el firmware incluye unos modos “Turbo” para que el usuario pueda hacerle overclock de hasta 1 GHz sin perder la garantía),9 un procesador gráfico (GPU) VideoCore IV, y 512 MB de memoria RAM aunque originalmente al ser lanzado eran 256 MB. El diseño no incluye un disco duro o una unidad de estado sólido, ya que usa una tarjeta SD para el almacenamiento permanente; tampoco incluye fuente de alimentación o carcasa.
Lo primero que hice fue ir a la página http://www.Raspberrypi.org/ y como recomendaba baje he instale en la tarjeta SD el NOOBS_v1_2_1 , según las instrucciones quick start guide . Noobs es un conjunto de distribuciones linux que se puede probar.
Conecte  ratón, teclado, alimentador usb 0.700mA, cable HDMI a la TV  a la placa y me puse a ver que pasaba.
Al arrancar te sale la opción de instalar una distribucion, en mi caso para probar el funcionamiento de la placa reproduciendo videos, instale XBMC. Después de esperar un rato quedo instalado el XBMC (Xbox Media Center). Es un centro multimedia de entretenimiento multiplataforma bajo la licencia GNU/GPL.
La reprodución de películas fue perfecta sin saltos, saliendo el audio por los altavoces de la TV, el cable HDMI lleva el sonido. No he tenido que configurar nada.

Como mi idea no era utilizar la Raspberry Pi  como reproductor multimedia, voy a instalar Raspbian, es la distribución debian para la Raspberry pi.  Se reinicia la placa y al arrancar y se pulsa la tecla que aparece en pantalla, con lo cual te da la opción de instalar otra distribución, en mi caso Raspbian. Cuando se instala una distribución se borra la distribución que existía anteriormente. Tarda un tiempo, hay que tener paciencia.
Cuando se termina la instalación y se reinicia la placa, empieza la carga del sistema linux. Tenemos al final la clásica  consola linux, para entrar como usuario debemos usar:
    Username: pi Password: raspberry
Para configurar el teclado, idioma y algunas cosas mas debemos teclear: sudo raspi-config
Ahora solo nos que arrancar el sistema gráfico con la orden startx.

Existen un montón de tutoriales de como instalar y configurar Raspberry Pi y sería pretencioso repetir mil veces otra vez lo mismo, por lo cual voy a poner unas cuantas páginas donde explican mucho mejor que yo lo explicaría.
Para poder manejar la Raspberry Pi en remoto, he activado la opción de ssh y he colocado un servidor vnc.
Siendo la dirección de mi Raspberry -> 192.168.2.106
Tecleo en la consola de mi ordenador -> ssh pi@192.168.2.106
Te pide la contraseña  que por defecto es: Raspberry
Ahora ya tenemos abierto una consola en remoto en nuestra Raspberry.


Si queremos controlar en remoto una sesión gráfica debemos instalar en la Raspberry un servidor vnc.
Desde un terminal  teclear:

    sudo apt-get update
    sudo apt-get install tightvncserver


y ahora desde el propio terminal teclear:

        vncserver :1

solo nos queda mediante un visor de escritorio remoto acceder a la Raspberry.



He añadido a la Raspberry un adaptador wifi EP-N8508, 4€
 Bus 001 Device 004: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter.
Y un conversor HDMI a DVI, de esta forma puedo trabajar cómodamente en mi monitor.

Saludos
Juan Galaz


Bibliografía:

http://www.Raspberrypi.org/
http://www.dgtallika.com/2013/07/como-preparar-por-primera-vez-su-Raspberry-pi/
http://www.dgtallika.com/2013/07/como-controlar-de-forma-remota-su-Raspberry-pi-mediante-vnc/
http://www.diverteka.com/



miércoles, 24 de julio de 2013

RTL2832-Radio definida por software. Linux Debian7

RTL2832-Radio definida por software

 Linux Debian7

xsetaseta@gmail.com

Plataforma Linux DEBIAN7

La radio definida por software o SDR ( del inglés Software Defined Radio) es un sistema de radiocomunicaciones donde los componentes típicamente implementados en hardware (mezcladores, filtros, amplificadores, moduladores/demoduladores, detectores, etc) son implementados en software.
Un programador de kernel Linux identificado como Antti Palosaari ha descubierto un modo no documentado en un chip Realtek RTL2832. Al RTL2832 puedes encontrarlo en pequeños sintonizadores de televisión digital DVB-T con un costo que difícilmente supere los 20€. El chip puede enviar a un ordenador muestras de ocho bits a un máximo teórico de 3.2 Mhz, y esto se utiliza para recibir las ondas de radio.

Mi intención es la de poder recibir señales de radio si tener que recompilar todas las fuentes. Tendréis razón los que me critiquéis diciendo que de esa forma no enseño a compilar nuestro propios programas, pero me he encontrado en la situación de tener que meter los programas en un portátil en el cual no quería meter todos los programas y las librerías para compilar.

He de comentar, que me he encontrado con un problema, si compilaba los programas en mi sobremesa con un AMD, al pasar las librerías y algunos programas al portátil con un Pentium me daba errores. Creo que en alguna de las compilaciones, utilizan optimizaciones para el procesador en el que se compila. Eso es bueno y malo, bueno debido a que el programa va a ser mas rápido, y malo, debido a que no se puede utilizar en ordenadores con microprocesador diferente al que se a compilado.
Por este motivo he realizado dos compilaciones diferentes, para AMD y para Pentium. Las compilaciones de Pentium si valen para el AMD de sobremesa.

Como programa para escuchar radio he utilizado el gqrx, esta realizado en torno a la librería QT, y en mi opinión funciona a la perfección.  http://gqrx.dk/
También distribuyo los binarios e indico las dependencias necesarias para su ejecución.

Empecemos con las malditas dependencias, seguro que a todos nos pasa que siempre nos falta una dependencia cuando instalamos algún programa.
De un golpe instalamos todos estos programas:

Debian7
apt-get install libboost-program-options1.49.0 libboost-system1.49.0 libboost-date-time1.49.0 libboost-filesystem1.49.0 libboost-thread1.49.0 libgnuradio-core3.5.3.2 libgruel3.5.3.2 libvolk0.0.0  libgsl0ldbl libvolk0.0.0 libqt4-svg libgnuradio-audio3.5.3.2 libgnuradio-fcd3.5.3.2 gstreamer0.10-pulseaudio libasound2-plugins libsystemd-daemon0 libwebrtc-audio-processing-0 pulseaudio pulseaudio-module-x11 pulseaudio-utils rtkit

El fichero que adjunto ra_rtl2.tar.gz  se descomprime en una carpeta.
Tenemos dos  carpetas amd o pentium, utilizar la que corresponda a vuestro ordenador. Siendo administrador del sistema o root, copiar las carpetas usr a la raíz de vuestro ordenador.
Ahora que hemos copiado las librerías y los programas necesarios, debemos actualizar las librerías y el lugar que por defecto busca las librerías.
Siendo root editamos el fichero  /etc/ld.so.conf y añadimos al final /usr/local/lib .
Quedando en mi caso:
            include /etc/ld.so.conf.d/*.conf
            /usr/local/lib
Solo nos queda actualizar las librerías con la orden   ldconfig  .Recuerden ejecutarlo como root.

Por ultimo debemos copiar el archivo rtl-sdr.rules  en el directorio /etc/udev/rules.d/ . Este fichero hace que identifique el modelo de TDT cuando se enchufa al usb.

Llegamos al final de este tutorial y solo nos queda ejecutar el programa gqrx , si todo fue bien nos saldrá la siguiente pantalla que nos pregunta el tipo de decodificador que tenemos. Nosotros indicamos  Realtek RTL2838UHIDIR, y ahora a disfrutar.



Mi TDT_USB es el siguiente: Bus 001 Device 008: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
En ebay se puede comprar por 8€ RTL2832U


Saludos.
Juan Galaz

P.D.
Para hacer este tutorial me he vuelto loco en las compilaciones, esto de que el Linux tenga tantas distribuciones y que las versiones de las librerías suelen ser diferentes, te da muchos errores al compilar. Pero bueno, siempre hay alguien que le a pasa lo mismo y seguro que lo soluciono de alguna forma. Si quiere alguien que le indique la forma de compilar desde las fuentes, que me pase un correo.

Bibliografía:

http://sdr.osmocom.org/trac/wiki/GrOsmoSDR
http://vereniging.opensource.nl/wiki/index.php/Software-Defined_Radio_on_Ubuntu#Install_Gqrx
http://sdrlatino.wordpress.com/2013/05/23/162/#more-162

domingo, 23 de junio de 2013

Receptor ADS-B con linux

Receptor ADS-B con linux 

Las siglas ADS-B significan Vigilancia dependiente automática.

Navegando por la red encontré este interesante artículo sobre como recibir las balizas de los aviones mediante el receptor un TDT que emplea el chip RTL2832U+R820T.
http://rjfc.blogspot.com.es/2013/04/receptor-ads-b-con-linux.html
Está muy bien explicado, y a mi me a funcionado perfectamente en Debia7.
Después de seguir el tutorial estos son los resultados.

Ejecutando la orden:

./dump1090 --interactive --net --metric

 Podemos ver en la consola los diferentes aviones que en esos momentos surcan los cielos. Yo he utilizado la pequeña antena que viene con el receptor, colocado en la ventana, cierto es que vivo en un piso 12.
Para ver los aviones en un mapa, abrimos la dirección:
http://localhost:8080/


Un saludo.

Juan Galaz

jueves, 13 de junio de 2013


Configurar Canon LBP2900 para Linux -Debian7 “Wheezy en escritorio MATE”
Cansado de ver el escritorio Gnome3 y queriendo volver al viejo modelo de Gnome2, encontré a Mate que era la continuación de Gnome2.
El funcionamiento de la impresora LBP2900  bajo Gnome3 era perfecto, pero cuando intento utilizar el la misma impresora bajo Mate deja de funcionar.
El tema de las impresoras Canon modelo LBPxxxx bajo Linux siempre a sido un tanto lioso, pero siempre me funcionaron después de cierto trabajo.
El caso de que bajo un escritorio funcione y bajo otro no funcione, es un poco particular, y después de bastante trabajo he conseguido hacerla funcionar.

Lo primero es ir a la casa y bajar el driver:
    Linux_CAPT_PrinterDriver_V250_uk_EN.tar.gz
(existe a  fecha de hoy otro driver mas actualizado)
Descomprime el fichero y sigue las instrucciones que vienen, en mi caso son las siguientes:

 dpkg -i *.deb

A continuación para que no nos salga el error:
    WARNING: gnome-keyring:: couldn't connect to:
debemos modificar el fichero:
        /etc/xdg/autostart/gnome-keyring-pkcs11.desktop
 modificando la linea que pone
        OnlyShowIn=
GNOME;Unity;
 por 
  
        OnlyShowIn=
GNOME;Unity;Xfce;MATE;
Ahora reiniciaremos el sistema de ventana  y con toda seguridad no nos aparecerá el error.

Debemos crear  directorios:
        mkdir /var/ccpd
        mkfifo  /var/ccpd/fifo0
        mkdir /var/captmon

Terminamos con crear la impresora y configurarla:
        /usr/sbin/lpadmin -p LBP2900 -m CNCUPSLBP2900CAPTK.ppd -v ccp://localhost:59787 -E
        /usr/sbin/ccpdadmin -p LBP2900 -o /dev/usb/lp0
        /etc/init.d/ccpd restart

Existe una utilizad para confirma que todo ha ido bien:
        captstatusui -P LBP2900

Si nos sale el error :
   
*** captstatusui Socket Error ***
significa que  el demonio ccpd no está lanzado.
Para lanzarlo  teclear:
        /etc/init.d/ccpd start
Ahora volvemos a lanzar la aplicación
       
captstatusui -P LBP2900
y vemos que nos sale:
 


Puede que no salga un error de comunicaciones con la impresora.
Para eliminarlo solo tenemos que apagar y encender la impresora y nos aparecerá: Ready to Print , que nos indica que la impresora está lista para imprimir.


Reconozco que  que es bastante lioso, pero me ha llevado mucho tiempo hacerla funcionar.
Para colmo aparece una segunda impresora llamada 
LBP2900-2, esta impresora no funciona ni tiene utilidad.


Saludos.
JUAN GALAZ

Bibliografía:
http://www.unixmen.com/installation-canon-lbp2900-on-linux-2/
http://radu.cotescu.com/how-to-install-canon-lbp-printers-in-ubuntu/#comments
https://help.ubuntu.com/community/CanonCaptDrv190?action=show&redirect=HardwareSupportComponentsPrinters%2FCanonPrinters%2FCanon_LBP_2900
http://ubuntuforums.org/showthread.php?t=1982917


13-076-2013

sábado, 11 de mayo de 2013

Configurar Canon LBP2900 para Linux -Debian7 “Wheezy”

Configurar Canon LBP2900 para Linux -Debian7 “Wheezy”
Recien instalado Debian7 me he vuelto a encontrar la necesidad de instalar los driver de mi impresora Canon LBP2900, que como siempre no viene de serie en linux.
Lo primero es ir a la casa y bajar el driver:
    Linux_CAPT_PrinterDriver_V250_uk_EN.tar.gz
Descomprime el fichero y sigue las instrucciones que vienen, en mi caso son las siguientes:

 dpkg -i *.deb

#Desempaquetando cndrvcups-capt (de cndrvcups-capt_2.50-1_i386.deb) ...
#Seleccionando el paquete cndrvcups-common previamente no seleccionado.
#Desempaquetando cndrvcups-common (de cndrvcups-common_2.50-1_i386.deb) ...
#Configurando cndrvcups-common (2.50-1) ...
#Configurando cndrvcups-capt (2.50-1) ...

/etc/init.d/cupsys restart
/etc/init.d/cups restart
/etc/init.d/ccpd restart
lpadmin -p LBP2900 -m CNCUPSLBP2900CAPTK.ppd -v ccp://localhost:59687 -E
ccpdadmin -p LBP2900 -o /dev/usb/lp0
/etc/init.d/ccpd restart
 


Comento que la configuración de las impresoras desde el panel de Gnome3 es lamentable, por lo cual deberemos entrar en un navegador y configurar la impresora desde el servidor cups.

http://localhost:631/
 
Un saludo
Juan Galaz
12-05-2013

miércoles, 10 de abril de 2013

Desoldar componentes para reciclar.

Desoldar componentes para reciclar.
xsetaseta@gmail.com

En este artículo voy a enseñar los métodos utilizados por mi para desoldar componentes electrónicos.
El primer método utilizado es mediante soldador. La mayoría de los soldadores tienen una punta pequeña utilizada para soldar, pero si se quiere desoldar mas de una patilla, resulta un tanto difícil soltar el componente.
Para solucionar este problema, he aplastado una barra de cobre, pudiendo de esta manera desoldar varios pin a la vez.



La segunda forma para desoldar componentes, ya sean smd o normales, es utilizando un flujo de aire caliente.
Si tenemos presupuesto se podría utilizar una unidad de soldadura de aire caliente. Pero si nuestro presupuesto es un tanto escaso, como es mi caso, utilizo un decapador de aire caliente para pinturas. Debemos tener cuidado de la cantidad de aire caliente que damos a los componentes para no estropearlos. En muchos casos la mezcla del estaño es mala y debemos dar mucho calor, con lo cual se estropea el componente.

Decapador en acción.


Componentes desoldados

El último método usado para desoldar componentes es el de utilizar una vitrocerámica.
Para no estropear la vitrocerámica, la mujer te puede matar, coloco una tapa de cazuela de vidrio pyrex, resistente al calor. Dejando durante un tiempo la placa con los componentes, sobre el vidrio pyrex, hasta que el estaño comienza a derretirse. Luego mediante una pinza o utensilio al efecto, se van soltando los componentes.
He visto en otras páginas web, que utilizan estufas infrarrojas para desoldar componentes.



Placa de componentes sobre la vitrocerámica


Componentes desoldados

Un saludo
JUAN GALAZ