Encendiendo y apagando un LED

Tu Raspberry Pi puede controlar dispositivos externos usando sus GPIO. Aquí te enseñamos cómo. 

Una Raspberry Pi controlando un grupo de luces LED

Los GPIO

La diferencia más grande entre una Raspberry Pi y otras computadoras es la presencia de sus pines GPIO – General Purpose Input Output. Esos pines que se ven a un lado de la placa son conectores de uso general que pueden servir para enviar o recibir señales de módulos electrónicos externos. Pueden servir para conectarse a sensores de todo tipo, y para controlar motores, luces y cualquier otro dispositivo electrónico que pueda usar señales digitales. Funcionan a 3.3 Voltios (cuidado al interconectar tu Raspberry Pi con otros dispositivos que usen otros voltajes) y se pueden controlar desde muchos lenguajes de programación.

Los GPIO de tu Raspberry Pi tienen diferentes funciones, pero la que nos interesa ahora es la de funcionar como una salida.

Numeración y funciones de los GPIO de una Raspberry Pi

LED

Un LED es un componente electrónico capaz de conducir la corriente eléctrica en un solo sentido. Cuando lo hace, emite luz. Por eso su nombre: Light Emitting Diode, LED o Diodo Emisor de Luz.

Un LED tiene 2 conectores, a modo de “patitas”. La “patita” larga o “ánodo” debe ir siempre conectada al lado positivo del circuito. La patita corta o “cátodo” debe ir conectada a la “tierra” o “ground” del circuito.

Un LED

Un LED suele ser algo delicado. Si se le conecta directamente a una fuente de voltaje es probable que no resista la intensidad de la corriente y se queme. Para controlar el flujo de electrones que ingresa al LED deberemos usar un componente conocido como “resistencia”. Las resistencias que usaremos en este proyecto son fáciles de conseguir en tiendas de electrónica y. son sumamente económicas. El valor que necesitamos es de 330 Ohm.

Una resistencia de 330 Ohm

El circuito

Vamos a conectarla resistencia y el LED a la Raspberry Pi. Usemos la imagen siguiente para guiarnos.

¡CUIDADO!

Una mala conexión puede causar daños irreparables a tu Raspberry Pi. Recomendamos siempre hacer las conexiones y desconexiones con la Raspberry apagada, y sólo encenderla luego de haber verificado que todo está conectado exactamente como se indica en las imágenes.

Circuito para controlar un LED desde la Raspberry Pi. Mucho ojo con los pines que estamos usando.

Usaremos un cable “de patch” tipo “hembra-hembra” para conectar el pin 6 (Ground) de la Raspberry Pi a la patita corta (cátodo) del LED. Usando otro cable conectamos el ánodo del LED a la resistencia de 330 Ohm. Finalmente usaremos un tercer cable para conectar el otro extremo de la resistencia al pín 11 de la Raspberry Pi, el pin cuyo nombre “oficial” es el GPIO17.

Podemos usar algo de cinta adhesiva para fijar nuestro circuito a la mesa y evitar que se desconecte.

Cable de patch Hembra - Hembra
Circuito completado y fijado con cinta adhesiva
Detalle de las conexiones en la Raspberry Pi

Listo. Ahora necesitaremos algo de código para controlar el LED.

El programa

Raspbian viene con una variedad de editores de código. Usaremos Mu, un editor que nos permitirá escribir código en Python, un lenguaje de programación muy popular. Podemos encontrar Mu en el menú principal de Raspbian, en la sección “Programación”.

Mu

Al ejecutar Mu por primera vez aparecerá una pantalla en donde podremos elegir el modo en el que queremos trabajar. Simplemente seleccionemos “Python 3” y démosle click al botón “Ok” para continuar.

Elegimos Python 3 como el modo de operación

A continuación aparecerá el editor de código de Mu.

Aún no vamos a escribir un programa completo. Lo que haremos será usar el “REPL”, el editor que nos permite escribir código y ver sus resultados en tiempo real. Para abrir el REPL simplemente presionamos el botón REPL en la parte superior de la ventana de Mu.

El editor de Mu. Busquemos el botón REPL en la parte superior de la ventana

Se abrirá en la parte inferior del editor una sub zona con una serie de mensajes, un prompt con el mensaje “In [1]: ” y un cursor listo para que escribamos algo de código.

Listos para escribir código

Escribamos lo siguiente para indicarle a Python que queremos usar la biblioteca gpiozero y que nuestro LED está conectado al GPIO 17:

In [1]: from gpiozero import LED
In [2]: luz = LED (17)

Luego, usemos la siguiente línea para encender el LED:

In [3]: luz.on()

Y para apagarlo, podemos escribir:

In [4]: luz.off()

El LED debería haberse encendido y luego apagado. ¡Felicitaciones, hemos creado nuestro primero proyecto de computación física!

El LED encendido

Un mejor circuito

Unir los cables punto a punto está bien para un experimento rápido, pero no es lo más apropiado para circuitos más complejos. Para que nuestras conexiones sean más ordenadas vamos a usar un protoboard.

