Ejercicio No. 5 – Semáforo con botón de peatón

En los ejercicios anteriores aprendimos a controlar salidas digitales utilizando los pines GPIO de la Raspberry Pi. Construimos un semáforo vehicular y posteriormente incorporamos una interfaz gráfica para visualizar su funcionamiento.

En este quinto ejercicio introducimos un nuevo concepto fundamental en el diseño de sistemas embebidos: la interacción del sistema con el mundo físico a través de entradas digitales.

Para lograrlo incorporaremos un botón de peatón que permitirá solicitar el cambio del semáforo. Este tipo de lógica es muy común en sistemas reales de control urbano, donde los peatones pueden indicar su intención de cruzar mediante un pulsador.

El sistema seguirá funcionando de manera automática, pero ahora incluirá un evento externo que puede modificar su comportamiento.

Este ejercicio introduce conceptos esenciales que aparecen en muchos dispositivos electrónicos:

  • lectura de sensores digitales
  • detección de eventos externos
  • control basado en estados
  • filtrado de señales provenientes del hardware

Objetivo del ejercicio

El objetivo de este ejercicio es extender el sistema de semáforo para permitir que un peatón solicite el cambio de estado mediante un botón conectado a la Raspberry Pi.

Durante este ejercicio aprenderemos:

  1. Cómo leer entradas digitales utilizando los pines GPIO.
  2. Cómo implementar lógica dependiente del estado del sistema.
  3. Cómo aplicar debounce por software para eliminar rebotes del botón.
  4. Cómo diseñar una máquina de estados simple en un sistema embebido.

Estos conceptos son fundamentales en el diseño de sistemas que interactúan con el mundo físico, como:

  • robots móviles
  • dispositivos IoT
  • sistemas de automatización
  • interfaces hombre-máquina

Funcionamiento del sistema

El sistema implementa un semáforo vehicular con la posibilidad de generar una solicitud de cruce peatonal.

El comportamiento es el siguiente:

  • Cuando el semáforo está en VERDE, el peatón puede presionar el botón para solicitar el cambio.
  • Si el botón se presiona cuando el sistema está en AMARILLO o ROJO, la solicitud es ignorada.

La secuencia de funcionamiento es:

VERDE ----(botón)----> AMARILLO → ROJO → VERDE

Cuando se detecta la solicitud peatonal durante el estado VERDE, el sistema interrumpe el ciclo normal y procede al cambio de estado.


Arquitectura del programa

El programa mantiene la estructura utilizada en ejercicios anteriores, pero ahora incorpora la lectura de entradas digitales y lógica adicional para manejar eventos externos.


1. Configuración de los pines GPIO

El sistema utiliza cuatro pines:

ElementoGPIO
LED rojoGPIO17
LED amarilloGPIO27
LED verdeGPIO22
Botón de peatónGPIO23

El botón se configura como entrada digital utilizando una resistencia interna pull-up.

Esto significa que:

  • el pin normalmente está en nivel lógico HIGH
  • cuando el botón se presiona, el pin pasa a LOW

Este esquema es muy común en diseño electrónico porque reduce la necesidad de componentes externos.


2. Problema del rebote mecánico

Los botones físicos presentan un fenómeno conocido como rebote mecánico (switch bounce).

Cuando un botón se presiona, el contacto eléctrico puede oscilar rápidamente entre:

  • abierto
  • cerrado

Esto puede generar múltiples activaciones no deseadas.

Para evitarlo, el programa implementa debounce por software, ignorando nuevas activaciones durante un intervalo de tiempo determinado.

En este ejercicio se utiliza un tiempo de:

200 milisegundos


3. Máquina de estados del semáforo

El comportamiento del sistema se basa en una máquina de estados simple representada por la variable:

estado_actual

Los estados posibles son:

  • VERDE
  • AMARILLO
  • ROJO

Cada estado controla:

  • los LEDs del semáforo
  • la transición al siguiente estado

Este enfoque permite diseñar sistemas de control claros y fáciles de mantener.


4. Detección de solicitud peatonal

Cuando el botón es presionado durante el estado VERDE, el sistema activa la variable:

solicitud_peaton

Esto indica que un peatón desea cruzar.

El sistema continuará en estado VERDE hasta que:

  • finalice el tiempo programado, o
  • se detecte una solicitud peatonal

En ambos casos el semáforo procede al estado AMARILLO.


Diagrama conceptual del hardware

El sistema utiliza el mismo semáforo de ejercicios anteriores con la adición de un botón.

Componentes

  • Raspberry Pi
  • LED rojo
  • LED amarillo
  • LED verde
  • 3 resistencias (220 Ω o 330 Ω)
  • botón pulsador
  • protoboard
  • cables jumper

Conexiones

GPIO17 ── Resistencia ── LED ROJO ── GND
GPIO27 ── Resistencia ── LED AMARILLO ── GND
GPIO22 ── Resistencia ── LED VERDE ── GND

GPIO23 ── Botón ── GND

La resistencia pull-up interna de la Raspberry Pi mantiene el pin en estado alto cuando el botón no está presionado.


Repositorio del ejercicio

Puedes encontrar el código completo en el repositorio:

Repositorio GitHub

En el repositorio encontrarás:

  • código fuente en Python
  • diagrama de conexión
  • instrucciones de ejecución
  • materiales educativos adicionales

Prompt recomendado para generar el código con IA

Puedes utilizar el siguiente prompt para generar este ejercicio utilizando inteligencia artificial:

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

Escribe un programa en Python para una Raspberry Pi 5 que implemente
un semáforo vehicular con un botón de peatón.

El sistema debe utilizar los siguientes pines:

GPIO17 → LED rojo
GPIO27 → LED amarillo
GPIO22 → LED verde
GPIO23 → botón de peatón

Requisitos del programa:

1. Usar la librería RPi.GPIO con numeración BCM.
2. Implementar una máquina de estados con los estados:
   VERDE → AMARILLO → ROJO.
3. Permitir que el peatón solicite el cambio presionando el botón
   únicamente durante el estado VERDE.
4. Ignorar el botón durante los estados AMARILLO y ROJO.
5. Implementar eliminación de rebotes (debounce) por software.
6. Liberar los recursos GPIO al finalizar el programa.

El código debe estar bien comentado para fines educativos
en un curso de sistemas embebidos.

Lo que aprenderás en el siguiente ejercicio

En el Ejercicio 6 continuaremos ampliando el sistema incorporando múltiples botones o modos de operación, lo que permitirá construir sistemas embebidos más complejos basados en eventos y lógica de control más avanzada.

Este tipo de arquitectura es la base para desarrollar:

  • sistemas de control de tráfico más avanzados
  • robots interactivos
  • interfaces de usuario basadas en hardware
  • dispositivos IoT inteligentes.

Deja un comentario

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

Scroll al inicio