Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Prototipo Sensor de Color Arduino – Identificar y Mostrar Nombres de Colores

Componentes y suministros

Componente Cantidad Notas
Arduino UNO 1
LED RGB difuso ánodo común 1 Ánodo común o cátodo; usa lo que tengas (ajusta lógica en código)
Fotorresistencia (LDR / CdS Cell) 1
Pantalla LCD 16x2 (compatible LiquidCrystal) 1 Ej. Adafruit Standard blanco/azul
Resistencia 10k ohm 2 Para pulsador y CdS
Resistencia 100 ohm 3 150Ω para rojo, 2×100Ω para verde/azul del RGB
Pulsador 12mm (SparkFun) 1
Cables jumper 1
Protoboard 1

Aplicaciones y servicios online

Sobre el proyecto

Versión simplificada del artículo completo para facilitar la reproducción. Consulta el blog del autor para detalles de implementación. Mira el video del proyecto para verlo en acción.

Visión general

Al igual que la visión cromática humana, basada en luz, el modelo RGB abarca más de 16 millones de colores, dispuestos en un espacio 3D donde valores enteros de R, G, B (0-255) son coordenadas. La detección y reconocimiento de color se realizó con componentes electrónicos ópticos y aprendizaje automático: combinación de un LED RGB y una fotorresistencia (CdS/LDR), aislados de luz ambiente. El LED emite y el sensor detecta la intensidad de cada componente (rojo, verde, azul) reflejada por un objeto de color determinado.

Perceptrón Multicapa (MLP)

El MLP es una arquitectura feedforward de Redes Neuronales Artificiales: capa de entrada (no neuronal), capas ocultas y capa de salida. Se entrena con backpropagation (aprendizaje supervisado).

Para este sensor, la red recibe 3 entradas (valores RGB), tiene una capa oculta con 6 neuronas y capa de salida con 10 neuronas (una por color a reconocer). La red ya viene entrenada en el código. Detalles de entrenamiento y dataset en el blog completo.

Reconocimiento de color

El MLP entrenado clasifica patrones espacialmente separables. Durante el entrenamiento, la red mapeó regiones en el espacio RGB 3D; cada región delimitada por hiperplanos representa un color. Todo nuevo patrón RGB (punto 3D) cae en una región y se clasifica según su color.

Para buena generalización, el conjunto de entrenamiento debe cubrir el dominio de uso. Atención a valores mínimos y máximos de cada componente RGB. No alimentes la red con patrones fuera de ese dominio.

El dataset (75 instancias) tiene valores 0-1 (originalmente 0-255, reescalados dividiendo por 255). En la salida, solo una neurona debe dar 1 (one-hot). Como la red entrenada da floats, se hace post-procesado: la neurona con mayor salida → 1, las demás → 0.

Circuito electrónico

La detección ocurre en el circuito, con cómputo en ATmega328 (Arduino). Ver esquemático.

Importante: El código usa LED RGB ánodo común. Si el tuyo es cátodo común, invierte la lógica en el código.

Uso una sola resistencia en el ánodo común (promedio de las que irían en cátodos) por simplicidad; lo ideal es resistencias individuales por cátodo para fidelidad cromática. Mi forma no distorsiona patrones, pero los valores RGB no coinciden exactamente con pantalla/ojo humano.

El LED RGB y la fotorresistencia deben estar adyacentes y aislados de luz ambiente (un tubo de película negro viejo es ideal). Ver video del proyecto.

Teoría del color

La percepción se basa en teoría del color. Sin lentes, solo objetos opacos y mates (evita reflexión especular). La reflexión difusa es clave.

Cuando luz de un color incide en un objeto, se refleja según la composición de ese color. Ej.: luz roja en objeto amarillo → mucha reflexión (amarillo = rojo + verde). Luz azul en amarillo → poca reflexión (poco azul en su composición).

En sistema aditivo (blanco = todos los colores, negro = ninguno), se miden máximos y mínimos de reflexión de cada color del LED RGB sobre objetos coloreados. Esto permite calibrar el circuito para obtener rango real y reescalar a [0,255] (informativo) y [0,1] (entrada red neuronal).

Consejo de oro: tras calibrar, no muevas ni toques los componentes (especialmente en protoboard) ni el aislante de luz ambiente.

Programación

El sensor ejecuta 3 iteraciones al exponer un objeto: rojo → espera estabilización LDR → lectura analógica → guarda reflexión rojo; repite para verde y azul.

Calibración: proceso iterativo 2 veces: para negro y para blanco. Detecta máximos y mínimos (inicialmente ~0 a ~1024 según resolución ADC) de reflexión R, G, B, obteniendo rango real para reescalar.

El tiempo de espera para estabilizar LDR varía según componente; usa delay generoso (yo usé 500 ms) y redúcelo hasta el límite de estabilidad.

En detección, los valores RGB (0-1) alimentan al MLP. Uso Neurona — librería propia para ANNs en Arduino (instalable desde Library Manager). La red ya viene entrenada y lista; pesos ajustados embebidos en el código.

Pruebas

Colores extraídos del dataset para test de reconocimiento (impresos en papel sulfite con inyección de tinta → material opaco, apto). La figura muestra aciertos y errores (números internos = color clasificado erróneamente).

Código

Código en carpeta colorSensor del repo GitHub. Verifica que tu circuito coincida con el esquemático y que la librería Neurona esté instalada (Library Manager).

github.com/moretticb/ColorSensor/

Esquemático

Usa el pulsador según instrucciones en pantalla LCD. Ver imagen del esquemático original.

Proceso de manufactura

  1. Alerta de Sed Inteligente para Plantas: Sensor DIY para Riego Óptimo
  2. Reloj de Palabras en Italiano con Arduino Nano, NeoPixel, LCD y RTC
  3. Sensor de obstáculos IR casero con Arduino – Tutorial fácil con LED IR y fotodiodo
  4. Medidor kWh Sigfox Fiable con Arduino MKR Fox 1200
  5. Monitor de temperatura con Bluetooth usando Arduino Nano
  6. Cerradura por Gestos Sin Contacto: Acceso Seguro con APDS-9960 y Arduino
  7. Kit Compañero Arduino Nano: Componentes y Herramientas Esenciales para Electrónica DIY
  8. Kit Adaptador USB MIDI para Arduino Micro / Leonardo: Lista Completa de Componentes
  9. Circuito de entrada analógica aislada para Arduino
  10. Test de Precisión de Tiempo de Reacción con Arduino UNO
  11. Códigos de Color de Resistencias – Guía Completa para Decodificar Valor, Tolerancia y Estándares E-Series