49

Tutorial de Raspberry Pi GPIO y Python

servo_serialNota: no testeado en Raspberry Pi 3

Saludos, humanos de la blogosfera. Hoy vamos a configurar los pines GPIO de Raspberry Pi. Para ello instalaremos la librería RPi.GPIO y utilizaremos Python para programar las salidas de los pines.  Así que poned un poco de música y manos a la obra.

Antes de nada, ¿qué son los pines GPIO? Lo que distingue Raspberry Pi de otros Ordenadores de Placa reducida (es decir, un ordenador entero encima de una placa) es la posibilidad de utilizar los pines GPIO para controlar sensores, servomotores y dispositivos externos. Funcionan de forma similar a los pines de Arduino.

Además contamos con la librería RPi.GPIO que nos permite utilizar Python para configurarlos rápidamente

localizacion

Sin embargo, hay que tener bastante cuidado al trabajar y manipular los pines GPIO. Los chips y circuitos de nuestra Raspberry Pi funcionan con 3.3 voltios. Si conectamos un sensor que envíe señal a 5V a través de los GPIO es probable que después nuestra Raspberry Pi sólo sirva como pisapapeles. O como ambientador con aroma a quemado. Por esta razón hay que tener sumo cuidado y leernos las instrucciones y la documentación de todo lo que vayamos a conectar.

En cuánto a la enumeración de los pines… bueno, alguien estaba de resaca cuando se etiquetaron. Estan algo desordenados y además cada pin tiene dos nombres, según su sistema de numeración: BCM y Board. He aquí un esquema con sus equivalencias.

diagrama_pines

Quizás parezca obvio, pero el pin 1 será el que esté más cerca de la targeta SD.

Para este tutorial necesitaremos:

  1. Una Raspberry Pi, en mi caso modelo B. Debería tener Raspbian instalado o alguna versión de Linux.
  2. Cable Ethernet o antena WiFi
  3. Adaptador de corriente
  4. LED, pulsadores y resistencia de 150 ohmios aproximadamente.
  5. Periféricos (cable, ratón, pantalla…)

Personalmente prefiero ahorrarme los periféricos conectando la Raspberry y entrando por SSH desde otro ordenador. Si deseas saber cómo, nuestro editor Nano hizo un tutorial sobre el tema hace ya algunos meses.

Instalación de RPi.GPIO

El primer paso será comprobar que tengamos la librería RPi.GPIO instalada y en la última versión, la 0.5.4.

-Abrir la Terminal y escribir:

sudo python

-Dentro de la consola de Python comprobamos la versión

import RPi.GPIO
RPi.GPIO.VERSION

-Si nuestra versión es inferior a la 0.5.4 la actualizamos (y ya de paso todos los paquetes del sistema que lo requieran)

sudo apt-get update
sudo apt-get upgrade

-Si no tenemos instalada RPi.GPIO, la descargamos e instalamos. Estos comandos son para la instalar version actual, es posible que si sigues este tutorial en un futuro debas cambiar el número de la versión.

wget https://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.5.4.tar.gz
tar zxf RPi.GPIO-0.5.4.tar.gz
cd RPi.GPIO-0.5.4.tar.gz
sudo python setup.py install

 

Interactuar con los pines

Ahora vamos a comprovar que todo funcione. Para ello, escribiremos un sencillo código con Python que encenderá y apagará un LED.

-Montamos el circuito:

raspberry_scheme

-Creamos el archivo blink.py con nuestro editor de texto favorito:

nano blink.py

-Copiamos el código:

#EJEMPLO DE BLINKING CON RASPBERRY PI
#Escrito por Gl4r3
import RPi.GPIO as GPIO #importamos la libreria y cambiamos su nombre por "GPIO"
import time #necesario para los delays

#establecemos el sistema de numeracion que queramos, en mi caso BCM
GPIO.setmode(GPIO.BCM)

#configuramos el pin GPIO17 como una salida
GPIO.setup(17, GPIO.OUT)

