Puerto USB GND DP DM 5V conectado al microcontrolador de 3.3V

0

Tengo un módulo de cámara ELP ( enlace ). Tiene un puerto que conecta un cable usb2.0, con pines GND DP DM 5V. Quiero conectarlo a un tablero esp8266 nodemcu v0.9, y luego lo enviaré directamente a mi computadora o cargaré un código de red en el tablero, no lo he hecho todavía (no estoy seguro si el micropython puede hacer opencv todavía).

Mi pregunta es sobre la mejor (por ahora la simplicidad es más importante que la velocidad, de todas formas no necesito muchos cuadros por segundo) para conectarlos. Ocasionalmente uso el puerto USB para conectarlo a la computadora, así que realmente no quiero hacer nada allí.

Tengo un ADC externo conectado a los pines SPI del hardware, así que espero que pueda haber algo simple a través del RX / TX, ¿el software SPI quizás ?, o algo más que no conozco. Tengo algunos circuitos integrados para la conversión a nivel lógico, supongo que serán necesarios, TE291s o CD4050BE.

También espero algo lo más universal posible de MCU, ya que el nodemcu v0.9 me está molestando, espero que el nuevo esp3212 sea menos glitchy, o algo completamente distinto.

Muchas gracias, chicos. (He dado nombre a algunas papas fritas, sin embargo soy bastante basura, siempre se agradece el lenguaje del bebé :))

    
pregunta WamboBen

2 respuestas

1

El protocolo USB es un paquete conmutado con fases de entrenamiento de enlace antes de cada paquete. Hacer esto sin un transceptor IC exclusivo se encuentra en la categoría de "difícil a imposible": podría funcionar si un lado se adapta a las fallas del protocolo del otro. Así que me olvidaría de esa idea.

Hay controladores SPI para USB dedicados, pero solo algunos de ellos implementan realmente USB 2.0 de alta velocidad, que probablemente se requiera para el módulo de su cámara (donde "alta velocidad" aparece en la descripción). Cualquier cosa que sea "compatible con USB 2.0" pero que no mencione explícitamente "alta velocidad" debe comenzar la conversación con "usted necesita hablar lentamente conmigo para que yo entienda". Si el módulo de la cámara es capaz incluso de hacer un flujo de baja fps es algo que no sé.

El puerto USB en la placa NodeMCU es un adaptador de usb a serie, por lo que el puerto USB no está conectado a la CPU real, sino a un transceptor USB separado que está conectado a los pines de programación en la CPU, por lo que le permite al host tomar el control de la programación. Esto no se puede revertir, y este controlador solo admite la velocidad máxima de todos modos.

Si desea conectar este módulo, necesita un controlador host USB de alta velocidad, por ejemplo, el FT313H . Este chip recopilaría los datos en su memoria interna para que los recoja la CPU principal, que necesita leerlos a tiempo a través de la interfaz de memoria. La ventaja es que, en teoría, se puede acceder a esta interfaz, lentamente, aunque los GPIO, sin embargo, necesita al menos 12, mejor 20 de ellos, lo que nuevamente es un problema en el 8266.

En este punto, nos estamos acercando a un territorio "ridículo". Necesitaría agregar otra CPU con un bus de memoria externo para leer los datos, comprimirlos de alguna manera (por ejemplo, tirar los cuadros) y pasarlos. a la 8266, lentamente (aún a varios MHz, pero por debajo de la velocidad de datos de 480MHz del USB).

Este no es un proyecto para principiantes. Probablemente me las arreglaría si invierto dos meses y aproximadamente $ 500 en hardware y costos de fabricación.

    
respondido por el Simon Richter
1

Simon Richter ha proporcionado una excelente respuesta de por qué el USB es difícil; Quiero agregar algunos otros puntos (a medida que sucede, estoy trabajando en un proyecto de cámara inalámbrica con un ESP8266).

En tu comentario, mencionaste que quieres 15 fps a 1280x720. Con fotogramas JPEG muy comprimidos, es posible que esté viendo 100kB / fotograma, tal vez un poco menos si de alguna manera puede migrar a un flujo de video comprimido. Pero digamos 100kB / frame. Que es de 15 fps * 100kB / f = 12Mbps. A partir de una pequeña experimentación con el ESP8266, puedo decirles que es muy probable que sea imposible lograr este rendimiento. Pude lograr velocidades de datos de ráfaga de hasta 400 kbps con NodeMCU, escribir C en estado puro podría acelerarlo, pero creo que 12Mbps no es realista. En resumen, incluso si logras obtener los datos en el ESP8266, también es extremadamente difícil obtenerlos a través de WiFi.

No proporcionó muchos detalles sobre su aplicación, pero esta tarea sería relativamente fácil si utilizara una computadora de una sola placa como la Raspberry Pi. Muchos SBC también tienen un puerto de cámara, por lo que puede usar un módulo de cámara MIPI en lugar de USB si lo desea. Un SBC no será tan barato ni tan pequeño como un ESP8266, pero un Orange Pi Zero se acerca bastante (10USD enviado) y puede ser suficiente para su aplicación (no estoy seguro, no he usado uno, caveat emptor). / p>     

respondido por el uint128_t

Lea otras preguntas en las etiquetas