> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oryx.mechatronstudio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Conectar el dispositivo

> Enlazar un generador ESP32 por USB, mandarle la señal y controlarla.

La app puede mandar la señal que está abierta a un **generador ESP32** y
reproducirla por sus salidas.

<Note>
  El enlace es **punto a punto**: todo pasa entre la computadora y el equipo. No
  hay servidor en el medio, no hay cuenta y no sale nada a internet.
</Note>

## Requisitos

| Qué       | Detalle                                                                          |
| --------- | -------------------------------------------------------------------------------- |
| Placa     | ESP32 clásica (WROOM / DevKit v1)                                                |
| Firmware  | El sketch de Oryx Signal, cargado una vez. Ver [Firmware](/dispositivo/firmware) |
| Cable     | El mismo con el que se carga el sketch                                           |
| Navegador | Chrome, Edge, Opera o Firefox 151+                                               |

<Warning>
  **Safari no tiene Web Serial**, así que ahí la opción no se ofrece. Si el
  navegador no la soporta, la app lo dice: *"Este navegador no sabe hablar con el
  puerto serie."*
</Warning>

## Conectar

<Steps>
  <Step title="Dejar la placa enchufada">
    Por USB, con el cable de siempre.
  </Step>

  <Step title="Abrir Dispositivo → Elegir puerto">
    El navegador muestra la lista de puertos y se elige el de la placa.
  </Step>

  <Step title="Esperar el saludo">
    La app se presenta y repite la presentación hasta que el equipo termina de
    arrancar y contesta.
  </Step>
</Steps>

No hay red que cambiar ni dirección que averiguar.

<Tip>
  Abrir el puerto **reinicia la placa** en casi todos los módulos de desarrollo,
  porque el conversor USB usa esas mismas líneas para el arranque automático. No
  se intenta evitarlo: la app insiste hasta que el equipo contesta.
</Tip>

### Si algo falla

| Mensaje                                     | Qué revisar                                                                              |
| ------------------------------------------- | ---------------------------------------------------------------------------------------- |
| *No elegiste ningún puerto*                 | Se canceló el diálogo del navegador                                                      |
| *No se pudo abrir el puerto…*               | El monitor serie del Arduino IDE está abierto y tiene el puerto tomado: hay que cerrarlo |
| *El equipo no contestó*                     | La placa no tiene cargado el firmware de Oryx Signal                                     |
| *El equipo tiene otra versión del firmware* | Hay que recargarle el sketch que viene con esta versión de la app                        |
| *Se perdió el enlace con el equipo*         | El cable se soltó o la placa se reinició                                                 |

## Mandar la señal

El equipo reproduce **de su propia memoria**: primero le mandas la señal entera
y solo después le dices que arranque. Una vez cargada, sigue reproduciéndose aunque
estés editando otra cosa en pantalla.

El panel muestra un resumen —*"3 canales · 240 pasos"*— y el estado del envío:

| Estado                                    | Qué significa                                 |
| ----------------------------------------- | --------------------------------------------- |
| **Todavía no se envió nada**              | El equipo está vacío                          |
| **Enviando…**                             | La señal está viajando                        |
| **La señal está en el equipo**            | Lo que hay dentro es lo que se ve en pantalla |
| **La señal cambió desde el último envío** | Se editó algo: hay que reenviar               |

<Note>
  Lo que sale por el equipo es exactamente lo que dibujaste, incluidas las curvas
  analógicas con sus redondeos.
</Note>

### Avisos de ajuste

Si lo que se ve en pantalla no entra tal cual en el equipo, la app lo dice antes
de mandar:

| Aviso                                                                                                 | Qué pasó                               |
| ----------------------------------------------------------------------------------------------------- | -------------------------------------- |
| *El equipo tiene N salidas para este modo: los canales de más no se envían*                           | Hay más canales que pines              |
| *La señal está vacía: no hay nada que reproducir*                                                     | No hay nada dibujado                   |
| *La señal no entra en la memoria del equipo a la resolución pedida: se envía con N muestras por paso* | Se bajó la resolución para que entrara |

## Controlar la reproducción

| Botón                         | Qué hace                                                  |
| ----------------------------- | --------------------------------------------------------- |
| **Iniciar señal**             | Arranca la reproducción                                   |
| **Parar señal**               | La detiene                                                |
| **Reiniciar desde el inicio** | Vuelve al principio y pone el contador de vueltas en cero |

## Parámetros en vivo

<AccordionGroup>
  <Accordion title="Voltaje">
    En **analógico**, es la amplitud de lo que sale por el DAC, entre 0 y 3,3 V.

    En **digital**, un pin sale a 3,3 V o a 0 y no sabe de niveles intermedios.
    Ahí este valor viaja como **tensión de referencia** para la etapa externa
    —divisor, buffer o traductor de nivel— que fija la altura real de los pulsos.

    <Warning>
      Sin esa etapa externa, en digital los pines salen siempre a 3,3 V y el ajuste
      de voltaje no cambia nada.
    </Warning>
  </Accordion>

  <Accordion title="Tiempo de paso">
    Cuánto dura cada paso de la señal, en microsegundos.
  </Accordion>

  <Accordion title="Ciclos (RPM)">
    Con **0**, manda el tiempo de paso tal cual.

    Con **más de 0**, una vuelta entera de la señal es una vuelta del motor:

    ```
    tiempo de paso (µs) = 60 000 000 / (rpm × pasos totales)
    ```

    Es lo que convierte una señal CKP en un barrido de régimen.
  </Accordion>
</AccordionGroup>

<Note>
  Cambiar el tiempo de paso o los ciclos **rehace la vuelta que está en curso**,
  para que el cambio se vea en el osciloscopio en el momento. El contador de
  vueltas no se pone en cero: para eso está *Reiniciar*.
</Note>

## Si se corta el cable

La señal se para sola y las salidas bajan. Es a propósito: el equipo no puede
enterarse de que cerraste la pestaña, así que si pasa un rato sin recibir nada
da el enlace por terminado.

Vuelve a conectar y a mandar la señal para seguir.

## Salidas de la placa

| Modo          | Dónde sale                                                                     |
| ------------- | ------------------------------------------------------------------------------ |
| **Digital**   | GPIO 16, 17, 18, 19, 21, 22, 23, 13 — un pin por canal, en el orden del editor |
| **Analógico** | GPIO 25 (DAC1) y GPIO 26 (DAC2) — hasta dos canales                            |

En digital, el valor de voltaje sale por **GPIO 25** como tensión de referencia
continua.