#encendemos y apagamos el led 5 veces
for i in range(0,5):

    GPIO.output(17, GPIO.HIGH)
    time.sleep(1)
    GPIO.output(17, GPIO.LOW)
    time.sleep(1)

GPIO.cleanup()  #devuelve los pines a su estado inicial

-Ejecutar el programa

sudo python blink.py

Si está todo bien conectado, deberíamos ver como se apaga i se enciende el LED en intervalos de un segundo. Esto significa que la librería funciona correctamente y está todo preparado para realizar proyectos de mayor complejidad.

Gracias por leer mi tutorial, si tienes alguna duda puedes escribir en los comentarios o en nuestra página de Facebook. Y no dudes en suscribirte y a darle like a nuestra página de Facebook. Te querremos mucho :3

Gl4r3

Brillante, luminosa y cegadora a veces, Glare es tan artista como técnica. Le encanta dar rienda suelta a sus módulos de imaginación y desdibujar los ya de por si delgados límites que separan el mundo de la electrónica y el arte. Su mayor creación hasta la fecha es un instrumento capaz de convertir los colores y la luz en música. Cuándo sus circuitos no están trabajando en una nueva obra electrónica, le gusta dedicar sus ciclos a la lectura o a documentar sus invenciones para beneficio de los humanos. Sus artilugios favoritos son aquellos que combinan una funcionalidad práctica con un diseño elegante y artístico.

Antes de comentar, por favor, lee las Normas

49 Comentarios en "Tutorial de Raspberry Pi GPIO y Python"

avatar
Ordenar por:   más nuevos primero | más antiguos primero
Nestor Flores
Humano

hola yo hice este proyecto con la raspberry pi 3 y en el codigo no me lanza ningu tipo de error en python 3 y luego le doy run al archivo sudo python blink.py y no sucede nada en el led y el circuito ya esta todo bien conectado y no se porque no funciona

Jaime
Humano

Hola, estoy haciendo un proyecto con Raspberry pi 3 Model B y estamos trabajando con sensores Final de carrera, pero sin probeta para pruebas, osea conectándolos directo a la placa desde el conector, consulta tienes algo por ahy. saludos y gracias.

aNtINIKOLABOMBA
Humano

Hola, estoy haciendo un trabajo con raspberry pi 3 y queremos conectarle una camara al raspberry y que saque fotos, donde podria mirara una ayuda.

trackback

[…] Origen: Tutorial de Raspberry Pi GPIO y Python – robologs […]

Roberto
Humano

hola excelente tutorial quisiera saber la posibilidad de tomar un curso con ustedes gracias

Geovanny
Humano

Hola una consulta si quiero que este archivo blindada.py se ejecute cuando arranca el raspberry y se vea prender y apagar los led que tengo que hacer, me puedes ayudar
Gracias.

Ignacio
Humano

Buenas tardes,
Mi pregunta es, como enciendo y apago a distancia una luz con raspberry pi 3, con los anteriores no tengo problema

Gracias

carlosV
Humano

hola, soy nuevo en raspberrypi, quisiera saber que es un pin PWM para que sirve y donde lo puedo encontrar en la distribución de los gpio mostradas anteriormente.
Gracias

scanto
Humano

hola, tengo una duda. Estoy haciendo un proyecto de detección de placas vehiculares con Raspberry; tengo el programa en python del reconocimiento de cada caracter, que carga desde una imagen guardada en la memoria; tengo Otro programa en python que guarda una imagen (presionando una tecla determinada) desde una camara web. Mi duda es, cómo puedo hacer para que en una sola ejecución ‘guarde la imagen’ de la camara web y ‘haga el procesamiento de placa’? ( actualmente los dos se ejecutan por separado)

frann
Humano

yo tengo una duda porque hay que conectarlos al pin gpio de 3.3v y no al de 5v

N4n0
Admin

Lo pone en el tutorial, porque Raspberry Pi funciona con nivel lógico de 3.3v y un sensor de 5v podría dañar los GPIO.

Juan
Humano