El protoboard tiene una serie de agujeros en los que podemos insertar los terminales de nuestros componentes electrónicos. Internamente los agujeros están conectados entre si, lo que permite la conexión entre las diferentes partes del circuito sin necesidad de usar cables.

En las siguientes imágenes se muestra nuestro nuevo circuito. Veamos que aun necesitamos cables para conectar el circuito a nuestra Raspberry Pi (esta vez del tipo macho-hembra), pero los componentes (LED y resistencia) ya no tienen cables entre sí. Estos se están conectando a través de las pistas internas del protoboard.

Coloquemos nuestros componentes siguiendo el nuevo circuito (de preferencia con la Raspbery Pi apagada).

Esquema del nuevo circuito. Recuerda colocar la patita larga del LED hacia el GPIO17 de la Raspberry Pi
El protoboard con los componentes montados y los cables conectados a la Raspberry Pi
Para este circuito necesitaremos cables Hembra - Macho

Los mismos pasos que seguimos antes en el REPL de Mu deberían funcionar con este nuevo circuito. Pero vamos a probar algo más – usaremos el editor de Mu, un bucle “while” y la biblioteca “sleep” para hacer que el LED titile.

  • Usemos el botón “Nuevo” para crear un editor de código vacío.
  • Luego usemos el botón “Guardar” para darle nombre a nuestro programa. Guardémoslo con el nombre “luz.py”
  • Ahora escribamos el siguiente código en el nuevo block:
from gpiozero import LED
from time import sleep

luz = LED (17)

while True:
    luz.on()
    sleep(0.2)
    luz.off()
    sleep(0.2)

(Los espacios en las últimas 4 líneas se hacen usando la  tecla TAB del teclado de la computadora).

Usemos el botón “Ejecutar” y deberíamos ver que nuestro LED titila.

Enciende... apaga... enciende... apaga... enciende...

Una vez que salgamos del trance inducido por mirar el LED podemos detener el programa usando el botón “Detener” de Mu. Luego podemos modificar el código y ver los resultados. El cambio obvio estará en el número que colocamos en los paréntesis de “sleep”. Poniendo un número mayor la pausa entre encendido y apagado del LED será mayor. Poniendo un número más pequeño… bueno, se entiende la idea.

¡Más! ¡Quiero más!

La Raspberry Pi tiene muchos GPIO. ¿Será posible usar 2 o 3 al mismo tiempo para controlar varios LEDs?

Claro que si. Modifiquemos el circuito para que se vea como en las imágenes siguientes (recordemos hacerlo con la Raspbery Pi apagada, y verificar que todo esté bien antes de volver a encenderla):

Ahora usaremos 3 GPIO: GPIO17, GPIO27 y GPIO22
Los LED y las resistencias se colocan así en el protoboard...
... y los cables se conectan de esta manera en la Raspberry Pi. Cuidado con usar los pines correctos

Ahora necesitamos que nuestro código acceda a los nuevos GPIO que estamos usando. Tal como hicimos antes:

  • Usemos el botón “Nuevo” para crear un editor de código vacío.
  • Luego usemos el botón “Guardar” para darle nombre a nuestro programa. Guardémoslo con el nombre “luz3.py”
  • Ahora escribamos el siguiente código en el nuevo block:
from gpiozero import LED
from time import sleep

luz1 = LED (22)
luz2 = LED (27)
luz3 = LED (17)

while True:
    luz1.on()
    luz2.on()
    luz3.on()
    sleep(0.5)
    luz1.off()
    luz2.off()
    luz3.off()
    sleep(0.5)

Recuerda: Los espacios en las últimas líneas se hacen usando la  tecla TAB del teclado de la computadora.

Usemos el botón “Ejecutar” y disfrutemos el show.

¿Quién podría cansarse de esto?

La secuencia de luces que mostramos al inicio del artículo se basa en la misma idea, pero es algo un poco más larga. El código es el siguiente:

from gpiozero import LED
from time import sleep

luz1 = LED (22)
luz2 = LED (27)
luz3 = LED (17)

while True:
    luz1.on()
    sleep(0.2)
    luz1.off()
    luz2.on()
    sleep(0.2)
    luz2.off()
    luz3.on()
    sleep(0.2)
    luz3.off()

Básicamente encendemos una luz, pausamos, luego apagamos la luz anterior y encendemos la siguiente, volvemos a pausar y repetimos cuantas veces sea necesario.

¡Y ya está! Hemos visto cómo una Raspberry Pi puede controlar componentes electrónicos externos a través de sus GPIO y con unas cuantas líneas de código…

¿Alguien se anima a crear el juego de luces que tenía ESE auto de ESA serie de los 80s?

via GIPHY - Esto me trae recuerdos.... y me da algunas ideas

Instalación de Raspbian

Para poder usar tu Raspberry Pi primero deberás instalarle un sistema operativo. Aquí te enseñamos cómo.

