Open Lambda Core

Documentación

Ficha técnica, pines del Escudo, puesta en marcha, programación y reglamento. Se publica por partes: lo que todavía no está aparece marcado como pendiente.

Versión preliminarOctubre de 2026
00 · Resumen

Tres capas: base, Escudo y módulos

Open Lambda Core es un robot seguidor de línea para la categoría Robotrace. La placa base es chasis y circuito en una sola pieza. Sobre ella va el Escudo Core, que ocupa el zócalo 2×15 del Arduino Nano y lo reemplaza por un ESP32-S3. En el Escudo van los módulos: el ESP32-S3, el multiplexor, los reguladores, la IMU y el sensor de distancia.

01 · Hardware

Ficha técnica

Microcontrolador
ESP32-S3, en un módulo LOLIN S3 Mini
Conexión
USB y WiFi de 2,4 GHz
Sensores de línea
6 reflectivos, a 9,5 mm uno del otro
Sensores de marca
2, uno por lado
IMU
MPU6050, giroscopio y acelerómetro
Distancia
VL53L0X (ToF), mirando al frente
Motores
2 × N20 HP de 6 V, con encoder en cuadratura
Driver de motores
TB6612FNG
Ruedas
Ø 32 mm · 100,53 mm por vuelta
Batería
LiPo 2S · 7,4 V · 300 mAh · JST XH
Reguladores
4 en el Escudo: 2 de 5 V y 2 de 3,3 V
Señales
LED RGB, buzzer y botón
Placa base
88 × 100 mm
Escudo Core
61 × 96 mm

El arreglo de línea trae ocho sensores, de los que el robot usa seis. Un multiplexor 74HC4051 lleva esos seis y los dos de marca a una sola entrada analógica del ESP32-S3.

El Escudo trae montado un radar RD-03E de 24 GHz. El firmware actual no lo usa.

Sin el Escudo, la placa base funciona con un Arduino Nano en el mismo zócalo y con su propio firmware: sigue la línea, pero sin encoders, IMU, sensor de distancia ni WiFi. La plataforma y la biblioteca de esta documentación son para el Escudo.

El robot no mide su batería. El nivel se revisa por fuera, con un tester.

02 · Hardware

Pines del Escudo

La asignación de los GPIO del ESP32-S3 en el Escudo Core.

GPIOSeñalPara qué
1MUX_ZSalida del multiplexor: la lectura analógica de los sensores
11 · 12 · 13MUX_S0 MUX_S1 MUX_S2Selección del canal del multiplexor
14PWMAMotor izquierdo, potencia
16 · 17AIN1 AIN2Motor izquierdo, sentido
15PWMBMotor derecho, potencia
18 · 21BIN1 BIN2Motor derecho, sentido
4 · 5Encoder izquierdoLas dos fases del encoder
6 · 7Encoder derechoLas dos fases del encoder
35 · 36SDA SCLBus I²C: MPU6050 en 0x68 y VL53L0X en 0x29
8IMU_INTInterrupción de la IMU
2XSHUTHabilita el sensor de distancia
34LEDONEnciende los emisores infrarrojos del arreglo de sensores
38BUTTONBotón
33BUZZERBuzzer
47LED RGBEl LED integrado del módulo; es el único LED de aviso del robot
43 · 44UARTReservada para el radar RD-03E; sin uso
3 · 9 · 10 · 37LibresSin uso. No tienen conector en el Escudo: se toman de los pines del módulo ESP32-S3

No uses los GPIO 0, 19 y 20 (USB), 26 a 32, 43 y 44, 45 y 46. Los GPIO 35 y 36 son solo para el bus I²C.

Canales del multiplexor

CanalSeñalSensor
Y0HLMarca lateral izquierda
Y1 a Y6QTR6 a QTR1Los seis sensores de línea
Y7HRMarca lateral derecha

El firmware no sabe de antemano qué extremo de la fila queda a la izquierda ni cuál sensor de marca es el izquierdo. Eso se fija una vez en la puesta a punto, sin recompilar.

Zócalo de la placa base

El Escudo se enchufa en el zócalo 2×15 del Arduino Nano y recibe por ahí las señales de la base.

Pin del zócaloSeñal
A0HR, marca lateral derecha
A1 a A6QTR1 a QTR6, sensores de línea
A7HL, marca lateral izquierda
D2BUTTON
D10BUZZER
D11LEDON

Driver de motores

El TB6612FNG recibe tres señales por motor: una de potencia (PWM) y dos de sentido.

