Matriz de 11×2 LEDs controlada con Arduino para un R2D2

Autor: Julio César Sandria Reynoso
Fecha: 9 de noviembre de 2024

Robot tipo R2D2

En este artículo se presenta un proyecto de creación de una matriz de 11×2 LEDs que se controlan con Arduino para colocarlos en una ranura de un robot similar al R2D2 de las películas Star Wars.

Semanas atrás, uno de los alumnos del Instituto de Robótica de Xalapa (iRoX) llevó su robot R2D2 para hacerle algunas mejoras. Una de esas mejoras consiste en ponerle LEDs en algunas de las ranuras de la cabeza.

Una de esas ranuras es rectangular de 9 cm X 1.2 cm, donde se puede colocar una matriz de 11×2 LEDs por dentro de la cabeza para que se pueda ver su encendido desde el exterior.

Cabeza de R2D2

La idea de poner varios LEDs fue para emular un tanto la forma en que trabaja el robot de las películas, encendiendo de diversas formas los LEDs de esa ranura.

Algunos de los alumnos participaron en el diseño de la sección rectangular para la colocación de los LEDs, inicialmente se consideró una tabla de MDF de 3mm cortada en láser para colocar allí los LEDs, pero se descartó porque con una placa fenólica perforada fue suficiente.

La disposición de los 22 LEDs, con resistencias, transistores y conexiones a Arduino se diseñó en Tinkercad. De hecho, en esta plataforma se hizo también la programación inicial y simulación de su funcionamiento, lo cual se muestra en el artículo Arreglo de 22 LEDS (11×2) con encendido aleatorio con Arduino en Tinkercad.

Arreglo de LEDs en 11 columnas y 2 filas conectados con transistores a Arduino UNO

Después del diseño del circuito en Tinkercad, se procedió a soldar los componentes en la placa fenólica. El material usado es el siguiente:

  • Placa fenólica perforada
  • 22 LEDs de diferentes colores
  • 11 resistencias de 220 Ohms
  • 2 transistores 2N2222
  • 2 resistencias de 1 KOhm
  • Cable UTP
  • Tira de pines macho 90° (14 conectores)
Componentes soldados a la placa fenólica

Una vez soldados todos los componentes como se ve en la imagen «Componentes soldados a la placa fenólica», se conectaron cables Dupont hembra-macho del circuito al Arduino UNO de la siguiente forma:

  • Los primeros 11 cables de izquierda a derecha se conectan a los pines digitales 10 a 0 de Arduino respectivamente.
  • El antepenúltimo cable (amarillo) se conecta al pin analógico A0.
  • El penúltimo cable (naranja) se conecta al pin analógico A1.
  • El último cable (rojo) se conecta a GND.

Una vez conectado todo, se cargó el siguiente programa C++ desde Arduino IDE al Arduino UNO.

