Vamos a ver ahora un ejemplo sencillo de circuito eléctrico controlado por una Raspberry Pi, para ello necesitamos:
- El circuito a controlar (En nuestro ejemplo un LED y una resistencia en serie), conectando al positivo del LED (conector largo) el PIN 18 de GPIO y un extremo de la resistencia al PIN 6 de GPIO de la Raspberry Pi 3 (El modelo actual es el Raspberry Pi 4; 2022) el otro extremo de la resistencia al otro extremo del LED.
- La Raspberry PI con su conector GPIO
- Un programa, por ejemplo escrito en Python
Primero debemos comprobar que tenemos las librerías de RPi.GPIO de Python, para ellos desde el terminal debemos ejecutar:
pi@raspberrypi:~ $ pip show RPI.GPIO Name: RPi.GPIO Version: 0.6.3 Summary: A module to control Raspberry Pi GPIO channels Home-page: http://sourceforge.net/projects/raspberry-gpio-python/ Author: Ben Croston Author-email: ben@croston.org License: MIT Location: /usr/lib/python2.7/dist-packages Requires:
En caso de que no esté la libreria RPi.GPIO en el Raspbian deb instalarlo de forma manual (descarga, descomprimir e instalr):
- Descargar la ultima versión de https://sourceforge.net/projects/raspberry-gpio-python en nuestro caso la 0.6.3 RPi.GPIO-0.6.3.tar.gz
- Descomprimir el archivo comprimido con doble click
- Comprobar que disponemos del paquete python-dev y en caso contrario instalarlo con: sudo apt-get install python-dev
- Ejecutar la instalación desde el directorio descomprimido: cd Downloads/Rpi.GPIO-0.6.3 y sudo python setup.py install
o de forma automática usando los comandos de PyPI – the Python Package Index con el comando (la recomendable):
- pip install RPi.GPIO
El programa en Python propuesto es el siguiente:
# led.py
# Programa que enciende un LED 1s
#
# Importa librerias (completan los comandos Phyton)
# si no puede, da error (Es posible que no esté instalada)
# https://pypi.python.org/pypi/RPi.GPIO
try:
import RPi.GPIO as GPIO
print("GPIO.RPI_INFO = " + str(GPIO.RPI_INFO))
print("GPIO.VERSION = " + str(GPIO.VERSION))
except RuntimeError:
print("Error importando RPi.GPIO")
try:
import time
except RuntimeError:
print("Error importando RPi.GPIO")
# GPIO: Ajuste de los nombres de GPIO: BOARD ó BCM
GPIO.setmode(GPIO.BCM)
# GPIO: Ajuste mensajes de warning a OFF
# (avisos de otros programas trabajando con GPIO)
GPIO.setwarnings(False)
# GPIO:El PIN 18 se define como salida
GPIO.setup(18,GPIO.OUT)
# PYTHON: mensaje a consola
print ("LED on")
# GPIO: El PIN 18 se activa/enciende con 3.3V
GPIO.output(18,GPIO.HIGH)
# TIME: espera de 1s
time.sleep(2)
print ("LED off")
#GPIO: El PIN 18 se desactiva/apaga
GPIO.output(18,GPIO.LOW)
# borrar todos los ajustes antes de terminar
GPIO.cleanup()Si quiere que el LED parpadee varias veces puede hacer algo como:
contador = 0
while contador < 5:
print ("LED on")
# GPIO: El PIN 18 se activa/enciende con 3.3V
GPIO.output(18,GPIO.HIGH)
# TIME: espera encendido de 1s
time.sleep(1)
print ("LED off")
#GPIO: El PIN 18 se desactiva/apaga
GPIO.output(18,GPIO.LOW)
# TIME: espera apagado 1s
time.sleep(1)
contador += 1
# borrar todos los ajustes antes de terminar
GPIO.cleanup()Si quiere hacer que dos LEDs parpadeen como las luces de una ambulancia puede modificar el código:
# GPIO:Los PIN 18 y 23 se definen como salidas en forma de lista
Lista_canales = [18,23]
GPIO.setup(Lista_canales,GPIO.OUT)
#Bucle que se repite 5 veces
contador = 0
while contador < 5:
print ("Ni")
# GPIO: canales 18 / 23 se activa/desactiva
GPIO.output(Lista_canales,(GPIO.HIGH,GPIO.LOW))
# TIME: espera encendido de 1s
time.sleep(1)
print ("No")
#GPIO: canales 18 / 23 se desactiva/ activa
GPIO.output(Lista_canales,(GPIO.LOW,GPIO.HIGH))
# TIME: espera apagado 1s
time.sleep(1)
contador += 1
# borrar todos los ajustes antes de terminar
GPIO.cleanup()Más información sobre la sintaxis de los comandos de la librería Python GPIO los puede encontrar aquí y un articulo más detallado sobre el proyecto de encender un led con Python en Raspberry aquí.
No hay comentarios:
Publicar un comentario