Ich möchte lernen, wie ich meine eigenen USB-Geräte baue

29

Ich schreibe seit einiger Zeit Linux-Character-Gerätetreiber für andere Leute. Ich würde gerne ein neues Hobby finden und der Gedanke, meine eigenen USB-Gizmos herzustellen, scheint wirklich ordentlich zu sein.

Ich würde mich freuen, einige LEDs, Servos und Schrittmotoren steuern zu können. Ich lerne sehr gerne neue Dinge und finde es aufregend, wenn endlich etwas funktioniert. Ich habe keine ernsthafte MC-Programmierung gemacht, kenne mich aber gut aus.

Kann jemand ein paar Kits empfehlen, die für einen absoluten Neuling hilfreich wären? Im Idealfall sind dies:

  • Linux freundlich
  • Internationaler Versand möglich (ich lebe derzeit in Asien)
  • Angebot Breadboard-Kits

Wenn Sie die Zeit und Neigung haben, würden Links zu Projekten auf den Websites anderer Leute, die Schaltpläne und Stücklisten enthalten, sehr geschätzt. Ich möchte anhand von Beispielen lernen, aber anhand von guten Beispielen, weshalb ich hier frage.

Mein letztendliches Ziel ist es, meine eigenen Datensammler zu erstellen - von Niederschlag über durchschnittliche Dezibel bis hin zu Lichtwerten. Es tut mir leid, wenn dies zuvor gefragt wurde, ich habe gesucht (und Tags gesucht).

Tim Post
quelle

Antworten:

26

Das Arduino ist sehr beliebt und es handelt sich um Open-Source-Hardware. Daher gibt es Variationen , einschließlich der Freeduinos von Drittanbietern namens Bare Bones Board , Really Bare Bones Board und Boarduino , die sich sehr gut für die Verwendung mit Steckbrettern eignen. Das Standard-Arduino wird mithilfe von Shields angepasst. Sie können Ihr eigenes Steckbrettschild herstellen oder so etwas wie dieses ProtoShield-Kit kaufen .

Das Arduino verwendet einen FTDI- USB-RS232-Chip oder -Kabel. [Der Standard Arduino hat es eingebaut, während die meisten der Brotplatinen ein spezielles Kabel verwenden, das den Chip im Inneren hat und Ihnen etwas Geld spart.] Es gibt einen eingebauten Treiber für Linux, Mac OS X und Windows Benutzer können einen Treiber herunterladen. Tatsächlich bedeutet dies, dass der Arduino als Gerät fungiert, das über einen seriellen Port kommuniziert, und daher sehr einfach zu kommunizieren ist.

Um es zu verwenden, laden Sie auch Software herunter. Es wird mit einer IDE, einer AVR-GCC-Toolchain, einer wirklich netten Bibliothek und einer Software zum Hochladen Ihres Programms auf den Chip geliefert. Es verbirgt die meisten Details vor Ihnen und hat eine großartige Community. Es ist in einer Sprache namens "Wiring" programmiert, aber es ist wirklich C ++.

Da es sich um Open-Source-Hardware handelt, gibt es auch Schaltpläne. Tatsächlich erinnere ich mich, dass es ziemlich einfach war, ein früheres Modell zu bauen. Wenn Sie in Ihrer bevorzugten Suchmaschine nach "Arduino-Schaltplänen" suchen, erhalten Sie gute Ergebnisse.

Was Kits angeht, bietet der Maker Shed eine Vielzahl von Arduino-Artikeln auf Lager. Sie scheinen um die Welt zu versenden. Einige von Interesse sind:

Die Shoppe in Wulfden (USA) hat ein schönes Experimentierkit und scheint international zu versenden .

Solarbotics (Kanada) hat ein ARDX Arduino Experimenter's Kit , ein Freeduino Starter Bundle - Ultimate und ein Arduino Starter Bundle - Basic (und Ultimate ) und wird anscheinend international ausgeliefert.

Auf der "Kaufen" -Seite von Arduino werden Arduino-Anbieter in allen Regionen der Welt aufgelistet.

Weitere Orte, die ich prüfen würde, sind Adafruit Industries und Sparkfun Electronics (beide in den USA).

