Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenMicro

OpenMicro convierte controles físicos conectados a un Arduino Uno R3 en acciones y estados de Codex en el ordenador.

Estado actual

El primer flujo útil ya permite usar el pulsador conectado entre D2 y GND como tecla de voz:

mantener pulsado
      ↓
Arduino emite BUTTON PRESS
      ↓
el puente inicia Dictation en Codex
      ↓
el micrófono del ordenador captura la voz
      ↓
soltar → BUTTON RELEASE → Codex detiene y transcribe

El Arduino no captura audio. Igual que el Codex Micro original, solo actúa como control físico; Codex usa el micrófono del ordenador.

El segundo pulsador, conectado entre D3 y GND, envía la transcripción con Enter. El flujo completo queda así: mantén D2 para hablar, suéltalo y espera a que aparezca el texto; después pulsa D3 para enviarlo. Por seguridad, D3 se ignora mientras D2 mantenga activo el dictado.

El montaje incorpora ahora un LED RGB de cátodo común con sus canales en los pines PWM D9, D10 y D11, cada uno protegido por una resistencia de 220 Ω. El puente lo usa como indicador periférico:

  • apagado antes de conectar y al cerrar limpiamente el puente;
  • blanco cuando el puente está conectado y no hay una acción activa;
  • azul fijo mientras se mantiene el dictado;
  • azul pulsante mientras Codex prepara o procesa el resultado;
  • destello verde al enviar una acción;
  • rojo si falla una acción del puente.

El protocolo ya contempla también verde estable para una tarea completada y ámbar cuando hace falta una respuesta. Esos dos estados no se activan automáticamente todavía, porque el puente actual solo consume los eventos del Arduino y aún no dispone de una fuente de estado de tareas de Codex.

Un potenciómetro de 10 kΩ conectado a A0 selecciona el esfuerzo de razonamiento del siguiente turno en cuatro zonas: LOW, MEDIUM, HIGH y XHIGH. El firmware filtra el ruido del ADC y aplica histéresis en los límites para que una pequeña oscilación eléctrica no cambie repetidamente de nivel. El puente lleva el selector de Codex al mínimo y avanza hasta la zona elegida, por lo que la posición es absoluta y no depende del nivel anterior. Si se gira mientras D2 mantiene el dictado, el cambio se aplaza hasta soltar el botón. La lectura y el cambio entre zonas ya se han comprobado con el potenciómetro físico conectado al Uno R3.

Usar el botón de voz

Requisitos:

  • Windows o macOS y la aplicación de escritorio de Codex abierta.
  • El Arduino conectado por USB con OpenMicro.ino cargado.
  • Un chat de Codex abierto para recibir el texto dictado.
  • Permiso de micrófono concedido a Codex.
  • En Codex → Settings → General → Dictation, el atajo Hold-to-dictate hotkey configurado como Ctrl+Shift+D.
  • En Codex → Settings → Keyboard Shortcuts: Decrease reasoning effort configurado como Ctrl+Alt+, e Increase reasoning effort como Ctrl+Alt+..
  • En los controles de modelo de Codex, LOW, MEDIUM, HIGH y XHIGH disponibles en ese orden. Se pueden conservar niveles adicionales por encima de XHIGH, pero no niveles adicionales por debajo de LOW.
  • Rust instalado únicamente si quieres recompilar el puente.

Para recompilar el ejecutable desde el código fuente:

cargo build --release --manifest-path host/Cargo.toml

Windows

El binario preparado para usar está en la raíz del repositorio: OpenMicro.exe. Conecta el Arduino y haz doble clic. El propio programa intenta detectarlo y mantiene la ventana abierta si encuentra un error, sin necesitar un lanzador adicional.

También puedes ejecutarlo desde una terminal para consultar o indicar el puerto:

.\OpenMicro.exe --list-ports
.\OpenMicro.exe --port COM5

macOS

./host/target/release/OpenMicro --list-ports
./host/target/release/OpenMicro --port /dev/cu.usbmodem1101