IN1IN2El motor
AltoBajoAvanza
BajoAltoRetrocede
AltoAltoFrena
BajoBajoQueda libre

La señal STBY del driver está fija en alto en la placa base: el firmware no puede apagar el driver. Un motor queda libre con las dos señales de sentido en bajo y frena con las dos en alto. Con el PWM en 0 y una sola señal de sentido en alto, el driver también frena.

03 · Hardware

Energía y conectores

El robot se alimenta con una batería LiPo de dos celdas (2S): 7,4 V nominales y hasta 8,4 V recién cargada. Se carga con un cargador para 2S.

Los motores son de 6 V y reciben el voltaje de la batería. Por eso el firmware limita la potencia que les entrega: el tope viene en 75 %.

El Escudo tiene cuatro reguladores: dos de 5 V, que bajan el voltaje de la batería, y dos de 3,3 V, que se alimentan de esos 5 V.

Qué se conectaConector
BateríaJST XH de 3 pines, paso 2,5 mm
Cada motor con su encoderJST ZH de 6 pines, en el Escudo
Escudo Core o Arduino NanoZócalo 2×15
Arreglo de sensoresZócalo 1×11
Driver TB6612FNGZócalo 2×8
ComputadorEl USB del módulo ESP32-S3

Como el robot no mide su batería, toda corrida que cuente se hace con la batería cargada.

04 · Usar

Puesta en marcha

La plataforma es una sola página que se abre en el navegador. Conecta el robot por USB, le instala el firmware base, lo deja en tu red WiFi y muestra sus sensores en vivo.

Qué necesitas

  • Un computador con Chrome o Edge, que son los navegadores que pide la plataforma: la conexión por USB usa Web Serial.
  • Un cable USB de datos. Los que son solo de carga no sirven.
  • Una red WiFi de 2,4 GHz, con el computador en la misma red que el robot.
  • Conexión a internet para instalar o actualizar el firmware base y para usar la IA del chat.

Descargar la plataforma

Guarda el archivo y ábrelo desde tu computador, con doble clic. La página le habla al robot por la red local: abierta desde el disco funciona sin pedir nada; abierta desde una dirección web, el navegador lo bloquea o exige un permiso aparte.

Los tres pasos

  1. Conectar

    Enchufa el robot por USB y pulsa Conectar. Si el robot es nuevo, la página le instala el firmware base, versión 3.2.1. Después elige tu red, escribe la clave y pulsa Guardar red. Cuando la página pase sola al paso Revisar, el robot ya está en el WiFi y puedes desenchufar el cable.

  2. Revisar

    Mueve el robot con la mano y mira que los datos cambien: las seis barras de línea, las dos marcas, el rumbo y la distancia. Aquí también se calibran los sensores y se prueban los motores a mano.

  3. Conocer

    Las piezas del robot, una por una, cada una con su ficha: cómo se conecta, qué hace, cómo se usa y qué suele fallar. Al lado hay un chat para preguntar y pedir programas; la IA del chat se configura en Ajustes.

Puesta a punto

Los pasos 1 a 5 se hacen una vez por robot y quedan guardados dentro del robot al pulsar Guardar en el robot, al final de la hoja. La calibración del paso 6 no se guarda: se repite cada vez que se enciende el robot o se cambia de pista. Los pasos 2 y 6 mueven las ruedas de verdad; en los demás lo mueves tú. Sujétalo o déjalo en el suelo según lo que pida cada uno.

La puesta a punto necesita el firmware 4.0.0. La plataforma que se descarga hoy instala el firmware base 3.2.1, que no responde a estos ajustes: con él, los botones de los pasos 1 a 5 y Guardar en el robot no cambian nada.

  1. Qué extremo de la fila es la izquierda

    Tapas con el dedo el sensor del extremo izquierdo y miras cuál barra se mueve.

  2. Para dónde gira cada motor

    Con el robot levantado, cada botón mueve una sola rueda.

  3. Para dónde cuentan los encoders

    Empujas el robot hacia adelante; las dos cuentas tienen que subir.

  4. Cuál sensor de marca es el izquierdo

    Pasas algo blanco por el costado izquierdo del robot.

  5. Cuántas cuentas da una vuelta de rueda

    Empujas el robot derecho una distancia medida con huincha y la escribes; la página calcula el número.

  6. Calibrar los sensores

    Tres segundos, con la línea blanca y el negro pasando bajo los sensores.

Si algo sale al revés se corrige con un botón; no hay que reinstalar nada. Mientras no se haga el paso 5, los milímetros y la velocidad que informa el robot son aproximados.

El LED de estado

