Wie kann ich ein Smartphone in mein Robotikprojekt integrieren? [geschlossen]

24

Smartphones werden heutzutage in der Regel mit einem Gyroskop, einem Beschleunigungsmesser, einem Kompass, einer Kamera und einem GPS-Sensor geliefert. Sie haben in der Regel auch eine Verbindung zum Internet mit Wifi und mobilen Datennetzen. Ich habe viele Fälle gesehen, in denen ein Telefon als Fernbedienung für einen Roboter verwendet wurde, aber für mich scheint es, dass das Telefon selbst eine perfekte leichte Computer- und Erfassungsplattform für einen autonomen Roboter ist.

Das Haupthindernis, das ich sehe, ist die Verbindung mit Aktuatoren. In der Lage zu sein, Motoren zu steuern, um beispielsweise sogar einen Tischroboter oder Servos zu steuern. Das Anschließen und Kommunizieren an einen Mikrocontroller kann ebenfalls ein Hindernis sein.

Als Roboter-Bastler würde ich gerne wissen, wie ich diese und andere Hindernisse überwinden kann, um die Leistung meines Smartphones mit meinen Roboterprojekten nutzen zu können.

Robz
quelle
Um nur eine iOS-Option hinzuzufügen, sehen Sie SESO iPhone als Robotersteuerung
Greenonline

Antworten:

19

Das Android Accessory Development Kit (ADK) sollte alles bieten, was Sie brauchen.

ADK

Es ist ein Arduino-Board, das speziell für die Interaktion mit Android entwickelt wurde. Sie können die beiden über Bluetooth oder USB (oder WiFi / Ethernet, denke ich) verbinden.

Da die gesamte Architektur offen ist, können Sie jedes Teil für das verwenden, was es am besten kann. Sie schreiben den Android-Code, um Daten von den integrierten Sensoren des Telefons abzurufen und das Display zu steuern. Und Sie schreiben den Arduino-Code, um Aktoren, Servos und andere Sensoren zu steuern, die das Telefon nicht hat. Der Code für die Kommunikation zwischen den beiden wird Open Source über Google bereitgestellt.

Aus dem Arduino Blog :

Das Android Open Accessory Development Kit (ADK) bietet eine Implementierung eines Android-USB-Zubehörs, das auf der Arduino Open Source-Prototyping-Plattform für die Elektronik, den Hardware-Designdateien des Zubehörs, dem Code, der die Firmware des Zubehörs implementiert, und der Android-Anwendung, die mit dem interagiert, basiert Zubehörteil. Die Hardware-Designdateien und der Code sind im Download des ADK-Pakets enthalten.

Bei den meisten Beispielen geht es darum, das Telefon als grafische Oberfläche für eine Art Hardware-Zubehör wie eine Uhr zu verwenden. Aber es gibt keinen Grund, warum Sie nicht auch auf die Sensoren des Telefons zugreifen und Daten hin und her übertragen könnten.

Adafruit erwähnt sogar, dass es verwendet wird, um Roboter auf der Seite ihres Geschäfts für das ADK zu erstellen:

Mit dem Arduino ADK können Sie die Hardwareentwicklung Ihres Android-Telefons beschleunigen oder einfach nur Handy-Roboter entwerfen ! Das Arduino ADK ist ein Mikrocontroller-Board, das auf dem leistungsstarken ATmega2560 (Datenblatt) basiert. Es verfügt über eine USB-Host-Schnittstelle für die Verbindung mit Android-basierten Telefonen und einen Stromversorgungs-Boost-Konverter, um das Telefon mit Gleichstrom aufzuladen, während es an das ADK angeschlossen ist

(Hervorhebung von mir)

embedded.kyle
quelle
11

Eine weitere Option ist die IOIO-OTG-Karte :

IOIO-OTG-Karte

Die Sparkfun Produktbeschreibung beschreibt die Funktionalität:

Es verfügt über einen PIC-Mikrocontroller, der wie eine Brücke fungiert und eine App auf Ihrem PC oder Android-Gerät mit Peripheriegeräten auf niedriger Ebene wie GPIO, PWM, ADC, I2C, SPI und UART verbindet. Eine Bibliothek auf App-Ebene hilft Ihnen dabei, Steuercode für diese Peripheriegeräte auf niedriger Ebene so zu schreiben, wie Sie es mit jeder anderen Java-App tun würden!

Dieses Board sollte alles tun, was Sie möchten, und es enthält sogar ein nettes Tutorial , das Ihnen den Einstieg erleichtert.

brnd4n
quelle
6

Das Hauptproblem, wie ich sehe, besteht nicht in der Verbindung mit Aktuatoren. Wenn Sie eine gute Möglichkeit haben, digitale Signale drahtlos zu übertragen (noch besser wäre es analog oder ein Kanal, der gut genug für PWM ist), können Sie diese einfach miteinander verbinden einen Motortreiber-Chip (zB L293D) und los geht's. Für Servos benötigen Sie eine gute Reaktionszeit, um die Impulse verarbeiten zu können. Wenn Sie einen PWM-fähigen Kanal haben, sollte dies nicht schwierig sein, da der Kanal bereits einen hohen Baud hat. Wenn Sie einen langsamen Kanal haben, sind Servos möglicherweise nicht möglich, da Sie eine genaue Impulssteuerung benötigen.

Die erste Option, die ich sehe (obwohl sie ziemlich sperrig ist), besteht darin, einen Raspberry Pi zu nehmen, ihn über Ethernet mit einem drahtlosen Router zu verbinden und das Telefon drahtlos mit demselben zu verbinden. Schreiben Sie jetzt einfach eine Basis-App für Ihr Telefon, die auf der Grundlage von Eingaben Anforderungen an den Pi sendet, und schreiben Sie eine andere Server-ähnliche App für den Pi, der diese verarbeitet. Könnte sperrig und etwas hart sein, aber es ist ziemlich erweiterbar, IMO. Sie können den Router auch offboard stellen und diesen aufkleben in die Pi (oder Verwendung Hotspot und die Beseitigung der Router vollständig).

Eine andere Möglichkeit ist die Verwendung eines Bluetooth-Controllers wie dem hier gezeigten . Ich habe das noch nie benutzt, aber es sieht so aus, als bräuchten Sie immer noch einen Mikrocontroller, um damit fertig zu werden. Ich denke, Sie können seine RX / TX-Pins direkt mit dem TX / RX auf einem Arduino verbinden, obwohl ich mir dessen nicht sicher bin.

Wenn Sie XBee / ZigBee bereits verwendet haben, können Sie die Bluetooth-Biene ausprobieren .

Eine letzte Möglichkeit besteht darin, den USB-Anschluss des Telefons mit einem herkömmlichen Setup für die drahtlose Steuerung (XBee / was auch immer) zu verwenden. Hierfür muss jedoch einer der Treiber und alles geschrieben werden.

Manishearth
quelle
5

Ja, das Fehlen von GPIO-Pins bei Smartphones ist eine Schande. Wenn auf dem Roboter bereits ROS ausgeführt wird, können Sie diese App auf einem Android-Telefon verwenden, um auf die Sensorsuite des Telefons zuzugreifen.

Nis
quelle
4

Viele neuere Android-Geräte wie das Nexus 7 unterstützen USB On The Go (OTG). In diesen Fällen kann mit dem richtigen Kabel, das für weniger als 1 USD erhältlich ist, jedes kompatible USB-Gerät verwendet werden. Sie benötigen keine Spezialversion des Arduino mit Hardware für den USB-Host-Modus.

Ich habe damit genug experimentiert, um zu wissen, dass ein "normaler" Arduino wie der Leonardo oder der Teensy 2 auf einem Android-Telefon als TTY-Gerät (z. B. serielle Schnittstelle) angezeigt wird, wenn es mit einem OTG-Kabel verbunden ist.

Dieser Artikel beschreibt ausführlich, wie Sie mit der Android-USB-Host-API über eine Android-App mit dem Arduino kommunizieren. Es erfordert Android 3.1+ und erfordert nicht, dass Sie das Gerät rooten.

Jay Beavers
quelle