Blog

Proyecto de semáforo basado en Arduino Uno

0
Proyecto de semáforo basado en Arduino

Los semáforos son algo que vemos a diario en las carreteras. Controlan el flujo de vehículos y mantienen el tráfico en movimiento de forma organizada y sin accidentes. La mayoría de las personas nunca se detiene a pensar en cómo funcionan realmente estas luces, pero la idea detrás de ellas es bastante simple una vez que se desglosa.

En este artículo, construiremos un pequeño modelo de un sistema de semáforos utilizando un Arduino Uno, algunos LEDs y una protoboard. Este es uno de los proyectos para principiantes más comunes en electrónica y sistemas embebidos, ya que enseña los conceptos básicos de control de salida digital, temporización y construcción de circuitos, todo en un mismo y sencillo proyecto.

Al final de este artículo, comprenderá cómo funciona una señal de tráfico real, cómo cablear los componentes, cómo escribir el código para ella y cómo probarla en su propia placa Arduino.

Por qué este proyecto es un buen punto de partida

Cualquier persona que sea nueva en Arduino o en electrónica a menudo tiene dificultades para encontrar un proyecto que sea lo suficientemente simple de entender pero que aún enseñe algo útil. El proyecto de semáforo es perfecto para esto porque solo requiere un puñado de componentes, el cableado no es complicado y el código es corto y fácil de seguir. Al mismo tiempo, introduce algunos conceptos muy importantes como:

  • Cómo conectar LEDs de forma segura utilizando resistencias
  • Cómo funcionan los pines digitales en un microcontrolador
  • Cómo controlar la temporización mediante retrasos
  • Cómo estructurar un programa utilizando bucles

Estos son los mismos bloques de construcción utilizados en proyectos mucho más avanzados, por lo que aprenderlos aquí proporciona una base sólida para cualquier otra cosa que pueda construir más adelante.

Componentes Requeridos

Para construir este proyecto, no necesitará muchas piezas. Aquí está la lista completa:

  • Placa Arduino Uno
  • Cable USB para conectar el Arduino a una computadora
  • Protoboard
  • LED rojo
  • LED amarillo
  • LED verde
  • Tres resistencias (220 ohmios es un buen valor para LED)
  • Cables de conexión (macho a macho)

Todas estas piezas son económicas y fáciles de conseguir en cualquier tienda de electrónica o tienda en línea. Si usted es estudiante o aficionado, es posible que ya tenga la mayoría de estas partes de otros proyectos pequeños. Para futuros proyectos empresariales, PCBCool también puede dar soporte abastecimiento de componentes, ayudando a los clientes a gestionar la disponibilidad de la lista de materiales (BOM) y la adquisición junto con Montaje de PCB.

Entendiendo cómo funciona un semáforo real

Antes de adentrarnos en el cableado, es útil comprender la pauta real que siguen los semáforos en la vida real. Una señal de tráfico estándar tiene tres colores, y cada uno tiene un significado:

  • Rojo significa parar. Los vehículos no deben moverse.
  • Amarillo significa prepárese. La luz está a punto de cambiar, por lo que los conductores deben reducir la velocidad.
  • Verde significa avance. Los vehículos tienen permitido moverse.

El ciclo normal en la mayoría de los países es el siguiente: la luz permanece en rojo durante algún tiempo, luego se pone en verde, y luego, antes de volver a ponerse en rojo, muestra brevemente el amarillo como advertencia. Este ciclo se repite una y otra vez. Nuestro proyecto de Arduino va a copiar este mismo patrón utilizando LEDs en lugar de grandes bombillas de tráfico.

Diagrama de circuito y cableado

El cableado para este proyecto es muy simple porque solo estamos trabajando con tres LEDs. Cada LED necesita conectarse a un pin digital del Arduino a través de una resistencia, y la otra pata de cada LED debe conectarse al pin de tierra.

A continuación, se muestra el diagrama del circuito que ilustra cómo se debe realizar la conexión. El LED rojo, el LED amarillo y el LED verde se colocan en la protoboard, y cada uno se conecta de vuelta al Arduino mediante cables puente de colores. Observe cómo el cable negro discurre por el riel inferior de la protoboard para proporcionar una conexión a tierra común para los tres LEDs.

Diagrama de cableado de semáforo con Arduino Nano

Como se muestra en el diagrama, las conexiones son:

  • LED rojo conectado al pin digital 9
  • LED amarillo conectado al pin digital 8
  • LED verde conectado al pin digital 7
  • Todas las patas a tierra de los LEDs están conectadas al pin GND del Arduino a través del riel de tierra de la protoboard.