ColorEl robot está
AzulEn espera, recién encendido
VerdeCorriendo, o con los motores manejados a mano
ÁmbarCalibrando
RojoDetenido: lo cortó el supervisor, se pulsó Parar o el programa llamó a stop()
CelesteDetenido en la meta, con el seguidor de fábrica

Desde que un programa llama a led(), el LED pasa a ser del programa.

Si algo falla

  • El computador no ve el robot. El cable puede ser solo de carga: prueba con uno de datos.
  • No se pudo instalar el firmware. Mantén BOOT, toca RST, suelta BOOT y pulsa Conectar de nuevo.
  • Conectar reconoce el robot pero no muestra las redes. El robot trae un firmware más nuevo que el 3.2.1 de la página, y la página no lo toca.
  • El robot no entra a la red. Revisa la clave y que la red sea de 2,4 GHz.
  • No se llega al robot por WiFi. Revisa que el computador esté en la misma red.
05 · Usar

Programar

El robot se programa como un sketch de Arduino en C++: se incluye OpenLambda.h y se escriben setup() y loop().

Esta es la referencia de la biblioteca OpenLambda.h del firmware 4.0.0. Está en versión preliminar y puede cambiar.

Seguir la línea · control proporcional
#include <OpenLambda.h>

void setup() {
  Robot.begin();
  Chat.println("Robot listo. Ponme sobre la linea y pulsa Correr.");
  Robot.waitForStart();
  calibrate(3000);               // gira sobre sí mismo: que la línea le pase por debajo
  beep(900, 100);
}

void loop() {
  int v[6];
  line(v);
  long suma = 0, peso = 0;
  for (int i = 0; i < 6; i++) { suma += v[i]; peso += (long)i * v[i]; }

  if (suma > 200) {
    float pos = (float)peso * 1000 / suma;   // 0 = izquierda, 5000 = derecha
    float error = pos - 2500;
    motors(40 + error * 0.08, 40 - error * 0.08);
  }
  delay(2);
}

Este programa no mueve nada hasta que pulsas Correr en la plataforma o el botón del robot. Entonces calibra tres segundos girando sobre sí mismo, pita y sigue la línea.

Inicio

FunciónQué hace
Robot.begin()Va primero en setup(). Hace lo mismo que zero(), así que el robot tiene que estar quieto.
Robot.waitForStart()Espera hasta que se pulse Correr en la plataforma o el botón del robot.

Sensores

FunciónQué entrega
line(v)Llena un arreglo con las seis lecturas de línea, de 0 a 1000, de izquierda a derecha. La línea blanca da valores altos.
line(i)Una sola lectura; i va de 0 a 5.
mark_left()De 0 a 1000. La marca izquierda avisa un cambio de curva.
mark_right()De 0 a 1000. La marca derecha es la partida y la meta.
gyro()Velocidad de giro, en grados por segundo.
heading()Rumbo acumulado, en grados, desde el último zero().
encoders()Milímetros recorridos desde zero(), promedio de las dos ruedas.
encoder_left() encoder_right()Milímetros de cada rueda.
speed()Velocidad, en milímetros por segundo.
distance()Distancia al frente, en milímetros; −1 si no ve nada.
button()Verdadero mientras el botón está apretado. El mismo botón es Correr y Parar: con el programa corriendo, apretarlo lo detiene.
clock_ms()Milisegundos desde el encendido.

Motores, señales y ajustes

FunciónQué hace
motors(izq, der)Mando de cada motor, de −100 a 100; positivo es adelante. Con los ajustes de fábrica, el firmware ignora un mando menor que 5, sube a 20 los que van de 5 a 19 y limita a 75 los mayores. Si hay un obstáculo a menos de 6 cm, el supervisor retiene los motores.
stop()Detiene los motores.
beep(hz, ms)Suena el buzzer; el programa espera mientras suena.
led(r, g, b)Color del LED; cada componente va de 0 a 255.
calibrate(ms)Calibra los sensores con los motores girando; el programa espera mientras tanto.
zero()Pone en cero los milímetros recorridos y el rumbo y, si el robot está detenido, vuelve a medir el error de reposo del giroscopio. Se llama con el robot quieto.
delay(ms)Espera, como en Arduino. Se interrumpe al pulsar Parar en la plataforma o el botón del robot.

Chat

FunciónQué hace
Chat.println(x)Escribe una línea en el chat de la plataforma, como mensaje del robot. Acepta texto, enteros y float. Un decimal escrito a mano lleva f, como 2.5f; sin ella no compila.
Chat.printf(formato, …)Lo mismo, con formato al estilo de printf.