El asistente de configuración. !Si llegaste hasta él entonces todo salió bien!

Raspbian

Raspbian es el sistema operativo recomendado para realizar tareas de computación general. Está basado en Debian, una distribución de Linux, y viene con una gran cantidad de herramientas de software pre instalado que te permitirán sacarle el máximo provecho a tu Raspberry Pi desde el inicio. Los paquetes instalados incluyen herramientas de ofimática (LibreOffice), lenguajes de programación con algunos editores (Python, Scratch, Java, Mathematica, Wolfram), juegos (como Minecraft Pi), un navegador de internet (Chromium) y algunas otras herramientas.

Para descargar Raspbian nos diriginos a la página oficial de la Fundación Raspberry Pi, y en la sección “Descargas/Raspbian” encontraremos la imagen de Raspbian en sus 3 sabores: “Lite” (versión mínima, sin entorno gráfico), “with desktop”, versión con entorno gráfico y el sistema mínimo para funcionar, y “with desktop and recommended software”, versión completa, con entorno gráfico y todas las herramientas que la Fundación ha podido incluir.

Para este proyecto recomendamos descargar la versión completa, con entorno gráfico y todo el software recomendado. Es una descarga de unos 2.5 gigabytes – ¡están advertidos!

Las 3 versiones de Raspbian que podemos usar

La tarjeta micro SD

Raspberry Pi usa como medio de almacenamiento tarjetas micro SD.

¿Qué tamaño de tarjeta necesiatmos?

Si usamos la versión Lite una tarjeta pequeña, de 8 gigabytes (o incluso menos) podría ser suficiente. En nuestro caso lo mínimo que deberíamos usar es una tarjeta de 16 gigabytes. Por supuesto, una de 32 estaría mejor.

También necesitamos alguna forma de escribir datos en esa tarjeta desde una computadora (la que usaremos para grabar el sistema operativo). Algunas laptop tienen un slot para tarjetas micro SD. También podemos usar un adaptador de esos que se conectan al puerto USB de la computadora y nos permiten acceder a la micro SD.

Necesitaremos una forma de escribir datos en la tarjeta que vayamos a usar

Grabando la imagen en la tarjeta

Ya tenemos la tarjeta colocada en la computadora que usaremos para grabar el sistema operativo.. ¿Ahora qué? Bueno, podríamos simplemente copiar el archivo que hemos descargado en la tarjeta… pero no funcionaría. Ese archivo es un realidad una imagen de disco, y para pasarla a la tarjeta necesitamos un programa que sepa como hacerlo de la manera adecuada. Hay varias formas de hacer esto. Nosotros usaremos un programa llamado Balena Etcher que podemos descargar directamente se su página web. Funciona en diferentes sistemas operativos y existe hasta en versión portátil, o sea que lo podemos usar incluso sin tener que instalarlo en el sistema.

La interfaz de Balena Etcher es muy simple – ¡solo tiene 3 botones!

Balena Etcher y su interfaz minimalista están hechos para que nada pueda salir mal

El primer botón de Balena Etcher nos permite escoger la imagen del sistema operativo que queremos grabar. Funciona incluso con archivos comprimidos (.zip o .rar) así que no es necesario descomprimir el archivo que bajamos.

El segundo botón nos permite escoger la unidad en la que grabaremos el sistema operativo. Aquí hay que tener cuidado de escoger la micro SD. Si no escogemos la unidad adecuada podríamos terminar borrando la información del disco duro de nuestra computadora. De todas maneras Etcher muestra suficiente información como para que sea muy difícil equivocarse. Bastará con ver el tamaño de la unidad que estamos escogiendo. Si vamos a usar una tarjeta de 32 gigabytes entonces no deberíamos escoger la unidad de 500 gigabytes, ¿cierto?

El tercer botón sirve para llevar a cabo la grabación. Una vez que estemos totalmente seguros de haber escogido bien la imagen y la unidad de destino, pulsamos “Flash” y esperamos. Dependiendo de la clase de la tarjeta el proceso puede durar más o menos. Una vez terminada la grabación y la verificación de datos que siempre hace Balena Etcher, la tarjeta estará lista para retirarse de la computadora y colocarse en la Raspberry Pi.

(Si estás usando Windows para grabar Raspbian, al terminar la grabación podría salir un mensaje indicando que la tarjeta no tiene formato. No hay ningún problema aquí. Lo que sucede es que Windows no puede leer el formato de archivos de Linux, y se queja por eso.)

Ya solo queda colocar la tarjeta en la Raspberry Pi, conectar un monitor, teclado, mouse y la fuente de poder.

Listo. Conecta un monitor, un mouse, un teclado y la fuente de poder (oficial, si es posible, para no tener problemas de falta de energía) y tu Raspberry Pi se encenderá y luego de unos instantes verás el asistente de configuración inicial. Sigue las instrucciones que aparecen en pantalla y tu sistema operativo estará listo para comenzar tu aventura maker.

¿Que vas a crear ahora?