Puede usar diferentes pines si lo prefiere, solo asegúrese de que los pines en su código coincidan con los pines que realmente conecta.

Pasos de cableado

Aquí se presenta un método paso a paso para construir el circuito:

  1. Coloque el Arduino junto a la protoboard para que los cables puedan extenderse cómodamente.
  2. Inserte los LEDs rojo, amarillo y verde en la protoboard, manteniendo algo de espacio entre ellos. Cada LED tiene dos patas, una más larga (positiva) y otra más corta (negativa).
  3. Conecte una resistencia de 220 ohmios a la pata más larga (positiva) de cada LED. La resistencia protege al LED de una corriente excesiva, la cual podría quemarlo.
  4. Ejecute un cable puente desde el otro extremo de cada resistencia hasta los pines digitales del Arduino (9, 8 y 7 en nuestro ejemplo).
  5. Conecte la pata más corta (negativa) de cada LED al riel de tierra de la protoboard.
  6. Finalmente, conecte el riel de tierra de la protoboard al pin GND de Arduino utilizando un único cable de puente.

Una vez completado este cableado, su protoboard y Arduino deberían verse similares a la imagen a continuación, mostrando la configuración física terminada con los tres LEDs conectados y cableados a la placa.

Imagen actual de la protoboard y Arduino después del cableado

En esta imagen, se puede observar la Arduino Uno alimentada a través de un cable USB, con cables puente que descienden hasta la protoboard donde se encuentran colocados los tres LEDs en hilera. Esto coincide exactamente con lo que describimos en el diagrama del circuito, pero en su forma física real en lugar de un dibujo.

Escribiendo el Código

Ahora que el hardware está listo, necesitamos escribir el programa que controlará los LEDs. El lenguaje de programación de Arduino se basa en C y C++, pero para un proyecto como este, solo necesita conocer unos pocos comandos básicos.

Aquí está el código completo para el proyecto del semáforo:

				
					int redLED = 9;
int yellowLED = 8;
int greenLED = 7;

void setup() {
  pinMode(redLED, OUTPUT);
  pinMode(yellowLED, OUTPUT);
  pinMode(greenLED, OUTPUT);
}

void loop() {
  // Luz roja encendida
  digitalWrite(redLED, HIGH);
  digitalWrite(yellowLED, LOW);
  digitalWrite(greenLED, LOW);
  delay(5000);

  // Luz verde encendida
  digitalWrite(redLED, LOW);
  digitalWrite(yellowLED, LOW);
  digitalWrite(greenLED, HIGH);
  delay(5000);

  // Luz amarilla encendida
  digitalWrite(redLED, LOW);
  digitalWrite(yellowLED, HIGH);
  digitalWrite(greenLED, LOW);
  delay(2000);
}
				
			

Explicando el código

Desglosemos qué hace cada parte de este código:

  • En la parte superior, declaramos tres variables (redLED, yellowLED, greenLED) y les asignamos los números de pin que utilizamos en nuestro cableado. Esto hace que el código sea más fácil de leer y modificar posteriormente, ya que no tenemos que recordar los números de PIN a lo largo del programa.
  • La función setup() se ejecuta una sola vez cuando el Arduino se enciende o se reinicia. Dentro de ella, le indicamos al Arduino que cada uno de estos tres pines se utilizará como SALIDA, lo que significa que el Arduino enviará energía desde estos pines en lugar de leer la energía que llega.
  • La función loop() se ejecuta una y otra vez, para siempre, mientras el Arduino tenga energía. Aquí es donde ocurre el patrón real del semáforo.
  • digitalWrite(redLED, HIGH) enciende el LED rojo enviando 5 voltios a ese pin. digitalWrite(redLED, LOW) lo apaga enviando 0 voltios.
  • delay(5000) indica al Arduino que espere 5000 milisegundos, lo que equivale a 5 segundos, antes de pasar a la siguiente línea de código. Esto es lo que crea el tiempo entre cada luz.

Debido a que la función loop() se repite continuamente, el patrón de rojo, luego verde, luego amarillo y de regreso a rojo continuará sin fin, al igual que una señal de tráfico real.

Puede cambiar los valores de retardo para que las luces permanezcan encendidas por períodos más cortos o más largos, dependiendo de cómo desee que se comporte su modelo.

Cargando el Código a Arduino

