sábado, 18 de marzo de 2017

Controlando un LED con Raspberry Pi en Python con GPIO

La Raspberry Pi que voy a utilizar es el Modelo B:

Led 5 volt, resistencia para ese led y un protoboard, solderless ò breadboard MB-102, una tarjeta SD un cable de red para conectar al modem/router y un cargador de celular USB.

El sistema operativo que tengo instalado es Kali Linux, pero puede hacerce con cualquier otro, si quieren istalarle este, les dejo acá el link: https://redes-seguridad.blogspot.com.ar/2017/03/instalando-kali-linux-en-raspberry-pi.html


La conexión que hacemos será lo siguiente:


Para que se entienda mejor les hice el planito en paint:



Ahora explico la conexión:

1) El pin identificado con la letra A del GPIO del raspberry pi (contamos 6 pines de derecha a izquierda de la fila de arriba) y lo conectamos a la letra B en naranja (en el protoboard tipo batalla naval sería la fila B y la columna 20),

2) El pin identificado con la letra C del GPIO del raspberry pi (contamos 3 pines de derecha a izquierda de la fila de abajo) y lo conectamos en la letra D (en el protoboard tipo batalla naval sería fila A y columna 31).

3) Para conectar el LED tenemos que tener en cuenta que tiene un conector más largo que el otro. El lado más corto lo conectamos a la derecha E (en el protoboard tipo batalla naval sería fila C y columna 31) y el lado más largo del LED a la izquierda conectado al F (en el protoboard tipo batalla naval sería fila C y columna 29)

4) Para conectar la resistencia la conectamos en el G (en el protoboard tipo batalla naval sería fila D y columna 20) y en el H (en el protoboard tipo batalla naval sería fila D y columna 29).


Instalación de Python y GPIO en Kali Linux:

root@kali:~# apt-get install python-dev python3-dev gcc
root@kali:/home# wget https://pypi.python.org/packages/e2/58/6e1b775606da6439fa3fd1550e7f714ac62aa75e162eed29dbec684ecb3e/RPi.GPIO-0.6.3.tar.gz 
root@kali:/home# tar xzvf RPi.GPIO-0.6.3.tar.gz 
root@kali:/home# cd RPi.GPIO-0.6.3 
root@kali:/home/RPi.GPIO-0.6.3# python setup.py install 
root@kali:~# python
Python 2.7.13 (default, Jan 19 2017, 14:48:08)
[GCC 6.3.0 20170118] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import RPi.GPIO

Armamos un python para encender y otro para apagar el LED:

root@kali:/home# vi prender_led.py
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17,1)

En la ultima linea le indicamos con el 1 que lo enciende, si lo cambiamos por cero lo apaga:

root@kali:/home# vi apagar_led.py
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17,0)

Prendemos el led ejecutando el python:
root@kali:/home# python prender_led.py

Apagamos el led ejecutando el otro python:
root@kali:/home# python apagar_led.py


Armamos otro script que recibe un parametro, si es 1 prende y si es 0 apaga:

root@kali:/home# vi prende_Con_1_Apaga_con_0.py
import RPi.GPIO as GPIO
import sys
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
LED=17
print sys.argv[1]
ESTADO=int(sys.argv[1])
GPIO.setup(LED, GPIO.OUT)
GPIO.setwarnings(False)
if ESTADO == 0:
        print('Apagando el LED')
        GPIO.output(LED,ESTADO)
else:
        print('Prendiendo el LED')
        ESTADO = 1;
        GPIO.output(LED,ESTADO)

Prendemos:
root@kali:/home# python prende_Con_1_Apaga_con_0.py 1

Apagamos:
root@kali:/home# python prende_Con_1_Apaga_con_0.py 1

Hacerlo titilar dentro de un while infinito:

root@kali:/home# vi titila.py
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)

while 1:
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,1)
        time.sleep(0.5)

        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,0)
        time.sleep(0.5)


SOS con codigo Morse:

root@kali:/home# vi SOS.py
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
while 1:
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,1)
        time.sleep(0.5)
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,0)
        time.sleep(0.5)
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,1)
        time.sleep(0.5)
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,0)
        time.sleep(0.5)
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,1)
        time.sleep(0.5)
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,0)
        time.sleep(0.5)
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,1)
        time.sleep(2)
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,0)
        time.sleep(0.5)
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,1)
        time.sleep(2)
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,0)
        time.sleep(0.5)
        GPIO.setup(17,GPIO.OUT)
        GPIO.output(17,1)
        time.sleep(2)

Video prediendo y apagando los LEDs:


Y el Santulon jugando con el nuevo chiche:



FUENTES:

https://www.raspberrypi.org
https://geekytheory.com
http://rsppi.blogspot.com.ar/
http://robologs.net/
http://www.aprendeprogramacion.net/

2 comentarios:

Nicolas Morono dijo...

Hacete macho y cómprate un Arduino UNO.

Hernán Tirado dijo...

Jajaja eso si que es rudeza. Recien veo este comentario.. Un poco tarde. Ya debe existir el Arduino CIEN. XD