¿Cómo reconoce un dispositivo (dashcam) si está conectado a una computadora o una fuente de alimentación? [cerrado]

5

Tengo este dashcam A118 , que quiero integrar con un Pi.

Deseo grabar en la tarjeta SD montada mientras estoy conduciendo, y una vez en casa dentro del alcance de WiFi, para descargar los archivos de la tarjeta SD a través de Pi a mi red doméstica.

Esta cámara, cuando está conectada a una fuente de 5 V en el encendedor de mi vehículo, la cámara comienza a grabar de inmediato.

Cuando lo conecto a mi computadora, me pregunta (en la pantalla del dashcam) si funciona en modo de "Almacenamiento masivo" o "Cámara de PC".

Este video muestra cómo se solucionó el problema de una cámara diferente aislando los terminales TX y RX del conexión.

¿Cómo sabe la cámara (o un dispositivo USB normal, como un teléfono) si está conectada a una fuente de alimentación simple oa una computadora?

También, ¿cómo podría usar este hecho para controlar el dashcam, de modo que cuando esté fuera de mi rango de Wifi, registre como lo haría cuando solo se suministre energía, y cuando esté en el rango de Wifi para volver al "Almacenamiento masivo" para que Pi puede acceder a los archivos de video y transferirlos.

Supongo que los relés funcionarían, pero su gran tamaño no lo hace práctico. ¿Los optoacopladores serían una mejor alternativa o hay otras sugerencias que pueda considerar?

    
pregunta A.S.

5 respuestas

7

Muchos dispositivos USB utilizan la especificación de carga de la batería USB para determinar a qué tipo de puerto están conectados.

Los principales tipos de puertos son ...

Puerto de carga dedicado: el cargador indica que se trata de un puerto de carga dedicado al poner en cortocircuito las líneas D + y D juntas.

Puerto descendente estándar: un puerto USB que admite hasta 500 mA de corriente de carga (para un puerto USB 2.0), más datos USB. El dispositivo se enumera en el bus USB para determinar cuánta corriente puede dibujar. El campo bMaxPower en el descriptor del dispositivo USB se usa para pedir energía al host.

Puerto descendente de carga: un puerto USB que admite hasta 1.5A de carga curret, más datos USB. El dispositivo determina que está conectado a un CDP alternando primero la línea D. Si la línea D + sigue la línea D, entonces el dispositivo sabe que está conectado a algún tipo de cargador. A continuación, el dispositivo realiza una detección secundaria alternando la línea D +. Si la línea D permanece baja, entonces el dispositivo sabe que las líneas no están cortocircuitadas entre sí, por lo que debe conectarse a un puerto de carga corriente abajo.

enlace

    
respondido por el user4574
5

Para ser muy concisos, los dispositivos USB utilizan las líneas D + / D para detectar si están conectados a un host USB o un cargador.

Si quisiera que el dispositivo alternara entre los dos modos que describió, podría sugerirle que use un USB 2: 1 mux IC como FSUSB43 conectado a las gpios de la Raspberry Pi. Algo así:

Como@dwizumseñalóenelcomentarioacontinuación,tambiénnecesitaríaagregaruntransistorenlalíneaVBUSde5Vqueseejecutaenlacámaradeltableroparaapagarloyencenderlo,yaquelaconmutaciónD+/Dsolopuededarcomoresultadouncomportamientoindefinido.Parasimplificar,elciclodealimentacióndelalíneaVBUSaldispositivoUSBcuandosecambiaharáqueestélistaparaunnuevodescubrimiento.

Desdeallí,puedeescribirfácilmentesuspropiosscriptsejecutándoseenlaRaspberryPicambiandolosestadosdeesosGPIOS,talvezconlaayudade WiringPi , basado en diferentes eventos como la lista de puntos de acceso a Wi-Fi disponibles.

    
respondido por el Nicolas Schurando
3

¿Cómo sabe la cámara (o un dispositivo USB normal, como un teléfono) si está conectada a una fuente de alimentación simple oa una computadora?

El USB tiene 4 conexiones: 2 para el suministro de 5 V y 2 para los datos.

Un adaptador de corriente generalmente no responde a las señales en las líneas de datos (con la excepción de los protocolos de carga rápida, pero eso es más detección de nivel que los datos que se transfieren).

Una PC responde a las señales en las líneas de datos. La cámara puede solicitar una conexión USB y luego la PC concederá esa solicitud (o no). Alguna información será intercambiada.

Básicamente, la cámara simplemente "habla" a través de las líneas de datos USB tan pronto como detecta la alimentación en la entrada USB. Si no hay respuesta, debe ser una fuente de alimentación "tonta". Si hay una respuesta, debe ser una PC (host USB).

Controlar el comportamiento de la cámara dependiendo de que WiFi esté dentro del alcance es algo que puede hacer el software (firmware) que se ejecuta dentro de la cámara. En general no puedes y no debes cambiar esto. Si se equivoca, la cámara se volverá inútil (inoperable).

    
respondido por el Bimpelrekkie
2

Puedes intentar deshabilitar / habilitar los puertos USB de la Raspberry dependiendo de si deseas o no que la cámara detecte una conexión de datos,

  

Para apagar los puertos USB (esto también apaga la alimentación de Ethernet):

     

echo '1-1' | sudo tee /sys/bus/usb/drivers/usb/unbind

     

Para volver a encender el equipo

     

echo '1-1' | sudo tee /sys/bus/usb/drivers/usb/bind

( enlace )

IIRC, al menos en los viejos Pi, esto no desconectaría las líneas de alimentación de los puertos USB, sino solo la alimentación del chip USB / Ethernet de la Pi, lo que deshabilitaría todas las comunicaciones y la enumeración en esos puertos USB / Ethernet; un dispositivo conectado a uno de los puertos deshabilitados no podrá detectar que está conectado a otra cosa que no sea una fuente de alimentación USB.

    
respondido por el JimmyB
1

Los dispositivos USB (y especialmente los dashcams) son dispositivos inteligentes. Cuando se conectan al host USB, el host realiza la enumeración y emite todas las demás actividades de la interfaz USB. Y un dispositivo USB toma nota de esto.

Cuando está conectado a un cargador tonto, no hay enumeración / comunicación USB. Así es como el dashcam / lo que sea que sepa la diferencia.

Respecto al problema real, la razón por la cual la dashcam no se graba internamente cuando se conecta al host USB funcional, se trata de un diseño de software de dashcam, está diseñado de esa manera. Obviamente, cuando se cortan los cables D + / D en la conexión de la PC a la dashcam (¡no a Tx y Rx!), La comunicación USB cesa, y la dashcam entra en el modo de alimentación estándar del cargador.

    
respondido por el Ale..chenski

Lea otras preguntas en las etiquetas