Una vez que haya escrito o copiado el código en el software Arduino IDE en su computadora, siga estos pasos para ejecutarlo en su placa:

  1. Conecte el Arduino a su computadora usando el cable USB.
  2. Abra el IDE de Arduino y pegue el código en un nuevo boceto.
  3. Diríjase al menú Herramientas y seleccione el tipo de placa correcto, que debería ser Arduino Uno.
  4. Además, desde el menú Herramientas, seleccione el puerto COM correcto al que está conectado su Arduino.
  5. Haga clic en el botón de carga, que parece una flecha apuntando hacia la derecha.
  6. Espere a que el IDE muestre “Done uploading” en la parte inferior de la pantalla.

Una vez que la carga se complete, sus LEDs deberían comenzar inmediatamente a seguir el patrón del semáforo que definimos en el código.

Prueba y Observación del Resultado

Después de cargar el código, debería ver que el LED rojo se enciende primero y permanece encendido durante 5 segundos. Luego se apaga y el LED verde se enciende durante otros 5 segundos. Después de eso, el LED verde se apaga y el LED amarillo se ilumina durante 2 segundos, advirtiendo que el ciclo está a punto de reiniciarse. Luego, todo el patrón se repite desde el principio con la luz roja nuevamente.

Si prueba esta configuración en una habitación más oscura, el brillo de los LED se vuelve mucho más visible y ofrece un efecto agradable similar al de las luces de tráfico reales que brillan por la noche. La imagen a continuación muestra los LED brillando en un entorno tenue, lo que realmente resalta cómo los colores se destacan una vez que se reduce la luz circundante.

Vista final del semáforo de Arduino Nano

Este tipo de prueba también es útil para confirmar que su circuito está funcionando correctamente. Si alguno de los LED no se ilumina, generalmente significa uno de los siguientes problemas:

  • El LED podría estar insertado al revés, ya que los LED solo funcionan en una dirección.
  • Es posible que un cable no esté firmemente conectado a la protoboard o al pin de Arduino
  • El valor de la resistencia podría ser demasiado alto, atenuando el LED hasta tal punto que no sea perceptible.
  • El PIN en el código no coincide con el PIN utilizado en el cableado. Recorrer esta lista de verificación generalmente resuelve la mayoría de los problemas de cableado para principiantes.

Mejora y Expansión del Proyecto

Una vez que su semáforo básico esté funcionando, existen muchas maneras en las que puede expandir este proyecto para hacerlo más avanzado y realista:

  • Añada una luz de cruce peatonal utilizando dos LED adicionales (rojo para detenerse, verde para avanzar) que funcione de manera opuesta al semáforo principal.
  • Agregue un pulsador para que los peatones puedan solicitar el cambio de señal, al igual que los botones de cruce reales.
  • Utilice una pantalla LCD para mostrar un temporizador de cuenta regresiva que indique cuántos segundos quedan antes de que cambie la luz.
  • Controlar semáforos múltiples en una intersección, donde una vía debe estar en rojo mientras la otra está en verde, y cambian juntos de manera sincronizada.
  • Añada un zumbador que suene durante la fase de luz amarilla como señal de advertencia adicional.

Estas mejoras no son demasiado difíciles una vez que se comprende la versión básica, y son una excelente manera de seguir aprendiendo nuevas habilidades de Arduino, como leer entradas de botones, usar bibliotecas adicionales y administrar múltiples componentes que trabajan juntos al mismo tiempo.

Consideraciones finales

El proyecto de semáforo basado en Arduino Uno es una de las mejores maneras para que los principiantes se familiaricen con la electrónica y la programación al mismo tiempo. Utiliza componentes sencillos y asequibles, y el cableado es lo suficientemente fácil como para completarlo en menos de treinta minutos. Al mismo tiempo, los conceptos subyacentes, como el control de salidas digitales y la temporización con retardos, se utilizan en innumerables otros proyectos de electrónica, desde sistemas de automatización del hogar hasta robótica.

Preguntas frecuentes

¿Por qué el recuento de capas tiene un impacto tan grande en el costo de las PCB?

La razón principal es que cada capa añadida hace que el proceso de fabricación sea más difícil de controlar. Más capas significan más posibilidades de defectos en las capas internas, problemas de alineación, problemas de laminación y desechos.

P8: ¿Por qué los diseños BGA requieren un control de fabricación de PCB más estricto?

A: Las almohadillas BGA son pequeñas y están muy juntas, por lo que pequeños errores de fabricación se convierten fácilmente en problemas de ensamblaje.

Sam K
Sam K | Ingeniero de Sistemas Embebidos

Sam K trabaja en sistemas electrónicos integrados, con un enfoque en diseño de hardware, desarrollo de PCB, programación de firmware e integración de sistemas. También apoya la optimización del rendimiento y ayuda a convertir ideas de productos electrónicos en soluciones confiables en el mundo real.

Etiquetas Relacionadas
Compartir