Ejercicio No. 1 – Control de un LED conectado al puerto GPIO de la Raspberry Pi

Cuando comenzamos a trabajar con sistemas embebidos, uno de los ejercicios más importantes no es el más complejo, sino el más fundamental: lograr que el software controle directamente el hardware.

En el mundo de los microcontroladores este ejercicio se conoce tradicionalmente como Blink. En el caso de la Raspberry Pi, que ejecuta un sistema operativo completo, el ejercicio adquiere un valor especial porque introduce al estudiante en la interacción entre:

  • Sistema operativo Linux
  • Librerías de acceso a hardware
  • Pines GPIO del procesador
  • Lenguajes de programación de alto nivel como Python

Este primer programa representa el punto de partida para todo diseñador de sistemas embebidos, ya que demuestra cómo un software puede modificar el estado eléctrico de un pin físico.


Objetivo del ejercicio

El objetivo de este programa es controlar el encendido y apagado de un LED conectado a un pin GPIO de la Raspberry Pi.

Durante este ejercicio aprenderemos conceptos fundamentales:

  1. Configuración del sistema de numeración de pines GPIO.
  2. Declaración de un pin como salida digital.
  3. Escritura de niveles lógicos HIGH y LOW.
  4. Generación de retardos utilizando la librería time.
  5. Liberación correcta de los recursos GPIO al finalizar el programa.

Aunque el ejemplo parece sencillo, los mismos principios se utilizan posteriormente para controlar:

  • motores
  • sensores
  • buses de comunicación
  • sistemas IoT
  • robots
  • sistemas de adquisición de datos

Funcionamiento del programa

El comportamiento del sistema es muy simple:

  1. El LED se enciende.
  2. El sistema espera 1 segundo.
  3. El LED se apaga.
  4. El sistema espera 1 segundo.

Este ciclo se repite indefinidamente hasta que el usuario presiona:

CTRL + C

para finalizar la ejecución.

Este mecanismo introduce también un concepto importante en sistemas embebidos bajo Linux: la interrupción del programa por teclado.


Arquitectura básica del programa

El código está dividido en varias secciones estructuradas que facilitan su comprensión.

1. Importación de librerías

La librería principal utilizada es:

RPi.GPIO

Esta librería permite acceder directamente a los pines del procesador Broadcom de la Raspberry Pi.

También utilizamos la librería estándar:

time

para generar retardos.


2. Definición del pin

El LED se conecta al GPIO 17 del procesador.

Esto se define en el código como una variable para facilitar la reutilización del programa en ejercicios posteriores.


3. Configuración del sistema GPIO

Antes de usar los pines es necesario configurar:

El modo de numeración

En este caso utilizamos el modo:

BCM

que corresponde a la numeración interna del procesador Broadcom.

Esto es importante porque existen dos esquemas de numeración:

  • BOARD → numeración física del conector
  • BCM → numeración interna del chip

En proyectos profesionales normalmente se utiliza BCM.


4. Configuración del pin como salida

El pin del LED se declara como:

GPIO.setup(pin_led, GPIO.OUT)

Esto significa que el programa controlará el voltaje del pin.


5. Bucle principal

En Raspberry Pi no existe una función loop() como en Arduino.

Por esta razón utilizamos un bucle infinito:

while True:

Dentro de este bucle se alternan los estados del pin:

GPIO.HIGH
GPIO.LOW

6. Manejo de interrupción del teclado

El programa utiliza la estructura:

try / except / finally

Esto permite capturar la interrupción generada por el usuario cuando presiona:

CTRL + C

Es una práctica profesional muy importante cuando se trabaja con hardware.


7. Liberación de recursos

Antes de terminar el programa se ejecuta:

GPIO.cleanup()

Esta instrucción devuelve los pines GPIO a su estado inicial.

Esto evita problemas cuando se ejecutan múltiples programas consecutivos.


Diagrama conceptual del sistema

El hardware necesario para este ejercicio es mínimo:

Componentes

  • Raspberry Pi
  • 1 LED
  • 1 resistencia (220 Ω – 330 Ω)
  • cables jumper
  • protoboard

Conexión

GPIO17  ─── Resistencia ─── LED ─── GND

Repositorio del proyecto

Puedes descargar el código completo desde el repositorio:

Repositorio GitHub

En el repositorio encontrarás:

  • Código fuente en Python
  • Esquema de conexión
  • Instrucciones de ejecución
  • Ejercicios complementarios

Prompt recomendado para generar el código con IA

Una forma muy útil de aprender programación de sistemas embebidos es pedir a una IA que genere el código y luego analizarlo.

Puedes utilizar el siguiente prompt:

Actúa como un ingeniero experto en sistemas embebidos con Raspberry Pi.

Escribe un programa en Python para una Raspberry Pi 5 que controle
un LED conectado al GPIO 17 utilizando la librería RPi.GPIO.

El programa debe:

1. Usar la numeración BCM.
2. Configurar el pin como salida.
3. Encender el LED durante 1 segundo.
4. Apagar el LED durante 1 segundo.
5. Repetir el proceso indefinidamente.
6. Incluir manejo de interrupción con CTRL+C.
7. Liberar correctamente los recursos GPIO con GPIO.cleanup().

El código debe estar muy bien comentado para que pueda ser
utilizado con fines educativos en cursos de sistemas embebidos.

Lo que aprenderás en el siguiente ejercicio

En el Ejercicio 2 extenderemos este ejemplo introduciendo:

  • múltiples LEDs
  • estructuras de control
  • secuencias de iluminación

Esto permitirá construir los primeros patrones de señalización, base para el desarrollo posterior del sistema de semáforo inteligente.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio