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/