Control de circuitos eléctricos con Raspberry Pi – I : Python
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í.
Comentarios
Publicar un comentario