Die erste Entscheidung bei der Entwicklung eines USB-Gerätes ist die zwischen selber machen oder zukaufen. Selber machen hieße einen Mikrocontroller mit USB-Interface einzusetzen und die notwendige Firmware zu schreiben. Bei Anwendungen mit großen Stückzahlen, oder hohen Datenraten ist das meist die bessere Option, wenn die Zeit für die Entwicklung zur Verfügung steht. Zukaufen lassen sich verschiedene Standardchips, die auf verschiedenen Wegen das USB-Interface zur Verfügung stellen.

USB leicht gemacht

Um ein Gerät an einen Computer anzuschließen, wird, abgesehen von einer Netzanbindung, meistens USB eingesetzt. Andere Schnittstellen sind weitgehend ausgestorben oder zumindest in ihrer Existenz stark bedroht. Entwickler können durch vorgefertigte Module und Dongles viel Arbeit ersparen.

Am bekanntesten dürften USB-Chips sein, die als USB-zu-Seriell Umwandler funktionieren. Diese bieten einerseits recht ordentliche Datenraten, andererseits bringen sie aber eine ganze Reihe von Problemen mit sich. Meist benötigen diese Chips einen speziellen Treiber, der nicht unbedingt für alle gewünschten Betriebssysteme zur Verfügung steht und andere Nebeneffekte haben kann. Alleine schon die Installation eines Treibers kann problematisch sein, wenn zum Beispiel kein Administratorzugriff besteht. Außerdem erscheint dann am Computer ein weiterer serieller Port, was die Identifikation des eigenen Gerätes nicht unbedingt erleichtert.

3D-Beschleunigungssensoren

Ein anderer Ansatz, der sich auch für die Entwicklung eigener Firmware eignet, ist es, so weit wie möglich vorhandene Systemtreiber zu nutzen. Besonders gut geeignet ist dafür die HID-Klasse, also die Klasse der Human Interface Devices. Neben Tastatur- und Mausgeräten finden sich in der HID-Klasse auch die Joysticks, die sich sehr gut dazu eignen beispielsweise Daten von Sensoren einzulesen. Der Vorteil dabei ist, dass die gesamte rechnerseitige Softwareinfrastruktur inklusive Treibern und API in allen Betriebssystemen vorhanden sind und viele Standardprogramme und Programmierumgebungen einen reibungslosen Zugriff auf das Gerät ermöglichen.

Bild 1: 3-achsiger Beschleunigungssensor am USB für unter 12 € bei Stückzahlen ab 100.

Bild 1: 3-achsiger Beschleunigungssensor am USB für unter 12 € bei Stückzahlen ab 100.Code Mercenaries Hard- und Software GmbH

Diese Methode wird beispielsweise von der Beschleunigungssensorenfamilie von Code Mercenaries verwendet. Die 3D-Beschleunigungssensoren der JoyWarrior24F Familie melden sich am USB als Joysticks an und sind dadurch sehr einfach einzusetzen. Nicht nur der Zugriff mit eigener Software ist damit leicht zu realisieren, viele grafische Programmierumgebungen wie Matlab oder LabVIEW erlauben auch den Zugriff auf Joystickdaten. So gestaltet sich die Nutzung dieser dreiachsigen Beschleunigungssensoren mit Messauflösungen bis zu 125 µg unkompliziert und völlig ohne Installation von Treibern.

Bild 2: USB-Beschleunigungssensor mit Auflösungen bis zu 125 µg.

Bild 2: USB-Beschleunigungssensor mit Auflösungen bis zu 125 µg.Code Mercenaries Hard- und Software GmbH

Die problemlose Anwendung der Sensoren in Kombination mit einem sehr günstigen Preis hat die University of California davon überzeugt die JoyWarrioro24F als Standardsensoren für ihr Quake Catcher Network zum verteilten Messen von Erdbeben zu verwenden.

Generische HID-Geräte

Nahezu völlige Gestaltungsfreiheit bietet die Untergruppe der generischen HID-Geräte. Im Gegensatz zu den Joysticks wird für solche Geräte in der Regel kein höherer Treiber vom System geladen. Damit stehen solche generischen HID-Geräte auf den meisten Betriebssystemen einfach mittels des FileIO API über den HID-Treiber zum Zugriff von der Anwendungsebene zur Verfügung. Dies ermöglicht Ein- und Ausgangsdaten ohne großen Aufwand zu transportieren.
Die IO-Warrior Familie von Code Mercenaries verwendet diese Methode um universelle I/O-Lösungen für kleine bis mittlere Datenraten zu realisieren. Um komplexere Anwendungen ohne aufwändiges „Bitwackeln“ durch ständige Schreibzugriffe zu ermöglichen, beherrschen die IO-Warrior mehrere zusätzliche Funktionen, wie I2C Bus, SPI, Tastenmatrix, LED-Matrix und andere. Bedient werden die IO-Warrior als zwei logische Geräte, im USB-Jargon „Interfaces“. Eins ist zuständig für den einfachen I/O direkt über die Pins, das zweite für die zusätzlichen Funktionen, die je nach Bedarf zugeschaltet werden können.
Verfügbar sind die IO-Warrior in diversen Bauformen, angefangen vom Chip, über Module und Starterkits, bis hin zu Dongles für I2C- oder SPI-Interface. Schon länger als Dongle lieferbar ist der kleinste Chip aus der Familie als reiner USB-zu-I2C-Adapter (IOW24-DG). Zur Sensor+Test 2011 wird ein Dongle mit dem größten Chip der Familie, dem IO-Warrior56 vorgestellt. Dieser neue Dongle stellt einen I2C und SPI zur Verfügung und ermöglicht einen Datendurchsatz bis zu etwa 60 kByte/s.

Der USB-zu-I2C-Dongle benötigt keine Treiber.

Der USB-zu-I2C-Dongle benötigt keine Treiber.Code Mercenaries Hard- und Software GmbH

Beide Dongles stellen auch direkt die 5 V des USB und über einen Spannungsregler 3,3 V für externe Schaltungen zu Verfügung und können ihre Schnittstellen wahlweise 5-V- oder 3,3-V-kompatibel betreiben. Damit stellen die IO-Warrior Dongles handliche und preiswerte Lösungen beispielsweise für die Anbindung von Sensoren an den USB zur Verfügung.

Bild 4: Dongle für USB zu I2C und SPI.

Bild 4: Dongle für USB zu I2C und SPI.Code Mercenaries Hard- und Software GmbH

OEM-Versionen der Dongles zum Beispiel mit Firmenlogos, oder spezifisch angepasster Software sind möglich.