Clinton Blackmore
quelle
1
Wow. Vielen Dank für die Zeit, die Sie in eine so informative Antwort gesteckt haben!
Tim Post
3
Freut mich, das zu hören. Nachdem ich die Antwort geschrieben hatte, dachte ich mir: "Ich kann nicht glauben, dass ich nur vierzig Minuten damit verbracht habe, eine Frage im Internet zu beantworten!"
Clinton Blackmore
1
Toller Beitrag, aber es sollte beachtet werden, dass nicht alle Arduinos den FTDI-Chip verwenden. Zum Beispiel verwende ich mein Arduino Uno R3 unter OS X ohne installierten Treiber. (Dieser verwendet einen Atmega 16U2 für die USB-Kommunikation.)
Verlassen Sie den
12

Der Arduino ist ein großartiges Werkzeug, um elektronische Geräte zu erstellen, und es könnte Sie zu Ihrem endgültigen Ziel führen, einen Datenlogger zu erstellen . Es ist jedoch nicht für die echte USB-Entwicklung geeignet, da es eine altmodische serielle Schnittstelle emuliert. Es lässt Sie nicht in etwas anderes (wie ein Human Interface Device (Maus / Tastatur) oder ein Massenspeichergerät (Kartenleser / Wechseldatenträger)) verwandeln.

Wenn Sie "echte" USB-Geräte herstellen möchten, besuchen Sie die Website von Jan Axelson . Er schreibt "Anfänger" -Bücher über USB. Die Entwicklung von Gadgets, die USB auf dieser Stufe verwenden, ist jedoch möglicherweise nicht für Anfänger geeignet, sodass Sie mit Arduino-Erfahrung auf jeden Fall auf den Weg gebracht werden.

bpijls
quelle
Vielen Dank für den Link. Ich werde es auf jeden Fall überprüfen, sobald die 'Stützräder' ausgehen :)
Tim Post
Das stimmt nicht ganz ... Mit Arduino Leonardo und allen Atmega32u4-basierten Boards können Sie HID und andere benutzerdefinierte Geräte
erstellen
8

Ich kann das Tuxgraphics AVR USB Slideshow Presenter Tutorial nur empfehlen . Es verwendet einen Atmel AVR-Mikrocontroller mit einer großen Hobby-Community (avrfreaks usw.) und einen Open-Source-USB1.1-Stack von obdev.org. Es kann nicht sehr hoch skaliert werden (z. B. Massenspeicher), aber das Endprodukt ist eine kleine USB-HID-Tastatur mit zwei zuweisbaren Tasten. Es wäre trivial, es als Datenlogger zu verwenden, und einige der Beispiele bei obdev.org sind genau das (www.obdev.at/products/vusb/projects.html). Es ist in sauberem c geschrieben, und die Stückliste ist höchstens ein paar Dollar.

Gleichzeitig empfehle ich, den Programmierer tuxgraphics avrusb500 zu bauen oder zu kaufen. Es ist eine Freude zu benutzen und eines der zuverlässigsten Geräte, die ich besitze. (Ich bin nicht verbunden - nur ein sehr zufriedener Kunde!)

qartis
quelle
8

Ein anderes Gerät, in das ich schauen wollte, ist der AT90USBKey . Es ist schon eine Weile her, dass ich es mir angesehen habe, und ich bin nicht sicher, ob Sie es ohne Windows programmieren können, aber es wird als USB-Gerät (wie eine Tastatur oder ein Massenspeichergerät) oder als USB-Host fungieren dass Sie andere Geräte anschließen. Es stehen Beispielprogramme zur Verfügung, mit denen Sie relativ einfach arbeiten können, vorausgesetzt, Sie kennen sich mit Elektronik aus und können in C programmieren.

Eine Google-Suche nach AT90USBKey und Linux liefert vielversprechende Ergebnisse.

Ich weiß, dass Sie es von DigiKey.ca bekommen können . Ich habe nach einem Digikey-Äquivalent für Asien gesucht . Sie können das Teil von Farnell bekommen .

