Update: Ich habe dies auf das Community-Wiki umgestellt.
Es sieht so aus, als würde Android den USB-Host im Kernel unterstützen. Android 3.1 hat dies bereits, ich denke, Android 2.4 wird es wieder portieren, und sicherlich wird Android 4 es haben. Wenn Sie also ein Mikro haben, das ein geeignetes USB-Slave-Gerät emulieren kann, sollten Sie in der Lage sein, relativ einfach und kostengünstig mit Android zu kommunizieren, solange Ihr Android-Gerät Hardware-fähig für USB-Host ist. Die meisten älteren Geräte (z. B. Droid, Droid Inc) sind hardwarefähig, und neue Geräte sollten es sein.
Ich weiß nicht genau, mit welchen USB-Slave-Geräten über Android einfach zu interagieren ist ( hier ist eine Liste der vorhandenen Gerätetypen), aber die Tastatur (dh HID) ist sicherlich leicht zu testen.
Bearbeiten: Die Android-USB-Host-APIs basieren auf der Idee, dass in Anwendungen enthaltener Benutzermoduscode rohe USB-Übertragungen an Peripheriegeräte vornimmt. Anstelle des Modells "Kerneltreiber" ist dies das Modell "Anwendung versteht periphere Details" - konzeptionell sehr ähnlich zu Desktop-Programmen, die libusb oder ähnliches verwenden, um mit einem Peripheriegerät zu kommunizieren. Ausnahmen wären HID-Geräte wie Tastaturen und Mäuse, die Android mit sich selbst spricht und in der erwarteten Weise verwendet, um Eingaben in das System im Allgemeinen bereitzustellen. Es ist auch erwähnenswert, dass (mit Ausnahme einiger Geräte, bei denen der Hersteller etwas anderes getan hat) der USB-Massenspeicher nicht vom System implementiert wird. Daher muss eine App, die ein solches Gerät verwenden möchte, sowohl den Dateisystemcode als auch den Code implementieren USB-Massenspeicherprotokoll gegen die rohen Android-USB-APIs.
Es gibt eine AVR-Bibliothek, die einen USB-Stack bereitstellt: http://fourwalledcubicle.com/LUFA.php. Damit sollten Sie in der Lage sein, eine Tastatur- oder andere Geräteemulation von einem USB-fähigen AVR durchzuführen. Es ist nicht allzu schwierig, dies in Ihren generischen AVR-Firmware-Build aufzunehmen. Stellen Sie, wie Mihailo in den Kommentaren ausführt, sicher, dass Sie eine mit USB kompatible Oszillatorfrequenz (8 oder 16 MHz) verwenden. Ich bin mir nicht sicher, ob es möglich ist, dies auf Standard-Arduino-Hardware zum Laufen zu bringen.
Der einfachste Weg, dies zu erreichen, scheint das neue Arduino Leonardo-Board zu sein: http: // arduino. cc / blog / 2011/09/17 / arduino bringt neue Produkte auf den Markt /
Ich bin sicher, dass bald billigere / einfachere / kleinere Leonardo-Klone herauskommen werden oder rollen Sie Ihre eigenen!