
Chisme 126 del lince: sensor de color ESP32, CAMALEÓN el vigía
Sierra Bermeja, final de verano. El Lince de la Noche camina por un sendero seco con la Gata Montesa, que se agacha junto a una mata de jara.
—Mira, Lince. Esta hoja está verde. Aquella, a dos pasos, está marrón. ¿Cuánto tarda una chispa en convertir la segunda en un problema?
—Mucho menos que en la primera —dice el Lince—. Pero yo no veo el color igual que una máquina. Dos hojas pueden parecerme «verdes» y ser muy distintas.
—Entonces te falta un vigía que mire el color por ti y que te lo diga con números.
Esa noche, el Lince saca de su caja una placa, un sensor pequeñito y una libreta. Nace CAMALEÓN: el Centinela Analizador de Matices Ambientales: Luz, Espectro y Observación Natural.
Introducción: un sensor de color ESP32
En este chisme construimos un sensor de color ESP32 con el módulo QB105 de Acebott. Apoyamos un objeto sobre el sensor y una página web, conectada por USB con Web Serial, pinta su color, le pone nombre, aprende colores nuevos con una IA sencilla y guarda los datos en un CSV. Todo sin servidor: los datos no salen de tu navegador.
Puedes practicar con la página antes de tener la placa: tiene un botón «Simular» en el simulador de CAMALEÓN.
Por qué un sensor de color ESP32
El color da pistas sobre el entorno: una hoja verde y otra seca no reflejan la misma luz, la tierra mojada es más oscura que la seca, una roca de peridotita no se parece a una caliza. Un sensor de color ESP32 convierte esas diferencias en números que se pueden guardar, comparar y representar. Es el siguiente paso de la cadena sensor → dato → análisis → conclusión del proyecto AIDARAC, después de la estación meteorológica del chisme 125.
Una advertencia honesta: este sensor mide a unos milímetros de distancia, así que no es un detector de incendios ni un identificador de plantas. Es una herramienta para aprender a medir color y a dudar de lo que mide.
Cómo funciona el sensor de color ESP32
El QB105 mide la luz que refleja un objeto con cuatro canales: rojo, verde, azul y un cuarto canal de «brillo» (luz total). La librería que genera ACECode es la del chip TCS34725 de Adafruit, que da valores de 16 bits, es decir, de 0 a 65535. El sensor lleva dos LED blancos para iluminar el objeto, con un pequeño interruptor, y funciona a una distancia de unos 3 a 10 mm.
La ESP32 lo lee por I2C, un bus de dos cables (SDA para los datos y SCL para el reloj) que permite conectar varios sensores en los mismos pines. Después escribe los cuatro valores por el USB y la página los recibe con Web Serial.
Qué necesitamos para el sensor de color ESP32
- Placa ESP32 Plus de Acebott (sin la shield 9 en 1 encima).
- Sensor de color QB105 de Acebott: consulta su página oficial.
- Cuatro cables Dupont hembra-hembra y un cable USB de datos.
- ACECode y un ordenador con Chrome, Edge o Firefox.
Conexión del sensor de color ESP32
| Sensor QB105 | ESP32 Plus |
|---|---|
| SDA | GPIO21 (pin SDA) |
| SCL | GPIO22 (pin SCL) |
| VCC | 3V3 (3,3 V) |
| GND | GND |
- Usa los pines hembra de la propia placa ESP32 de Acebott (los grupos de pares de hembras). En nuestras pruebas, con otras conexiones el puerto I2C se desconectaba; con estas funciona mucho mejor. Un contacto flojo en I2C hace que el sensor deje de responder.
- VCC a 3,3 V, no a 5 V. El sensor admite de 3,3 a 5 V, pero a 5 V sus resistencias llevarían las líneas I2C a 5 V, y la ESP32 solo soporta 3,3 V en sus pines.
- El interruptor del sensor enciende o apaga sus dos LED. Para medir siempre con la misma luz, déjalos encendidos.
El programa del sensor de color ESP32 en ACECode
El bloque del sensor está en el grupo «Robot»: Sensor de color con un desplegable (Brillo, Rojo, Verde, Azul). No hace falta la extensión de la shield ni crear variables.
al hacer clic en la bandera
Serial 115200 imprimir "Hola"
por siempre
Serial 115200 imprimir unir "R:" + [Sensor de color: Rojo]
Serial 115200 imprimir unir "G:" + [Sensor de color: Verde]
Serial 115200 imprimir unir "B:" + [Sensor de color: Azul]
Serial 115200 imprimir unir "C:" + [Sensor de color: Brillo]
esperar 0.3 segundos
Cada medida son cuatro líneas: una letra, dos puntos y el valor (R:12000). El brillo (C:) va el último porque la página guarda una muestra al recibirlo. El «Hola» del principio solo sirve para comprobar que la placa arranca.
Un fallo muy típico: el bloque «puerto serie imprime continuamente» no añade salto de línea, y el monitor serie de ACECode no muestra nada. Usa el bloque Serial … imprimir.
Cómo subir el programa y conectar la página
- Conecta la ESP32 Plus por USB y, en ACECode, elige la placa ESP32 y su puerto. Sube el programa.
- Cierra ACECode (o desconecta su puerto y su monitor serie): un puerto USB solo lo puede usar un programa a la vez.
- Abre la página de CAMALEÓN y pulsa «Conectar placa (USB)».
- Elige «CP2102 USB to UART Bridge Controller (COMxx)» e ignora los «Dispositivo periférico Bluetooth». Si no ves datos, pulsa el botón EN de la placa: verás «Hola» y después los valores.
- Para subir otro programa, pulsa antes «Desconectar» en la página.
Si algo falla: «No se pudo abrir el puerto» significa que ACECode lo tiene ocupado; «El puerto ya estaba abierto» se arregla recargando la página (F5); y si no llega nada, comprueba el cable USB y los cuatro cables del sensor.
Cómo usar CAMALEÓN
- Calibra. Apoya un folio blanco sobre el sensor y pulsa «Calibrar blanco». Después tápalo del todo y pulsa «Calibrar negro». Así la página convierte los valores de 0 a 65535 en colores reales.
- Cuidado con la saturación. Si un valor llega a 65535, el sensor está saturado (demasiada luz) y ya no distingue. Aleja un poco el objeto o apaga los LED del sensor.
- Enseña a la IA. Apoya un objeto, escribe su color («hoja verde», «hoja seca», «tierra») y pulsa «Añadir ejemplo». Con tres o cuatro ejemplos de cada uno, la página empieza a adivinar con el método de los vecinos más cercanos (KNN): compara el color nuevo con tus ejemplos y elige el más parecido. Se ejecuta en tu navegador y no envía nada a ninguna parte.
- Guarda y descarga. «Guardar en la paleta» deja un cuadrito con el color, y «Descargar CSV» guarda todas las muestras.
Qué mide realmente un sensor de color ESP32
CAMALEÓN no ve «verde»: ve cuánta luz roja, verde y azul llega al sensor, y eso depende del objeto, de la distancia, de los LED y de la luz de la habitación. Tres canales tampoco son un espectro completo: dos objetos distintos pueden dar la misma terna y parecer iguales. El nombre del color lo ponemos nosotros con reglas, o la IA con ejemplos, y puede equivocarse. Una hoja seca da pistas sobre el estado de la planta, pero no es una prueba de nada.
Para el aula con el sensor de color ESP32
- ¿Qué mide cada canal y en qué unidades? ¿Qué significa que un valor llegue a 65535?
- Mide el mismo folio con los LED encendidos y apagados, y con la luz de clase encendida y apagada: ¿cuánto cambian los valores?
- Mide el mismo objeto a 3, 6 y 10 mm: ¿cómo cambia el brillo con la distancia?
- Recoge diez hojas verdes y diez secas del patio: ¿se separan sus valores? ¿Dónde se solapan?
- Entrena a la IA con cinco ejemplos de cada color y pruébala con otros tres: ¿en cuáles se equivoca? ¿Por qué?
- ¿Qué hipótesis plantearías y qué datos más necesitarías para decir algo sobre el estado de una planta?
Retos con el sensor de color ESP32
- Reto 1: haz que funcione y que la página pinte el color de un folio de color.
- Reto 2: calibra el blanco y el negro y compara el color antes y después.
- Reto 3: entrena a la IA con cuatro colores y mide su acierto con muestras nuevas.
- Reto 4: guarda un CSV de diez objetos y represéntalo en una hoja de cálculo.
- Reto 5: añade un LED o el zumbador que avise cuando el color sea «marrón».
- Reto 6: haz una «carta de colores» de Sierra Bermeja: hojas, tierra y rocas del entorno.
- Reto 7: usa dos sesiones distintas y compara cuánto se parecen sus medidas.
Qué hemos aprendido del sensor de color ESP32
Hemos montado un sensor de color ESP32 con CAMALEÓN, lo hemos conectado por I2C y hemos leído sus valores desde una página web con Web Serial. Hemos aprendido a calibrar con blanco y negro, a detectar la saturación y a entrenar una IA muy sencilla. Y lo más importante: que un color medido es un dato que depende de la luz, de la distancia y del sensor.

Etiqueta:acebott, acecode, AIDARAC, camaleón, esp32, I2C, ies monterroso, montesteam, sensor de color, tcs34725, web serial