Todas las funciones sueltas existen también como métodos de Robot: Robot.motors(40, 40) hace lo mismo que motors(40, 40). Robot.println(texto) también escribe en el chat, pero solo acepta texto. No existe battery(): el robot no mide su batería.

Enviar el programa al robot

En la plataforma, pulsa Editor de código: se abre la hoja Mi programa. Escribe el programa o pídeselo a la IA y, con el robot conectado por WiFi, pulsa Compilar y enviar. La página lo manda al servicio de compilación configurado en Ajustes, recibe el firmware compilado y lo carga en el robot por WiFi. La primera compilación es la más lenta y puede tardar un minuto; las siguientes, unos segundos.

El servicio de compilación todavía no tiene una dirección pública. Cuando la tenga, se publicará aquí.

06 · Competir

Reglamento Robotrace

Robotrace es una competencia en la que un robot autónomo recorre un circuito de línea blanca y compite en velocidad e inteligencia. El reglamento de referencia es «Rules for Robotrace», de la New Technology Foundation de Japón, en su versión del 1 de junio de 2024. Esto es un resumen: el número entre paréntesis es la regla.

El robot

  • Es autónomo: salvo la operación de partida, no se lo controla desde afuera, ni por cable ni de forma inalámbrica (1-1).
  • No se le agrega, quita ni cambia hardware o software durante la competencia; solo reparaciones menores (1-2).
  • Su proyección sobre el piso cabe en un círculo de 25 cm de diámetro y no pasa de 20 cm de alto (1-3).
  • No puede agregar fuerza adhesiva excesiva a las ruedas ni a otras partes para aumentar el contacto con el piso (1-4).

La pista

  • Superficie negra y línea blanca de 1,9 cm de ancho; el recorrido mide hasta 60 m (2-1).
  • Solo rectas y arcos. El radio mínimo es de 10 cm y entre dos cambios de curvatura hay 10 cm o más (2-2, 2-3).
  • La línea puede cruzarse a sí misma, a 90° ± 5°, con 10 cm de recta antes y después del cruce (2-2, 2-4).
  • Partida y meta van en una recta, con la meta 1 m detrás de la partida; sus marcas van a la derecha de la línea (2-5).
  • Cada cambio de curvatura lleva una marca a la izquierda de la línea, en el sentido de carrera (2-8).
  • El borde de la pista queda al menos a 20 cm del centro de la línea (2-10).

La corrida

  • Cada competidor tiene 3 minutos y un máximo de 5 corridas; su tiempo oficial es la vuelta más rápida (3-2, 3-5).
  • La proyección del robot tiene que cubrir la línea durante toda la corrida. Si la suelta por completo, o se detiene más de 2 segundos, el intento es fallido (3-1, 3-7).
  • Al terminar, el robot se detiene solo dentro del área de partida y meta, y se queda quieto al menos 2 segundos. Si no queda entero dentro del área, el tiempo no se registra (3-4, 3-6).
  • Con el trazado ya a la vista no se le entrega información de la pista al robot (3-8), ni se le cargan programas durante la competencia (atención 1).

En el robot

Open Lambda Core lee esas marcas con sus dos sensores laterales: mark_right() ve la partida y la meta, y mark_left(), los cambios de curvatura.

Japón y Chile

El All Chile Robot Contest publica su propio reglamento para la categoría, que cambia algunas medidas.

Fuentes: Rules for Robotrace, New Technology Foundation y reglamento Robotracer del All Chile Robot Contest, consultados el 5 de octubre de 2026.
ReglaJapón (NTF)Chile (ACRC)
Tamaño del robotCírculo de 25 cm de diámetro, 20 cm de alto25 × 25 × 20 cm
Ancho de la línea1,9 cm2,0 cm
Entre cambios de curvatura10 cm o más5 cm o más
Pórticos de partida y meta (ancho × alto)40 × 25 cm20 × 12,5 cm
Tiempo por competidor3 minutos5 minutos (regla 3-2)

El reglamento chileno se contradice en el tiempo: su regla 3-2 da 5 minutos por competidor y su definición de la categoría habla de tres. Confírmalo con la organización antes de competir.

07 · Descargas

Archivos

HTML · 2,6 MBPlataforma de puesta en marchaSe guarda y se abre desde el computador, en Chrome o Edge.Descargar
DocumentoManual de armadoEl montaje del robot, paso a paso.En preparación
DocumentoLista de materialesCada pieza de la placa base y del Escudo.En preparación
DiseñoArchivos de las placasLa placa base y el Escudo Core.En preparación