Ich möchte mein eigenes modulares USB-Gerät mit einem ATtiny45 herstellen , der einfach Daten über USB an den PC sendet. Ich lese keine Daten, daher wäre eine Einwegverbindung (ATtiny -> PC) völlig in Ordnung.
Ich verwende ein 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 HEX kompilierten C-Code verwenden möchte, da dieser weiter fortgeschritten ist als die Arduino-Programmiersprache.
Meine Grundgedanken der Rennstrecke:
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 für die Arbeit mit meinem ATtiny45 verwaltet. Dafür 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, ihn aber für SoftwareSerial definieren muss.
Auf diese Weise konnte ich mit SoftwareSerial Daten vom ATtiny direkt an den TX-Pin meines Arduino UNO senden, auf den eine leere Skizze für diesen Test geladen war. Ich habe den seriellen Monitor der Arduino-Software verwendet, um die Daten auf COM4 zu lesen (in meinem Fall), da mein PC kein Gerät (COM-Anschluss) erkannt hat, da ich versucht habe, das programmierte ATtiny direkt an ein USB-Kabel anzuschließen.
Leider habe ich im Serial Monitor nur seltsame Unicode-Zeichen. Ich denke, das liegt daran, dass die Daten im Hex-Format oder so sind. Ich habe also festgestellt, dass ich einen USB / Serial Converter zwischen USB und ATtiny45 anschließen muss ... Ich habe nach solchen Konvertern gesucht, möchte aber keine vorgefertigten Karten verwenden, da ich alle möchte meine Komponenten auf einer einzigen Platine. Ich denke, ein FTDI-Chip wäre viel zu "viel" für mein Projekt, nicht wahr? (Es hat zu kleine Stifte zum Löten ...)
V-USB war dann mein zweiter Ansatz, da es keinen USB / Seriell-Konverter benötigt (wie ich weiß). Um V-USB zu verwenden, müsste ich AVRDUDE verwenden, wie ich bereits erwähnt habe.
Ich habe dieses schöne Beispiel V-USB EasyLogger gefunden . Es enthält ein Schaltungsdesign und eine Beispielfirmware. (C / C ++ / HEX)
Das einzige, was ich wissen möchte, ist: Muss ich meine Schaltung wirklich so aussehen lassen, wie im Beispiel gezeigt? ->
Was muss ich noch über diese Art von USB-Verbindung wissen? (Warum brauche ich einen USB / Seriell-Wandler? Kann ich einfach +5 & VCC anschließen? Welche Komponenten brauche ich unbedingt? Welche Art von Signal muss ich über TX-Bits senden? Hex? Welche Spannung benötigt es? sein ? )
Vielen Dank für all Ihre 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 ...
der erste -> http://www.ernstc.dk/arduino/tinycom.html
und das zweite -> http://www.re-innovation.co.uk/web12/index.php/en/blog-75/227-attiny-arduino (scrollen Sie nach unten zum Abschnitt "Serielle Ausgabe")
Antworten:
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 für alles, was funktioniert, ist hier , dass es das gleiche Beispiel von EasyLogger verwendet.
Der gleiche Autor hat einige andere nette Tipps und Projekte mit USB und uC.
Eine Beispielschaltung mit dem ATtiny:
simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab
quelle
Grundsätzlich ist USB ein Kommunikationsprotokoll auf hoher Ebene mit spezifischen Anforderungen für das Ansteuern, Timing und Beenden auf Signalleitungsebene. Es ist nicht so einfach wie seriell, es verfügt über differenzielle Datenleitungen und NRZI-Codierung, erforderliche Abfrage, Handshake usw. Aus diesem Grund benötigen Sie einen USB / Serial-Adapter oder eine USB-Hardware- oder Software-Implementierung.
Während USB 5 V Strom verbraucht, sind 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 nicht mit den erforderlichen 16 MHz bei 3,3 V getaktet werden kann.
Die übrigen Teile R1-R3, D1, D2 und C1, C2 sind nur minimal erforderliche Teile. Das verlangt nicht wirklich viel nach den 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 Beispiels für die Datenprotokollierungs-Firmware und können vermieden werden, wenn Sie sie nicht benötigen / die Firmware ändern.
quelle
Viel zu viele Fragen, um sie in einem Beitrag zu beantworten, aber hier 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 an einen solchen USB-Anschluss anschließen, da USB sowohl auf elektronischer als auch auf Protokollebene ein komplizierter Bus ist.
Wie in den Kommentaren unten erwähnt, suchen Sie mit V-USB in der richtigen Richtung. Ich habe dies jedoch nicht verwendet, sodass andere Kommentare abgeben können.
Die FTDI-Chips sind nicht zu schwer zu löten, aber eine geeignete Leiterplatte mit Lötresist erleichtert dies.
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 Übersetzung aller Ebenen bei gleichzeitiger Stromversorgung. Das Ende ist ein einfacher 0,1 "Pitch-Anschluss, den Sie an einen Pin-Header anschließen können.
Sie sind bei eBay zu angemessenen Preisen erhältlich.
quelle