Firmware y circuito de conexión directa USB 2.0 de ATtiny45

9

Quiero hacer mi propio dispositivo USB modular con un ATtiny45 que simplemente envía datos a la PC a través de USB. No estoy leyendo datos, por lo que una conexión de una sola vía (ATtiny - > PC) estaría completamente bien.

Estoy utilizando un Arduino Uno como ISP con el croquis estándar de ArduinoISP cargado desde el software Arduino. Estoy pensando en usar AVRDUDE para programar el ATtiny45 con el Arduino como ISP porque quiero poder usar el código C compilado en HEX ya que es más avanzado que el lenguaje de programación Arduino.

Mis pensamientos básicos del circuito:

Comopuedever,quierounaconexiónUSB"directa". Hasta ahora sé que tengo que usar una solución basada en software para esto.

  1. He logrado que SoftwareSerial funcione con mi ATtiny45. Para esto, he usado el software Arduino para programar el ATtiny45 con el siguiente código:

    #include <SoftwareSerial.h>
    #define rxPin 3
    #define txPin 4
    SoftwareSerial serial(rxPin, txPin);
    
    void setup() {
        pinMode(rxPin, INPUT);
        pinMode(txPin, OUTPUT);
        pinMode(led, OUTPUT);     
        serial.begin(4800);
    }
    
    void loop() {
        serial.println("1");
        delay(1000);
    }
    

    Tenga en cuenta que no uso el Pin 3 (todavía), pero necesito definirlo para SoftwareSerial.

    De esta manera, usando SoftwareSerial, pude enviar datos de ATtiny directamente al pin TX de mi Arduino UNO que tenía un boceto en blanco cargado para esta prueba. Estaba usando el Monitor Serial del software Arduino para leer los datos en COM4 (en mi caso) porque mi PC no reconoció ningún dispositivo (puerto COM) porque intenté conectar la ATtiny programada directamente a un cable USB.

    Desafortunadamente, solo obtuve caracteres Unicode extraños en el Monitor Serial. Creo que es porque los datos están en formato hexadecimal. Así que me he dado cuenta de que necesito conectar un USB / Serial Converter entre el USB y el ATtiny45 ... He buscado tales convertidores, pero no quiero usar ninguna Tableros hechos, ya que quiero todos mis componentes en un solo tablero. Creo que un chip FTDI sería demasiado "demasiado" para mi proyecto, ¿no es así? (Tiene pines demasiado pequeños para soldar ...)

  2. V-USB fue mi segundo enfoque, ya que no necesita un convertidor USB / serie (como sé). Así que para usar V-USB necesitaría usar AVRDUDE como mencioné anteriormente.

    He encontrado este buen ejemplo EasyLogger V-USB . Contiene un diseño de circuito y ejemplo de firmware. (C / C ++ / HEX)

    Lo único que quiero saber es: ¿Realmente necesito hacer que mi circuito se vea como se muestra en el ejemplo? - >

¿QuémásnecesitosabersobreestetipodeconexiónUSB?(¿PorquénecesitounconvertidorUSB/Serial?¿Puedosimplementeconectarel+5yelVCC?¿Quécomponentesnecesitoabsolutamente?¿QuétipodeseñaldeboenviaratravésdeTX?¿Bromos?¿Quévoltajehace?necesitaser?)

Graciasportodastusrespuestas.

ACTUALIZAR

Aquíhayalgunosenlacesadicionalesquerealmentemeayudaronenalgunospuntos.Perotodavíanoloentendícompletamente...

elprimero-> enlace

y el segundo - > enlace (desplácese hacia abajo hasta la "Serie Salida "sección)

    
pregunta Ace

3 respuestas

5

Puede comunicar el ATtiny45 a USB directamente, sin un convertidor FTDI.

Para que todo funcione, necesitará la biblioteca V-USB .

Un muy buen ejemplo de que todo funciona es aquí , que usa el mismo ejemplo de EasyLogger.

El mismo autor tiene otros consejos y proyectos agradables con USB y uC.

Un circuito de muestra con el ATtiny:

simular este circuito : esquema creado usando CircuitLab

    
respondido por el Butzke
5

Básicamente, USB es un protocolo de comunicación de alto nivel con requisitos específicos para la conducción, temporización y terminación de nivel de línea de señal. No es tan simple como en serie, tiene líneas de datos diferenciales y codificación NRZI, sondeo requerido, reconocimiento, etc. Es por eso que necesita un adaptador USB / serie, o por qué necesita una implementación de software o hardware USB.

Mientras que el USB usa 5V de potencia, las líneas de señal son en realidad de 3.3V a 3.6V. Esta es la razón por la que el circuito VUSB que muestra utiliza diodos zener en esas dos líneas. El Tiny no puede simplemente funcionar a 3.3V porque no se puede sincronizar a los 16MHz necesarios a 3.3V.

El resto de las partes, R1-R3, D1, D2 y C1, C2 son las partes mínimas requeridas. Eso no es realmente pedir mucho por las características que obtienes. Consulte esta página para obtener una lista de todos los proyectos que utilizan vusb.

El interruptor, R4 y LED1 forman parte del ejemplo de firmware de registro de datos específico, y se pueden evitar si no lo necesita / cambia el firmware.

    
respondido por el Passerby
1

Hay demasiadas preguntas para responder en una publicación, pero aquí hay algunos puntos rápidos:

Algunos microcontroladores contienen un "punto final" USB y el hardware relevante, pero el sitio Atmel muestra que ATTiny45 no lo hace.

Por lo tanto, no puede simplemente conectar los puertos del microcontrolador a un conector USB como ese, porque el USB es un bus complicado tanto a nivel electrónico como de protocolo.

Sin embargo, como se indica en los comentarios a continuación, está buscando en la línea correcta con V-USB, no he usado esto, así que dejaré que otros comenten.

Los chips FTDI no son demasiado difíciles de soldar, pero una PCB adecuada con resistencia de soldadura lo hará más fácil.

Anteriormente he usado algo como este cable FT232 :

Cable USB FT232 http://www.ftdichip.com/Images/TTL-232R1.jpg

Tiene el chip FTDI incorporado en el conector USB y maneja la traducción en todos los niveles mientras que también suministra energía. El extremo es un simple conector de paso de 0.1 "que puede conectar a un encabezado de pin.

Están disponibles en eBay a precios razonables.

    
respondido por el David

Lea otras preguntas en las etiquetas