Podemos hacer uso de la biblioteca de GPIO para Python, conectar sensores digitales y tomar acciones de acuerdo al estado de estos sensores.
El siguiente tutorial nos muestra como instalar la biblioteca GPIO para Python y como conectar un sensor de presencia para mostrar una salida por pantalla cuando se active.
Materiales
- Fuente de poder 5V @ 2A
- Acceso a Inet
- Protoboard
- Conector para Raspberry Pi
- Sensor de presencia rev. A. mas información en este link
Sobre el Hardware
Los puertos GPIO (General Purpose Input Output) se encuentran junto a la conector de la tarjeta SD, y están etiquetados con P1. Es un puerto de 26 pines. La siguiente figura muestra los pines.
El sensor de presencia o sensor PIR (Passive Infra-Red) es un equipo piroeléctrico que detecta movimiento por la variación en los niveles de de infrarrojo (calor) que emiten los objetos cercanos. Cuando se detecta movimiento. el sensor produce una señal de nivel alto en el pin de salida. Este modelo cuenta con un jumper que permite cambiar la operacion del pin de salida. Nosotros dejamos el jumper en la posición H
La conexión es la siguiente, se indican los pines en la Raspberry Pi
PIN 1 a +
PIN 6 a GND
PIN 26 a Salida
El conector de la Raspberry Pi va al protoboard y se usan cables para conectar a los pines del sensor.
Instalando Software
Instalamos la biblioteca de GPIO para Python usando los siguientes comandos
sudo wget https://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.5.0a.tar.gz
tar zxf RPi.GPIO-0.5.0a.tar.gz
cd RPi.GPIO-0.5.0a
sudo python setup.py install
Esta biblioteca ya la habíamos usado antes en el artículo de hola mundo pero esta versión de la biblioteca es más actualizada.
Para verificar usamos los siguientes comandos
sudo python
Python 2.7.3 (default, Jan 13 2013, 11:20:46)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import RPi.GPIO as GPIO
>>> GPIO.RPI_REVISION
2
>>> GPIO.VERSION
'0.5.0a'
Codificando en Python
Para importar la biblioteca usamos
import RPi.GPIO as GPIO
Para definir la nomenclatura a usar
GPIO.setmode(GPIO.BCM)
este comando significa que usamos la numeracion original del chip BroadCom
Como ejemplo muy básico de esto es indicar por pantalla si detecta o no una presencia. Usamos el siguiente comando
sudo nano PIR_demo.py
Para insertar el código que se muestra a continuación
# Basic testing on presence sensor
#
# Author : Manuel Carrasco
# Date : 12/05/2013
# Import required Python libraries
import time
import RPi.GPIO as GPIO
# Use BCM GPIO references
# instead of physical pin numbers
GPIO.setmode(GPIO.BCM)
# Define GPIO to use on Pi
GPIO_PIR = 7
print "PIR Module basic test (CTRL-C to exit)"
GPIO.setwarnings(False)
# Set pin as input
GPIO.setup(GPIO_PIR,GPIO.IN)
try:
print "Waiting for PIR to settle ..."
time.sleep(1)
print " Ready"
# Loop until users quits with CTRL-C
while True :
if GPIO.input(GPIO_PIR):
print("Se detecta presencia")
time.sleep(0.5)
else :
print("No hay presencia")
time.sleep(0.5)
except KeyboardInterrupt:
print " Quit"
# Reset GPIO settings
GPIO.cleanup()
Para funcionar necesita el siguiente comando
sudo python PIR_demo.py
Obviamente hay muchas variaciones posibles. Se pueden tomar acciones u obtener información de otros sensores.
Bibliografia
http://www.raspberrypi-spy.co.uk/2013/01/cheap-pir-sensors-and-the-raspberry-pi-part-1/
https://code.google.com/p/raspberry-gpio-python/wiki/Main
Gracias por la informacion Manuel, solo una pregunta que S.O. usas para la raspberry pi, y la libreria funciona en Python 3.3.2 de antemano gracias.
Estimado,
Nosotros usamos la distro Occidentalis 0.2 disponible en http://www.adafruit.com es una variante de las versiones oficiales pero con los drivers listos para trabajar.
Hasta ahora no hemos usado el código del artículo con Python 3.x
Saludos
¡Hola!
En primer lugar, enhorabuena por la idea, es cojonuda!
Quería preguntarte sobre el sensor PIR, es que en la explicación nombras el link pero no te lleva a ningún sitio.
¿Sería posible arreglarlo o decir el link?
¡Muchas gracias y un saludo!
Link corregido, muchas gracias por el aviso
Saludos
Manuel
Disculpa, sabes cuantos sensores puedo conectar a la vez en la Raspberry???
Estimado, los sensores se conectan a los puertos GPIO, modificando la configuracion de tu raspberry pi puedes llegar a controlar 17 sensores (puertos GPIO).
Saludos