Clinton Blackmore
quelle
Laut der verlinkten Seite sieht es so aus, als ob die Karte über Jtag programmiert werden kann.
SingleNegationElimination
6

Vielleicht möchten Sie auch Teensy überprüfen .

Tuupola
quelle
6

Wenn Sie den Arduino verwenden, habe ich die V-USB-Bibliothek (ehemals AVR-USB) portiert, um sie auszuführen. Es ist auch mit einer Klasse umhüllt, um die Interaktion zu vereinfachen.

Sie können damit USB-HID-Geräte erstellen, z. B. Tastatur, Maus oder Joystick. Sie können auch ein generisches Gerät erstellen, das libusb auf dem Host verwendet, um es zu steuern - von Python, C, Processing usw.

Meine Website verfügt über einen PCB-Schutz, der über einen USB-Anschluss und einige Widerstände usw. verfügt:

http://code.rancidbacon.com/ProjectLogArduinoUSB

Sie können Arduino-Code schreiben, um Tastenanschläge so einfach zu senden wie:

UsbKeyboard.sendKeyStroke(KEY_ENTER);

oder mit einem libusb "Treiber" können Sie Daten senden wie:

UsbStream.write(0xff)

oder Daten lesen mit:

UsbStream.read()

--Philip;

Anhänger
quelle
5

Es gibt jetzt eine Reihe von AVR-USB-basierten Entwickler-Boards.

Ich persönlich habe den bereits erwähnten Teensy und Bumble-B benutzt und finde sie beide großartig.

Teensy ist nett, weil es sich sehr gut in die Arduino-Umgebung integriert. Dies bedeutet, dass Sie Dinge wie "Mouse.init; Mouse.move (x, y)" tun können, anstatt sich selbst mit dem Low-Level-USB-Code zu befassen. Auf beiden wird LUFA ausgeführt, wenn Sie dies möchten.

Laen
quelle
4

Object Development hat eine Bibliothek für AVR-Mikrocontroller erstellt, mit der Sie sehr günstige USB-Geräte selbst herstellen können (ab nur 2-3 US-Dollar). GCC für AVR ist Linux-freundlich. Es gibt unzählige Geräte, die bereits hergestellt wurden. Schauen Sie sich das hier an: http://www.obdev.at/products/vusb/projects.html

avra
quelle
0

Es hängt davon ab, welche Art von USB-Geräten Sie herstellen möchten und wie fortgeschritten diese sind. Sie erwähnen blinkende LEDs. Diese Art der Steuerung kann leicht mit jeder Art von Mikrocontroller mit Uart und einem Ftdi-Chip erreicht werden (Arduino ist sehr beliebt und leicht zu starten). Der ftdi-chip wird seriell mit dem uC verbunden und verhält sich wie ein serieller <-> USB-Konverter. Es wird auch als virtueller COM-Port auf Ihrem Computer angezeigt.

Wenn Sie fortschrittlichere USB-Protokolle, Treiber und Funktionen verwenden möchten, erhalten Sie möglicherweise eine Benutzeroberfläche mit nativen USB-Funktionen. Microchip hat viele Bilder (deren Mikrocontroller), die dies zum Beispiel können. Microchip hat auch viele Entwicklungsboards, die sich dem Erlernen des Gebrauchs des USB widmen. Die 32-Bit-uC-Unterstützung von Atleast Microchips unterstützt auch Host- und OTG-Modi, sodass Sie einen Datenlogger erstellen können, der die Daten auf einem gemeinsamen USB-Speicherstick speichert, den Sie an Ihren Computer anschließen können, um die Daten zu lesen. (Ich bin sicher, dass viele andere Hersteller ähnliche ICs und Entwicklungskits haben, aber Microchip ist der einzige, den ich verwendet habe.)

Microchips Homepage / USB

varesa
quelle
0

Beachten Sie, dass Sie nicht auf einem so niedrigen elektronischen Niveau beginnen und mehr Entwicklungszeit für das "Gizmo" selbst sparen müssen. Viele Unternehmen verkaufen USB-Geräte für den Heimwerkermarkt, zum Beispiel:

http://www.yoctopuce.com

http://www.phidgets.com

martinm
quelle