Los nombres son ejemplos: usa el puerto mostrado por --list-ports. Si solo se detecta un Arduino o adaptador USB serie, puedes omitir --port y el puente intentará elegirlo automáticamente. Déjalo ejecutándose:

  1. Mantén pulsado el botón de D2 y habla.
  2. Suéltalo para detener la grabación.
  3. Espera a que Codex deje el texto transcrito en el compositor.
  4. Revisa o corrige el texto.
  5. Ajusta el potenciómetro si quieres cambiar el razonamiento del siguiente turno.
  6. Pulsa el botón de D3 para enviarlo.

El puente activa la ventana de Codex antes de enviar su comando de dictado. En Windows lo hace mediante la API del sistema; en macOS usa Launch Services. No invoca PowerShell ni AppleScript. Si el sistema no permite activar la ventana pero Codex ya está enfocado, usa --no-activate-codex.

En Windows, Codex crea también ventanas auxiliares para el indicador flotante de dictado. El puente distingue esas ventanas de la principal seleccionando la ventana visible de Codex con mayor superficie y comprueba que haya recibido el foco antes de iniciar la grabación. Para superar la protección de Windows contra cambios de foco iniciados por procesos en segundo plano, enlaza temporalmente las colas de entrada implicadas mediante la API nativa y las separa inmediatamente después.

El puente mantiene físicamente pulsadas Ctrl, Shift y D durante todo el tiempo que permanece pulsado el botón. Al soltarlo libera las tres teclas. Esto usa el atajo global Hold-to-dictate, no el comando local Dictation que solo inicia una grabación.

Cada mensaje REASONING ... activa primero ocho veces Decrease reasoning effort, suficiente para saturar el selector en su mínimo, y después activa Increase reasoning effort de cero a tres veces. Es una adaptación de OpenMicro basada en comandos configurables de la aplicación, no el protocolo privado del Codex Micro comercial. El nivel se aplica al compositor y, por tanto, al siguiente turno; no modifica un turno que ya esté ejecutándose. La disponibilidad final de cada nivel depende del modelo elegido en Codex.

Detén el puente con Ctrl+C. No abras simultáneamente el monitor serie del Arduino IDE: un puerto serie solo puede pertenecer a un programa a la vez.

Primera ejecución

La primera vez, el sistema puede pedir permisos. Si no aparece la grabación, comprueba:

  1. Codex → Settings → General → Dictation → Hold-to-dictate hotkey: asígnale Ctrl+Shift+D. Es un ajuste distinto del atajo local Keyboard Shortcuts → Dictation, aunque ambos puedan mostrar la misma combinación.
  2. Codex debe tener permiso para usar el micrófono.
  3. En macOS, el terminal o el ejecutable necesita permiso en Ajustes del Sistema → Privacidad y seguridad → Accesibilidad para generar el atajo.
  4. El puerto y la velocidad: el firmware usa 115200 baudios.
  5. Para comprobar el potenciómetro sin el puente, abre el monitor serie a 115200, gíralo de tope a tope y busca líneas [DEBUG] POT raw=... filtered=... level=.... raw debería recorrer aproximadamente 0–1023.

Prueba local del puente

Las pruebas no abren Codex, no usan el micrófono y no necesitan el Arduino:

cargo test --manifest-path host/Cargo.toml
cargo run --manifest-path host/Cargo.toml -- --dry-run --input tests/voice-bridge-input.txt

Comprueban que los mensajes serie duplicados o fuera de orden no generen atajos adicionales, que los niveles repetidos no se vuelvan a aplicar y que un cambio de razonamiento durante el dictado se aplace correctamente. --input solo se admite junto con --dry-run, para que un archivo de prueba nunca pueda pulsar teclas reales por accidente.

Alcance de esta integración

La aplicación ofrece un comando local Dictation y un atajo global configurable Hold-to-dictate. OpenMicro usa el segundo: mantener para grabar y soltar para transcribir. El hardware Codex Micro comercial dispone además de una integración privada de dispositivo. El puente está escrito en Rust y usa el mismo código de protocolo en Windows y macOS; solo la activación de la ventana es específica de cada sistema. El segundo botón envía Enter solo cuando el usuario lo pulsa, por lo que la transcripción puede revisarse antes de iniciar una tarea.

Fuentes oficiales:

Hardware

Consulta hardware/README.md para el cableado, el circuito de SimulIDE y la actualización del firmware simulado.

About

Codex Micro clone for the Arduino Uno R3

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages