Reconocimiento Facial Logo

Reconocimiento Facial IA

Análisis facial en tiempo real

← Volver al inicio
Desconectado
Enviados: 0
Último paquete:
Posición X
0
Posición Y
0
Distancia
0
Guiñada
0
Inclinación
0
Rotación
0
Boca
0
Ojo Izquierdo
0
Ojo Derecho
0
Sonrisa
0
Rostro Visible
CONFIANZA
0
PARPADEO

📱 Programa tu micro:bit

🎯 Para usar esta app, necesitas programar tu micro:bit con uno de estos códigos:

💡

Versión LEDs

Control básico con LEDs

⬇️ Descargar .HEX
🤖

Cabeza Robótica

5 servos + motor driver

⬇️ Descargar .HEX

📝 Código fuente en MakeCode:

🔗 Abrir en MakeCode
⚠️ Importante - Versión Cabeza Robótica:
• Compatible con placas con motor driver integrado
NO funciona con WUKONG (requiere adaptación)
• Necesita 5 servomotores SG90 en puertos S1-S5
• Usa fuente externa para servos (recomendado)
💡 ¿Cómo instalar? Conecta micro:bit por USB → Copia archivo .hex → ¡Listo!

🚀 Ideas de Proyectos

🤖 Robot seguidor de caras
Usar servomotores para que el robot siga tu movimiento
🎵 Música con expresiones
Tocar diferentes notas según la sonrisa o apertura de ojos
🎮 Juego de gestos
Controlar un juego moviendo la cabeza o haciendo muecas
📊 Monitor de atención
Detectar si el estudiante está prestando atención en clase

🔧 Cómo usar

  1. Permitir cámara cuando el navegador lo pida
  2. Conectar micro:bit con el botón “Conectar al Micro:bit”
  3. Encender cámara si está apagada y mostrar líneas si querés ver el overlay
  4. Mostrar tu cara a la cámara
  5. Ver los parámetros actualizándose en tiempo real

💻 Código MakeCode

⚠️ PROGRAMA REQUERIDO para tu micro:bit

ORDEN CRÍTICO: Tu programa debe tener "bluetooth.startUartService()" ANTES de cualquier otra función Bluetooth.

🚀 VERSIÓN OPTIMIZADA (200ms):
✅ SIN sonidos para evitar trabas
✅ Recepción rápida a 200ms
✅ Validación silenciosa de paquetes
🌐 Abrir MakeCode
  • Recibe datos faciales por Bluetooth
  • Muestra emociones con LEDs y sonidos
  • Detecta sonrisas y parpadeos
  • Servo control para seguimiento facial

🔗 Código actualizado - Abrir en MakeCode:

/**
 * Variables globales
 */
let rostroVisible = 0
let sonrisa = 0
let giro = 0
let ojoDerecho = 0
let ojoIzquierdo = 0
let boca = 0
let inclinacion = 0
let guinada = 0
let distancia = 0
let posY = 0
let posX = 0
let datos = ""

// ORDEN CRÍTICO: bluetooth.startUartService() PRIMERO
bluetooth.startUartService()
basic.showIcon(IconNames.Square)

// Eventos de conexión
bluetooth.onBluetoothConnected(function () {
    basic.showIcon(IconNames.Yes)
})
bluetooth.onBluetoothDisconnected(function () {
    basic.showIcon(IconNames.No)
})

// Recepción de datos (19 caracteres + NewLine)
bluetooth.onUartDataReceived(serial.delimiters(Delimiters.NewLine), function () {
    datos = bluetooth.uartReadUntil(serial.delimiters(Delimiters.NewLine))
    if (datos.length != 19) {
        return
    }
    posX = parseFloat(datos.substr(0, 2))
    posY = parseFloat(datos.substr(2, 2))
    distancia = parseFloat(datos.substr(4, 2))
    guinada = parseFloat(datos.substr(6, 2))
    inclinacion = parseFloat(datos.substr(8, 2))
    boca = parseFloat(datos.substr(10, 2))
    ojoIzquierdo = parseFloat(datos.substr(12, 2))
    ojoDerecho = parseFloat(datos.substr(14, 2))
    giro = parseFloat(datos.substr(16, 1))
    sonrisa = parseFloat(datos.substr(17, 1))
    rostroVisible = parseFloat(datos.substr(18, 1))
    led.plotBarGraph(guinada, 99)
    
    if (rostroVisible == 0) {
        basic.showLeds(\`
            . . . . .
            . . . . .
            . . # . .
            . . . . .
            . . . . .
            \`)
        basic.pause(100)
    } else if (posX < 35) {
        basic.showArrow(ArrowNames.West)
        basic.pause(100)
    } else if (posX > 65) {
        basic.showArrow(ArrowNames.East)
        basic.pause(100)
    } else if (posY < 35) {
        basic.showArrow(ArrowNames.North)
        basic.pause(100)
    } else if (posY > 65) {
        basic.showArrow(ArrowNames.South)
        basic.pause(100)
    } else if (boca > 50) {
        basic.showIcon(IconNames.Surprised)
        basic.pause(100)
    } else if (ojoIzquierdo < 30) {
        basic.showLeds(\`
            . . . . .
            . . . # #
            . . . . .
            . # # # .
            . . . . .
            \`)
    } else if (distancia > 60) {
        basic.showIcon(IconNames.Happy)
    } else if (ojoDerecho < 30) {
        basic.showLeds(\`
            . . . . .
            # # . . .
            . . . . .
            . # # # .
            . . . . .
            \`)
    } else {
        basic.showIcon(IconNames.Chessboard)
    }
})
let rostroVisible = 0, sonrisa = 0, giro = 0, ojoDerecho = 0
let ojoIzquierdo = 0, boca = 0, inclinacion = 0, guinada = 0
let distancia = 0, posY = 0, posX = 0, datos = ""
basic.showIcon(IconNames.Square)
bluetooth.startUartService()
              

⚡ Consejos

  • Buena iluminación mejora la detección
  • Fondo despejado evita falsas detecciones
  • Mantén distancia de 50cm-1m de la cámara
  • Evita movimientos bruscos para mejor seguimiento