Ich möchte lernen, wie ich meine eigenen USB-Gadgets herstelle

Ich schreibe seit einiger Zeit Gerätetreiber für Linux-Zeichen für die Sachen anderer Leute. Ich würde gerne ein neues Hobby finden und der Gedanke, meine eigenen USB-Gizmos zu machen, scheint wirklich nett zu sein.

Ich wäre begeistert, einige LEDs, Servos und Schrittmotoren steuern zu können. Ich genieße es sehr, selbstständig neue Dinge zu lernen und die Aufregung, wenn etwas endlich funktioniert. Ich habe keine ernsthafte MC-Programmierung gemacht, kenne mich aber aus.

Kann jemand einige Kits empfehlen, die einem kompletten Noob hilfreich wären? Im Idealfall sind das:

  • Linux-freundlich
  • Kann international versendet werden (ich lebe derzeit in Asien)
  • Biete Breadboard-Bausätze an

Wenn Sie Zeit und Lust haben, wären Links zu Projekten auf Websites anderer Leute, die Schaltpläne und Teilelisten enthalten, sehr willkommen. Ich möchte anhand von Beispielen lernen, aber guten Beispielen, weshalb ich hier frage.

Mein letztendliches Ziel ist es, meine eigenen Datensammler zu machen - alles von Niederschlag über durchschnittliche Dezibel bis hin zu Lichtpegeln. Tut mir leid, wenn dies schon einmal gefragt wurde, ich habe gesucht (und nach Tags gesucht).

Antworten (11)

Arduino ist sehr beliebt und Open-Source-Hardware, daher gibt es Variationen , darunter die Freeduinos von Drittanbietern namens Bare Bones Board , das Really Bare Bones Board und das Boarduino , die sich sehr gut für die Verwendung mit Steckbrettern eignen. Der Standard-Arduino wird mit sogenannten Shields angepasst. Sie können Ihr eigenes Steckbrettschild herstellen oder so etwas wie dieses ProtoShield Kit kaufen.

Der Arduino verwendet einen FTDI USB-RS232-Chip oder ein Kabel. [Der Standard-Arduino hat es eingebaut, während die meisten der Brotplatten ein spezielles Kabel verwenden, das den Chip enthält und Ihnen etwas Geld spart.] Es gibt einen eingebauten Treiber für Linux und Mac OS X und Windows Benutzer können einen Treiber herunterladen. Effektiv bedeutet dies, dass der Arduino als Gerät fungiert, das über eine serielle Schnittstelle 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 schönen Bibliothek und 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++.

Schließlich gibt es da draußen Schaltpläne, da es sich um Open-Source-Hardware handelt. Tatsächlich erinnere ich mich, gelesen zu haben, 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 betrifft, so bietet der Maker Shed viele Arduino-bezogene Artikel auf Lager. Sie scheinen um die ganze Welt zu versenden. Einige von Interesse sind:

Der Shoppe in Wulfden (USA) hat schöne Experimentierkits 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 scheint international zu versenden.

Die Haupt-Buy-Seite von Arduino listet Arduino-Anbieter in allen Regionen der Welt auf.

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

Wow. Vielen Dank für die Zeit, die Sie in eine so informative Antwort investiert haben!
Freut mich, das zu hören. Nachdem ich die Antwort geschrieben hatte, dachte ich mir: "Ich kann nicht glauben, dass ich gerade vierzig Minuten damit verbracht habe, eine Frage im Internet zu beantworten!"
Toller Beitrag, aber es sollte beachtet werden, dass nicht alle Arduinos den FTDI-Chip verwenden. Zum Beispiel verwende ich meinen Arduino Uno R3 unter OS X ohne installierten Treiber. (Dieser verwendet einen Atmega 16U2 für die USB-Kommunikation.)
Ich versuche genau das auf einem Arduino Due zu tun. Ich schreibe einen CDC_EEM (Ethernet-Emulationstreiber). Ich habe festgestellt, dass dem PluggableUSB-Modul einige Schlüsselfunktionen fehlen, es fehlt ein Mechanismus zur Registrierung bei USB-Interrupts und einige Initialisierungen.

