Je veux créer mon propre périphérique USB modulaire à l' aide d'un ATtiny45 qui envoie simplement des données au PC via USB. Je ne lis pas de données, donc une connexion à sens unique (ATtiny -> PC) serait tout à fait correcte.
J'utilise un Arduino Uno en tant que FAI avec le croquis ArduinoISP standard chargé à partir du logiciel Arduino. Je pense utiliser AVRDUDE pour programmer l'ATtiny45 avec l'Arduino en tant que FAI car je veux pouvoir utiliser le code C compilé en HEX car il est plus avancé que l'Arduino Programming Langue.
Mes pensées de base sur le circuit:
Comme vous pouvez le voir, je veux une connexion USB "directe". Jusqu'à présent, je sais que je dois utiliser une solution logicielle pour cela.
J'ai réussi SoftwareSerial à fonctionner avec mon ATtiny45. Pour cela, j'ai utilisé le logiciel Arduino pour programmer l'ATtiny45 avec le code suivant:
#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); }
Veuillez noter que je n'utilise pas (encore) la broche 3 mais je dois le définir pour SoftwareSerial.
De cette façon, en utilisant SoftwareSerial, j'ai pu envoyer des données de l'ATtiny directement dans la broche TX de mon Arduino UNO qui avait un croquis vierge chargé dessus pour ce test. J'utilisais le moniteur série du logiciel Arduino pour lire les données sur COM4 (dans mon cas) parce que mon PC n'a reconnu aucun appareil (port COM) car j'ai essayé de raccorder l'ATtiny programmé directement à un câble USB.
Malheureusement, je n'ai obtenu que d'étranges caractères Unicode dans le moniteur série. Je pense que c'est parce que les données sont au format hexadécimal. J'ai donc remarqué que je dois connecter un convertisseur USB / série entre USB et ATtiny45 ... J'ai cherché de tels convertisseurs, mais je ne veux pas utiliser de cartes prédéfinies, car je veux que tout mes composants sur une seule carte. Je pense qu'une puce FTDI serait beaucoup trop pour mon projet, n'est-ce pas? (Il a des broches trop petites pour souder ...)
V-USB était alors ma deuxième approche, car il n'a pas besoin d'un convertisseur USB / série (comme je le sais). Donc, pour utiliser V-USB, je devrais utiliser AVRDUDE comme je l'ai mentionné plus tôt.
J'ai trouvé ce bel exemple V-USB EasyLogger . Il contient une conception de circuit et un exemple de firmware. (C / C ++ / HEX)
La seule chose que je veux savoir est: ai-je vraiment besoin de faire ressembler mon circuit à celui montré dans l'exemple? ->
Que dois-je savoir d'autre sur ce type de connexion USB? (Pourquoi ai-je besoin d'un convertisseur USB / série? Puis-je simplement brancher le +5 et le VCC? De quels composants ai-je absolument besoin? Quel type de signal dois-je envoyer via TX? Bits? Hex? De quelle tension a-t-il besoin être ? )
Merci pour toutes vos réponses.
MISE À JOUR
Voici quelques liens supplémentaires qui m'ont vraiment aidé sur certains points. Mais je ne l'ai toujours pas bien compris ...
le premier -> http://www.ernstc.dk/arduino/tinycom.html
et le second -> http://www.re-innovation.co.uk/web12/index.php/en/blog-75/227-attiny-arduino (faites défiler jusqu'à la section "Sortie série")
Réponses:
Vous pouvez communiquer directement l'ATtiny45 vers USB, sans convertisseur FTDI.
Pour que tout fonctionne, vous aurez besoin de la bibliothèque V-USB .
Un très bon exemple de tout ce qui fonctionne est ici , qu'il utilise le même exemple d'EasyLogger.
Le même auteur a d'autres bons conseils et projets avec USB et uC.
Un exemple de circuit avec l'ATtiny:
simuler ce circuit - Schéma créé à l'aide de CircuitLab
la source
Fondamentalement, l'USB est un protocole de communication de haut niveau avec des exigences spécifiques pour la conduite, la synchronisation et la terminaison au niveau de la ligne de signal. Ce n'est pas aussi simple que série, il a des lignes de données différentielles et un codage NRZI, une interrogation requise, une négociation, etc. C'est pourquoi vous avez besoin d'un adaptateur USB / série, ou pourquoi vous avez besoin d'une implémentation matérielle ou logicielle USB.
Alors que l'USB utilise une alimentation de 5 V, les lignes de signal sont en fait de 3,3 V à 3,6 V. C'est pourquoi le circuit VUSB que vous montrez utilise des diodes zener sur ces deux lignes. Le Tiny ne peut pas simplement fonctionner à 3,3 V car il ne peut pas être cadencé à 16 MHz à 3,3 V.
Les autres pièces, R1-R3, D1, D2 et C1, C2, sont des pièces minimales requises. Ce n'est pas vraiment demander beaucoup de fonctionnalités que vous obtenez. Voir cette page pour une liste de tous les projets qui utilisent vusb.
Le commutateur, R4 et LED1 font tous partie de l'exemple de micrologiciel d'enregistrement de données spécifique et peuvent être évités si vous n'en avez pas besoin / modifiez le micrologiciel.
la source
Beaucoup trop de questions pour répondre dans un seul post, mais voici quelques points rapides:
Certains microcontrôleurs contiennent un «point de terminaison» USB et le matériel correspondant, mais le site Atmel montre que l'ATTiny45 n'en contient pas.
Par conséquent, vous ne pouvez pas simplement connecter les ports du microcontrôleur à un connecteur USB comme celui-ci, car l'USB est un bus compliqué à la fois au niveau électronique et au niveau du protocole.
Cependant, comme indiqué dans les commentaires ci-dessous, vous effectuez une recherche dans le bon sens avec V-USB, je ne l'ai pas utilisé, je laisserai donc les autres commenter.
Les puces FTDI ne sont pas trop difficiles à souder, mais un PCB approprié avec une résistance de soudure le rendra plus facile.
Auparavant, j'ai utilisé quelque chose comme ce câble FT232 :
(source: ftdichip.com )
Il a la puce FTDI intégrée dans le connecteur USB et gère tous les niveaux de traduction tout en fournissant de l'énergie. L'extrémité est un simple connecteur à pas de 0,1 "que vous pouvez connecter à un en-tête de broche.
Ils sont disponibles sur eBay à des prix raisonnables.
la source