Por que cuando enciendo un led y dejo de correr el programa en python este queda encendido? como puedo solucionar este problema?

micronet
Humano

una consulta, cualquier pin lo puedo configurar como uart, es que yo tengo una pantalla wareshare y este ocupa el puerto uart, pero me sobran algunos pines gpio! y quisiera usar un par de estos pines como puerto UART

Jose Carlos
Humano

Hola una pregunta. queria saber si es posible controlar tres servo motores de manera simultanea, ya que e visto que las salidas del GPIO solo cuentan con una salida de PWM, ademas que necesito realizar otras tareas simultanes

N4n0
Admin

Se puede pero es complicado. Será mejor que uses una shield de servomotores, como el Adafruit Servo Chanel (u otro parecido).

gina ospina
Humano

cuantos sensores puedo conectar a la raspberry pi 3

Dario Martin
Humano

Hola como estan? los comandos GPIO.setmode(GPIO.BCM) y GPIO.cleanup() me arrojan error.
con GPIO.cleanup() es este: Traceback (most recent call last):
File “”, line 1, in
NameError: name ‘GPIO’ is not defined
y con GPIO.setmode() es este: Traceback (most recent call last):
File “”, line 1, in
AttributeError: ‘module’ object has no attribute ‘setmode’
Tengo instalado la version RPi, 0.6.2

OeR2
Humano

estas importando RPi.GPIO?
import RPi.GPIO as GPIO

Teodoro Cordero
Humano

Buenas noches, quiero que me den un consejo, yo deseo un prototipo para crear proyectos electrónicos, qué me recomiendan. Un PCDuino o un Raspberry. Desde ya gracias por su gentil ayuda

trackback

[…] Tutorial de Raspberry Pi GPIO y Python I […]

Diego Ricaurte
Humano

Hola, buenas tardes, estoy haciendo un proyecto en el cual necesito programar con Python. La idea es que al pulsar unos botones (6), dependiendo de cuales presione, necesito obtener una salida en audio, no puedo tener monitores. Obvio, esta permitido el uso de los puertos GPIO, no se como iniciar a hacer el proyecto ya que necesito que el programa se ejecute solo y no se como hacer para que esto pase y quede listo para el uso después de encendida la raspberry si alguien tiene una idea seria de gran ayuda, muchas gracias.

Jose Barahona
Humano

podrias dejar un script en bash que se ejecute al inicio del sistema en rc.local de ahi con lo que decis podrias usar la libreria de WebIOPi, suerte.

Alexis Mionis
Humano

preparando la Raspberry para dar los primeros pasos. La idea es complementarlo con los sistemas de alarma para que el cliente pueda ver su estado por internet. Si alguien sabe de algun tuto que por favor me lo diga. GRACIAS A TODOS MUY BUENO EL FORO

Pacomm
Humano

Hola, estoy buscando información para hacer algo parecido con mi central de alarma. ¿Encontraste algún tutorial que sirva?

carlos
Humano

Gracias por el tutorial, funciona perfectamente.
Me gustaría ejecutarlo desde el escritorio, pero al darle permisos de ejecución y hacer doble clic no hace nada ¿?
Alguna idea de que puede pasar?

Moreta82
Humano

El esquema del circuito esta mal, ya que has conectado el GPIO17 con la resistencia horizontalmente, y de esa manera no hay conexion. Deberia de conectarse en su misma vertical

rumaldo
Humano

Si está bien el circuito

Moreta82
Humano

Claro, despues de corregirlo esta bien. 😉

continum4
Humano

Muy bueno el artículo y lo de la selección de la música, una pasada macho. 10 puntos.

robbyg
Humano

que buena idea complementar el aprendizaje con Shubert de fondo

trackback

[…] Tutorial de Raspberry Pi GPIO y Python I […]

Juan
Humano

Por que cuando enciendo un led y dejo de correr el programa en python este queda encendido? como puedo solucionar este problema?

Jose
Humano

Escribiste el “GPIO.cleanup()” al final del programa?

wpDiscuz