// Programa C++ para Arduino
// Autor: Julio César Sandria Reynoso
// Fecha: Noviembre 2024
// Arreglo de LEDs de 11 columnas X 2 filas,
// enciende LEDs de forma aleatoria o con ciertos patrones
#define columnas 11
#define filas 2
int Columnas[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int Filas[] = {A0, A1};
int ledColumna[columnas];
int ledFila[columnas];

void setup() {
  for (int col = 0; col < columnas; col++)
    pinMode(Columnas[col], OUTPUT); 
  for (int fila = 0; fila < filas; fila++)
    pinMode(Filas[fila], OUTPUT);
}

void loop() {
  // Enciende un led iniciando en la primera fila de 
  // izquierda a derecha y terminando en la segunda 
  // fila a la izquierda
  for(int t=100; t>=40; t=t-20)
    ledPorFila(t,0);

  // Enciende de 1 a 5 leds de forma aleatoria durante un tiempo
  // de 100 + i*50 ms y apagándolos 0 ms
  for(int i=1; i<6; i++)
    ledsAleatorios(i,100+i*50,0);

  // Enciende 6 leds de forma aleatoria durante 50 iteraciones
  for(int i=0; i<50; i++)
    ledsAleatorios(6,350,0);
}

void ledPorFila(int tEncendido, int tApagado) {
  for(int i=columnas-1; i>=0; i--) {
    digitalWrite(Filas[0], HIGH);
    digitalWrite(Columnas[i], HIGH);
    delay(tEncendido);

    digitalWrite(Filas[0], LOW);
    digitalWrite(Columnas[i], LOW);
    delay(tApagado);
  }
  for(int i=0; i<columnas; i++) {
    digitalWrite(Filas[1], HIGH);
    digitalWrite(Columnas[i], HIGH);
    delay(tEncendido);

    digitalWrite(Filas[1], LOW);
    digitalWrite(Columnas[i], LOW);
    delay(tApagado);
  }
}

void ledsAleatorios(int nLeds, int tEncendido, int tApagado) {
  // Los arreglos ledFila[] y ledColumna[] tienen <columnas> elementos,
  // de los cuales solo se usan <nLeds> elementos en esta función.
  // Es posible que de forma aleatoria se repita un led a encender,
  // pero es imperceptible o poco notorio durante la ejecución.
  // Encendemos los nLeds indicados, durante <tEcendido> milisegundos
  for(int i=0; i<nLeds; i++) {
    ledFila[i] = random(0, filas);
    ledColumna[i] = random(0, columnas);
    digitalWrite(Columnas[ledColumna[i]], HIGH);
    digitalWrite(Filas[ledFila[i]], HIGH);
  }
  delay(tEncendido);
  // Apagamos todos los leds encendidos
  for(int i=0; i<nLeds; i++) {
    digitalWrite(Columnas[ledColumna[i]], LOW);
    digitalWrite(Filas[ledFila[i]], LOW);    
  }
  delay(tApagado);
}

Las siguientes fotografías son del circuito funcionando.

Al probar el programa se detectó que algunos LEDs no encendían, por lo que se hizo una revisión exhaustiva, encontrando algunos errores de soldadura, que se fueron resolviendo.

Con este tipo de proyectos, donde los alumnos practican los temas que se van viendo en el iRoX, los alumnos se sienten motivados a aprender aún mucho más.

Si te interesa aprender más sobre programación en C++, Arduino, robótica u otros lenguajes de programación, visita el sitio web del Instituto de Robótica de Xalapa (www.irox.mx) y contáctanos. Si estás en una región cercana a Xalapa, como Veracruz, Boca del Río, Córdoba, Martínez de la Torre, etc., puedes visitar las instalaciones del iRoX entre semana o un sábado y hablar con nuestros profesores sobre proyectos de robótica o tecnología.

Agradecemos a los alumnos que están participando en este proyecto: David, Germán, Fernando, Carlo y Max.

Simulador de robots móviles Webots

Webots es un simulador de robots móviles 3D de código abierto. Es una plataforma de simulación robótica diseñada para un uso profesional y ha sido ampliamente utilizada en la industria, la educación y la investigación.

Originalmente se desarrolló como una herramienta para investigar varios algoritmos de control en robótica móvil. Desde diciembre de 2018, Webots se liberó como un software de código abierto bajo la licencia Apache 2.0.

El sitio web de Webots es https://cyberbotics.com/ y la guía de uso está en https://cyberbotics.com/doc/guide/index.

Webots tiene una interfaz gráfica de usuario (GUI) con una ventana 3D para interactuar con la simulación 3D así como un editor de texto para editar el código fuente, entre otros elementos.

Cursos

En el Instituto de Robótica de Xalapa se imparten cursos y talleres de robótica en verano y permanentes para niños, jóvenes y adultos, tales como:

  • Cursos de Robótica para Niños y Jóvenes
  • Cursos de Arduino
  • Cursos de robótica con Arduino
  • Cursos de robótica con Lego Mindstorms NXT y EV3
  • Cursos de Raspberry Pi

El iRoX cuenta con amplia experiencia en la formación de niños y jóvenes, así como en la participación en eventos y concursos de robótica.

Cursos y talleres 2017

Más información en el sitio web del iRoX: www.iRoX.mx.

¿Cómo construir un dispositivo para monitoreo ambiental con Arduino y el Internet de la cosas?

Por Ana Luisa Balderas García
4to semestre de Bachillerato
Colegio de Bachilleres Simón Bolívar del Sureste

Participante en el Programa de Fomento al Interés por la Carrera Científica en Niños y Jóvenes con el Mtro. Julio Sandria en el Instituto de Ecología, A.C.

Dí­a 1

Aprendí los principios básicos del Arduino. Sus caracterí­sticas, conexiones, su enlace a la computadora y el lenguaje de programación a utilizar.

Realice ejercicios con un programa base (uno predeterminado). Este programa ordenaba a la tarjeta (Arduino) que encendiera un led y lo apagara con un tiempo de espera determinado entre cada orden. Ejercicio: El led enciende para dar una señal de SOS en código morse.

Dí­a 2

¿Qué es el cambio climático?, y ¿Qué es el monitoreo ambiental?

  1. El cambio climático es la alteracion de proporcion y composición de gases de efecto invernadero que atrapan el calor de la atmósfera.
  2. El monitoreo ambiental discute desarrollos técnicos y el surgimiento de datos de monitoreo ambiental, principalmente en el diseño de sistemas de monitoreo y en el uso de la información recabada, analizando consecuencias del manejo de recursos naturales y riegos de la contaminación.

Trabajamos con 3 sensores; el DHT22, que mide la humedad y temperatura, el BMP180, que mide la presión barométrica, la temperatura y la altura en metros sobre el nivel del mar; y el sensor de luz, con valores de luz del 0 al 1023, teniendo como referencia que el 0 es total iluminación y el 1023 para obscuridad.

Se tení­a programas base para cada uno de los sensores, y se descargaron librerías para poder trabajarlos.

Ejercicio: Enlazar dos programas en uno, haciendo trabajar dos sensores al mismo tiempo. Los programas se entrelazaron., tomando las instrucciones del algoritmo base que el otro no tenía y eran fundamentales para su funcionamiento.

Ejercicio: Acoplar el tercer sensor. Se utilizó un Protoboard para anexar las conexiones del tercer sensor y modificar el programa. Se conectó a internet para el registro de datos con una tarjeta de red, con entrada para cable Ethernet.

Dí­a 3

El Internet de las Cosas (Internet of Things, IoT), es una iniciativa global para la interconexión digital de objetos cotidianos mediante internet, la cual permite subir datos a un servidor para que se almacenen. El maestro Julio César Sandria Reynoso generó un programa en donde los datos obtenidos pasan a un servidor del INECOL y en otro servidor de forma gratuita en el IoT.

En conclusión, este prototipo nos sirve para monitorizar variables que pueden reflejar el cambio climático y estar disponibles en servidores gratuitos.

Robot Sanduino A01

Robot Sanduino A01
Robot Sanduino A01

El Robot Sanduino A01 es un paquete básico de robótica educativa basado en Arduino. Incluye: 1 chasis de acrílico con motores y ruedas, 1 tarjeta Arduino UNO, 1  puente H dual, 1 protoboard, 2 sensores de línea, 2 sensores de distancia infrarrojos (ó 2 sensores de contacto), 1 sensor de distancia ultrasónico, cables de conexión, tornillos y accesorios para su construcción. Requiere 8 baterías AA, no incluidas. Requiere desarmador plano y de cruz chicos, no incluidos.

Dónde comprar

El Robot Sanduino A01 lo puedes adquirir en RobotSA.

Guía de armado y programación