Quero criar meu próprio dispositivo USB modular usando um ATtiny45 que simplesmente envia dados para o PC via USB. Como não estou lendo dados, uma conexão de maneira única (ATtiny -> PC) ficaria completamente bem.
Estou usando um Arduino Uno como ISP com o esboço padrão do ArduinoISP carregado de dentro do Arduino Software. Estou pensando em usar o AVRDUDE para programar o ATtiny45 com o Arduino como ISP, porque quero poder usar o código C compilado no HEX, pois é mais avançado que o Langue de programação do Arduino.
Meus pensamentos básicos do circuito:
Como você pode ver, eu quero uma conexão USB "direta". Até agora eu sei que tenho que usar uma solução baseada em software para isso.
Eu gerenciei o SoftwareSerial para trabalhar com o meu ATtiny45. Para isso, usei o software Arduino para programar o ATtiny45 com o seguinte 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); }
Observe que eu não uso o Pin 3 (ainda), mas preciso defini-lo para SoftwareSerial.
Dessa forma, usando o SoftwareSerial, eu era capaz de enviar dados do ATtiny diretamente para o pino TX do meu Arduino UNO que tinha um esboço em branco carregado para este teste. Eu estava usando o Serial Monitor do Arduino Software para ler os dados no COM4 (no meu caso) porque meu PC não reconheceu nenhum dispositivo (porta COM), pois tentei conectar o ATtiny programado diretamente a um cabo USB.
Infelizmente, só tenho caracteres unicode estranhos no Serial Monitor. Eu acho que é porque os dados estão em formato hexadecimal ou algo assim. Então eu notei que preciso conectar um USB / Serial Converter entre o USB e o ATtiny45 ... Eu procurei por esses conversores, mas não quero usar nenhuma placa pré-fabricada, pois quero tudo meus componentes em uma única placa. Eu acho que um chip FTDI seria "demais" para o meu projeto, não é? (Tem pinos muito pequenos para soldar ...)
O V-USB foi a minha segunda abordagem, pois não precisa de um conversor USB / Serial (como eu sei). Então, para usar o V-USB, eu precisaria usar o AVRDUDE, como mencionei anteriormente.
Encontrei este belo exemplo do V-USB EasyLogger . Ele contém um design de circuito e um exemplo de firmware. (C / C ++ / HEX)
A única coisa que quero saber é: Preciso realmente fazer meu circuito parecer com o mostrado no exemplo? ->
O que mais eu preciso saber sobre esse tipo de conexão USB? (Por que eu preciso de um conversor USB / Serial? Posso conectar o +5 e o VCC? Quais componentes eu preciso absolutamente? Que tipo de sinal eu preciso enviar via TX? Bits? Hex? Que voltagem ele precisa ser estar ? )
Obrigado por todas as suas respostas.
ATUALIZAR
Aqui estão alguns links adicionais que realmente me ajudaram em alguns pontos. Mas ainda não o entendi completamente ...
o primeiro -> http://www.ernstc.dk/arduino/tinycom.html
e o segundo -> http://www.re-innovation.co.uk/web12/index.php/en/blog-75/227-attiny-arduino (role para baixo até a seção "Saída serial")
Respostas:
Você pode comunicar o ATtiny45 para USB diretamente, sem um conversor FTDI.
Para fazer tudo funcionar, você precisará da biblioteca V-USB .
Um bom exemplo de tudo o trabalho é aqui , que ele usa o mesmo exemplo de EasyLogger.
O mesmo autor tem outras dicas e projetos interessantes com USB e uC.
Um circuito de amostra com o ATtiny:
simular este circuito - esquemático criado usando o CircuitLab
fonte
Basicamente, o USB é um protocolo de comunicação de alto nível com requisitos específicos para condução, sincronização e terminação no nível da linha de sinal. Não é tão simples quanto serial, possui linhas de dados diferenciais e codificação NRZI, sondagem necessária, handshake etc. É por isso que você precisa de um adaptador USB / Serial ou por uma implementação de hardware ou software USB.
Enquanto o USB usa energia de 5V, as linhas de sinal são na verdade de 3,3V a 3,6V. É por isso que o circuito VUSB que você mostra usa diodos zener nessas duas linhas. O Tiny não pode simplesmente funcionar em 3,3V, porque não pode ser sincronizado nos 16MHz necessários em 3,3V.
O restante das peças, R1-R3, D1, D2 e C1, C2, são peças mínimas necessárias. Isso realmente não está pedindo muito pelos recursos que você obtém. Veja esta página para obter uma lista de todos os projetos que usam vusb.
O comutador, R4 e LED1 fazem parte do exemplo específico de firmware de registro de dados e podem ser evitados se você não precisar dele / alterar o firmware.
fonte
Muitas perguntas para responder em uma postagem, mas aqui estão alguns pontos rápidos:
Alguns microcontroladores contêm um "ponto final" USB e o hardware relevante, mas o site da Atmel mostra que o ATTiny45 não.
Portanto, você não pode simplesmente conectar as portas do microcontrolador a um conector USB como esse, porque o USB é um barramento complicado no nível eletrônico e de protocolo.
No entanto, conforme observado nos comentários abaixo, você está pesquisando nas linhas corretas com V-USB, eu não usei isso, portanto deixarei outros comentarem.
Os chips FTDI não são muito difíceis de soldar, mas um PCB adequado com resistência à solda tornará mais fácil.
Anteriormente, usei algo como este cabo FT232 :
(fonte: ftdichip.com )
Possui o chip FTDI embutido no conector USB e lida com toda a tradução de nível, além de fornecer energia. O final é um conector simples de passo de 0,1 "que você pode conectar a um cabeçalho de pinos.
Eles estão disponíveis no eBay por preços razoáveis.
fonte