¿Mal uso intencional del puerto USB en un Arduino?

4

Quiero tomar un Arduino y después de programarlo en la PC como es normal a través de USB, presionar un botón o algo y cambiar su modo para que se comporte de manera diferente. es posible? Me gustaría interactuar con esto:

Lospinesson+1.5V,reloj,datos,tierra.Lacajaazulenlapartesuperioresloquemegustaríareemplazarconelarduino.EstánutilizandounconectorminiUSBparalaconexiónserie.Pareceunaformamutantede SPI ya que el reloj es desde la caja (con lectura) hasta la diapositiva y los datos del MISO vienen En respuesta con pulsos de reloj de la diapositiva. (actualización: utiliza un protocolo de 21 bits con reloj de 9kHz y el código de Yuriystoys es casi plug and play)

Estoy trabajando en leer la información mientras estoy en paralelo a la conexión a través de cables que soldé a las almohadillas de la placa.

Actualización: terminé de soldar < conector USB A a través del orificio en una placa de creación de prototipos y con eso. Enruté + 3.3V al pin 1, configuré un divisor de voltaje para el reloj ( D6) 330 / 470Ω en el pin 2, el pin 3 enrutado a MISO (D7) y la conexión a tierra al pin 4. Estoy seguro de que esto es física / eléctricamente imposible de implementar usando el puerto USB existente en la placa.

Mientrasobtuvelosresultadosqueestababuscando,latecnologíadelecturadelaescalabasadaencapacitanciairíalentamentealaderiva,haciendoquelosresultadosfueraninexactosconeltiempo.Necesitolarepetibilidadyladesviaciónde.002"en 10 minutos no la cortaré. Lo estoy revisando con una escala deslizante de vidrio de 1 micrón de DroPros.com y mantendré una posición fija en EEPROM entre las calibraciones.


LapantallaTFTeslaentrada Adafruit 1.8 "TFT con tarjeta SD y joystick de 5 vías . En mi opinión, es un escudo indispensable para E / S ; fácil de programar, fácil para la entrada del usuario y bastante versátil.

    
pregunta Chris K

3 respuestas

5

¿Entonces el puerto usb está siendo un conector general, no un dispositivo estándar USB? Si es así, simplemente obtenga un puerto o cable USB y conéctelo a las salidas de Arduino.

Si se está utilizando como un dispositivo esclavo usb real, entonces eso es mucho más complicado.

De cualquier manera, si desea usar el puerto usb existente, necesitará un arduino que use un AVR ic como puerto usb y lo reprograme para que pueda realizar dos funciones (no es simple). Los arduinos más viejos usan un FTDI FT232R, un USB dedicado a IC en serie que no funcionaría bien con lo que quieres hacer.

    
respondido por el Passerby
4

Hay diferentes tipos de Arduino:

  • El Arduino Uno utiliza un microcontrolador separado (ATmega16u2) para la comunicación USB. La reprogramación es posible si sabes lo que estás haciendo, pero a menos que tengas un programador externo, esto es muy arriesgado.
  • Los Arduinos más viejos usan un chip FTDI para la comunicación USB, y aunque el lado de la serie puede ser reprogramado, no creo que el lado del USB pueda.
  • El Arduino Leonardo y Micro usan un ATmega32u4 con capacidad USB como su microcontrolador principal, por lo que son más susceptibles de hackers como este.

En los AVR compatibles con USB utilizados para Arduinos, los pines USB no se asignan a un puerto de datos normal. Sin embargo, de acuerdo con la hoja de datos, se pueden controlar a través del registro UPOE , por lo que teóricamente es posible lo que pides. Sin embargo, parece mucho más fácil usar otros pines para esto.

    
respondido por el microtherion
2

Esto no será posible sin cambios en el circuito debido a las conexiones de alimentación fijas al conector USB, que parecen ser incompatibles con la conexión de alimentación que mencionas.

Si no fuera por el problema de alimentación, con un UNO o similar, probablemente podría reprogramar la interfaz USB Atemga para usar las líneas usb en lugar de GPIO, pero los niveles de voltaje podrían no ser seguros para este dispositivo.

Pero realmente conseguir un cableado en los pines GPIO del Atmega328p principal, quizás después del circuito de traducción de nivel, será lo más sensato.

    
respondido por el Chris Stratton

Lea otras preguntas en las etiquetas