Ich möchte mein eigenes modulares USB-Gerät mit einem ATtiny45 herstellen , das einfach Daten über USB an den PC sendet. Ich lese keine Daten, also wäre eine Einwegverbindung ( ATtiny -> PC ) völlig in Ordnung.
Ich verwende einen Arduino Uno als ISP mit der Standard-ArduinoISP-Skizze, die aus der Arduino-Software geladen wird. Ich denke darüber nach, AVRDUDE zu verwenden, um den ATtiny45 mit dem Arduino als ISP zu programmieren, weil ich in der Lage sein möchte, zu HEX kompilierten C-Code zu verwenden, da er weiter fortgeschritten ist als die Arduino-Programmiersprache.
Meine Grundgedanken zur Schaltung:
Wie Sie sehen können, möchte ich eine "direkte" USB-Verbindung. Bisher weiß ich, dass ich dafür eine softwarebasierte Lösung verwenden muss.
Ich habe SoftwareSerial so verwaltet, dass es mit meinem ATtiny45 funktioniert. Dazu habe ich die Arduino Software verwendet, um den ATtiny45 mit folgendem Code zu programmieren:
#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);
}
Bitte beachten Sie, dass ich Pin 3 (noch) nicht verwende, aber ich muss es für SoftwareSerial definieren.
Auf diese Weise konnte ich mit SoftwareSerial Daten vom ATtiny direkt in den TX-Pin meines Arduino UNO senden, auf dem für diesen Test eine leere Skizze geladen war. Ich habe den Serial Monitor der Arduino-Software verwendet, um die Daten auf COM4 (in meinem Fall) zu lesen, weil mein PC kein Gerät (COM-Port) erkannt hat, als ich versucht habe, das programmierte ATtiny direkt an ein USB-Kabel anzuschließen.
Leider habe ich im Serial Monitor nur seltsame Unicode-Zeichen bekommen. Ich denke, es liegt daran, dass die Daten im Hex-Format oder so vorliegen. Also habe ich bemerkt, dass ich einen USB/Seriell-Konverter zwischen dem USB und dem ATtiny45 anschließen muss ... Ich habe nach solchen Konvertern gesucht, aber ich möchte keine vorgefertigten Boards verwenden, da ich alle haben möchte meine Komponenten auf einer einzigen Platine. Ich denke, ein FTDI-Chip wäre viel zu "viel" für mein Projekt, oder? (Es hat zu kleine Stifte zum Löten ...)
V-USB war dann mein zweiter Ansatz, da es (wie ich weiß) keinen USB/Seriell-Konverter benötigt. Um V-USB zu verwenden, müsste ich also AVRDUDE verwenden, wie ich bereits erwähnt habe.
Ich habe dieses nette Beispiel V-USB EasyLogger gefunden . Es enthält ein Schaltungsdesign und Beispiel-Firmware. ( C / C ++ / HEX )
Das einzige, was ich wissen möchte, ist: Muss ich wirklich meine Schaltung so aussehen lassen, wie im Beispiel gezeigt? ->
Was muss ich sonst noch über diese Art von USB-Verbindung wissen? (Warum brauche ich einen USB/Seriell-Konverter? Kann ich einfach +5 & VCC anschließen? Welche Komponenten brauche ich unbedingt? Welche Art von Signal muss ich über TX senden? Bits? Hex? Welche Spannung braucht es sein ? )
Danke für all eure Antworten.
AKTUALISIEREN
Hier sind einige zusätzliche Links, die mir in einigen Punkten wirklich geholfen haben. Aber ich habe es immer noch nicht ganz verstanden...
die erste -> http://www.ernstc.dk/arduino/tinycom.html
und die zweite -> http://www.re-innovation.co.uk/web12/index.php/en/blog-75/227-attiny-arduino (scrollen Sie nach unten zum Abschnitt "Serial Output")
Sie können den ATtiny45 ohne FTDI-Konverter direkt mit USB kommunizieren.
Damit alles funktioniert, benötigen Sie die V-USB- Bibliothek.
Ein sehr gutes Beispiel dafür, dass alles funktioniert, ist hier , dass dasselbe Beispiel von EasyLogger verwendet wird.
Derselbe Autor hat einige andere nette Tipps und Projekte mit USB und uC.
Eine Beispielschaltung mit dem ATtiny:
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Grundsätzlich ist USB ein High-Level-Kommunikationsprotokoll mit spezifischen Anforderungen für Signalleitungs-Pegelsteuerung, Timing und Terminierung. Es ist nicht so einfach wie seriell, es hat differenzielle Datenleitungen und NRZI-Codierung, erforderliche Abfragen, Handshaking usw. Aus diesem Grund benötigen Sie einen USB/Seriell-Adapter oder eine USB-Hardware- oder Softwareimplementierung.
Während USB 5 V Strom verbraucht, haben die Signalleitungen tatsächlich 3,3 V bis 3,6 V. Aus diesem Grund verwendet die von Ihnen gezeigte VUSB-Schaltung Zenerdioden auf diesen beiden Leitungen. Der Tiny kann nicht einfach mit 3,3 V betrieben werden, da er bei 3,3 V nicht mit den benötigten 16 MHz getaktet werden kann.
Die restlichen Teile, R1-R3, D1, D2 und C1, C2, sind die absolut erforderlichen Teile. Das ist nicht wirklich viel für die Funktionen, die Sie erhalten. Auf dieser Seite finden Sie eine Liste aller Projekte, die vusb verwenden.
Der Schalter, R4 und LED1 sind alle Teil des spezifischen Datenaufzeichnungs-Firmware-Beispiels und können vermieden werden, wenn Sie ihn nicht benötigen/die Firmware ändern.
Viel zu viele Fragen, um sie in einem Beitrag zu beantworten, aber hier sind ein paar kurze Punkte:
Einige Mikrocontroller enthalten einen USB-"Endpunkt" und die entsprechende Hardware, aber die Atmel-Site zeigt, dass der ATTiny45 dies nicht tut.
Daher können Sie die Mikrocontroller-Ports nicht einfach mit einem solchen USB-Anschluss verbinden, da USB sowohl auf elektronischer als auch auf Protokollebene ein komplizierter Bus ist.
Wie jedoch in den Kommentaren unten angemerkt, suchen Sie mit V-USB in der richtigen Richtung. Ich habe dies nicht verwendet und überlasse es anderen, Kommentare abzugeben.
Die FTDI-Chips sind nicht allzu schwer zu löten, aber eine richtige Platine mit Lötstopplack macht es einfacher.
Bisher habe ich so etwas wie dieses FT232-Kabel verwendet :
(Quelle: ftdichip.com )
Der FTDI-Chip ist in den USB-Anschluss eingebettet und übernimmt die gesamte Pegelumsetzung, während er auch Strom liefert. Das Ende ist ein einfacher 0,1-Zoll-Anschluss, den Sie an eine Stiftleiste anschließen können.
Sie sind bei eBay zu günstigen Preisen erhältlich.
Chris Stratton
As