Der Arduino ist ein großartiges Werkzeug für den Anfang, wenn Sie elektronische Geräte bauen möchten, und er könnte Sie zu Ihrem letztendlichen Ziel führen, einen Datenlogger zu bauen . Es ist jedoch nicht für echte USB-Entwicklung geeignet, da es einen altmodischen seriellen Anschluss emuliert. Es lässt Sie nicht in irgendetwas anderes verwandeln (wie ein Human Interface Device (Maus/Tastatur) oder ein Massenspeichergerät (Kartenleser/Wechsellaufwerk)).

Wenn Sie "echte" USB-Gadgets 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 diesem Niveau verwenden, ist jedoch möglicherweise nicht für Anfänger geeignet, sodass Sie die Arduino-Erfahrung auf jeden Fall auf den Weg bringen werden.

Vielen Dank für den Link. Ich werde es auf jeden Fall überprüfen, sobald die "Stützräder" abgenommen sind :)
Das ist nicht ganz richtig ... Mit Arduino Leonardo und allen Atmega32u4-basierten Boards können Sie HID- und andere benutzerdefinierte Geräte erstellen

Ich kann das Tuxgraphics AVR USB Slideshow Presenter Tutorial sehr empfehlen. Es verwendet einen Atmel AVR-Mikrocontroller, der eine große Bastler-Community (Avrfreaks usw.) hat, und einen USB1.1-Stack nur für Open-Source-Software 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 Drucktasten. Es wäre trivial, es als Datenlogger zu verwenden, und einige der Beispiele auf obdev.org sind genau das ( www.obdev.at/products/vusb/projects.html ). Es ist in sauberem c geschrieben, und die Stückliste kostet höchstens ein paar Dollar.

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

Ein weiteres Gerät, das ich mir ansehen wollte, ist der AT90USBKey . Es ist schon eine Weile her, dass ich mich damit befasst habe, und ich bin mir nicht sicher, ob Sie ohne Windows dafür programmieren können, aber es wird als USB-Gerät (wie eine Tastatur oder ein Massenspeichergerät) oder als USB-Host fungieren an die Sie andere Geräte anschließen. Es sind Beispielprogramme verfügbar, und es sieht ziemlich einfach aus, damit zu arbeiten, vorausgesetzt, Sie wissen ein wenig über Elektronik 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 .

Laut der verlinkten Seite sieht es so aus, als ob das Board per Jtag programmiert werden kann.

Wenn Sie den Arduino verwenden, habe ich die V-USB-Bibliothek (früher AVR-USB) portiert, damit sie darauf läuft. Es ist auch mit einer Klasse umschlossen, 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 Seite hat eine PCB-Abschirmung, die Sie herstellen können, die eine USB-Buchse und ein paar Widerstände usw. verwendet:

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()

--Philipp;

Es gibt jetzt eine Reihe von AVR-USB-basierten Entwicklerboards.

Ich habe persönlich die zuvor erwähnten Teensy und Bumble-B verwendet und finde sie beide großartig.

Teensy ist nett, weil es sich wirklich 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. Beide werden jedoch LUFA ausführen, wenn Sie dies wünschen.

Hier ist ein einfaches PIC-USB-Projekt von mir:

http://www.leonheller.com/usb

Leiterplatten sind verfügbar.

Object Development hat eine Bibliothek für AVR-Mikrocontroller erstellt, mit der Sie selbst sehr günstige USB-Geräte herstellen können (ab nur 2-3 $). GCC für AVR ist linuxfreundlich. Es gibt bereits Hunderte von Geräten. Schau mal hier: http://www.obdev.at/products/vusb/projects.html

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

Wenn Sie fortschrittlichere USB-Protokolle, Treiber und Funktionen nutzen möchten, können Sie ein uC mit nativer USB-Fähigkeit erwerben. Microchip hat zum Beispiel viele Bilder (ihre Mikrocontroller), die dies tun können. Microchip hat auch viele Entwicklungsplatinen, die dem Erlernen der Verwendung des USB gewidmet sind. Zumindest Microchips 32-Bit uC unterstützen auch Host- und OTG-Modi, sodass Sie einen Datenlogger bauen könnten, der die Daten auf einem gewöhnlichen USB-Speicherstick speichert, den Sie an Ihren Computer anschließen könnten, um die Daten zu lesen. (Ich bin sicher, dass viele andere Hersteller auch ähnliche ICs und Entwicklungskits haben, aber Microchip ist der einzige, den ich verwendet habe.)

Homepage von Microchip/USB

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

http://www.yoctopuce.com

http://www.phidgets.com