Comment intégrer un smartphone à mon projet de robotique? [fermé]

24

De nos jours, les téléphones intelligents sont généralement équipés d'un gyroscope, d'un accéléromètre, d'une boussole, d'un appareil photo et d'un capteur GPS. Ils ont également généralement une connexion à Internet avec Wifi et réseaux de données mobiles. J'ai vu de nombreux cas d'utilisation d'un téléphone comme télécommande pour un robot, mais il me semble que le téléphone lui-même est une plate-forme informatique et de détection légère parfaite pour un robot autonome.

Le principal obstacle que je vois est l'interface avec les actionneurs. Être capable de contrôler des moteurs pour diriger même un robot de table, ou contrôler des servos, par exemple. La connexion et la communication avec un microcontrôleur peuvent également être un obstacle.

En tant que robot amateur, j'aimerais savoir comment surmonter ces obstacles et d'autres pour pouvoir exploiter la puissance de mon téléphone intelligent avec mes projets de robotique.

Robz
la source
Juste pour ajouter une option iOS, voyez SESO iPhone comme contrôleur de robot
Greenonline

Réponses:

19

Le kit de développement d'accessoires Android (ADK) devrait faire tout ce dont vous avez besoin.

ADK

Il s'agit d'une carte Arduino spécialement conçue pour interagir avec Android. Vous pouvez connecter les deux via Bluetooth ou USB (ou WiFi / Ethernet, je pense).

Puisque l'architecture entière est ouverte, vous pouvez utiliser chaque partie pour ce qu'elle est la meilleure. Vous écrivez le code Android pour obtenir des données des capteurs intégrés du téléphone et contrôler l'affichage. Et vous écrivez le code Arduino pour contrôler les actionneurs, les servos et autres capteurs que le téléphone ne vient pas. Le code pour communiquer entre les deux est fourni open source via Google.

Du blog Arduino :

Le kit de développement d'accessoires ouverts Android (ADK) fournit une implémentation d'un accessoire USB Android basé sur la plateforme de prototypage électronique open source Arduino, les fichiers de conception matérielle de l'accessoire, le code qui implémente le firmware de l'accessoire et l'application Android qui interagit avec le accessoire. Les fichiers de conception matérielle et le code sont contenus dans le téléchargement du package ADK.

La plupart des exemples sont conçus pour utiliser le téléphone comme interface graphique pour une sorte d'accessoire matériel comme une horloge. Mais il n'y a aucune raison pour que vous ne puissiez pas accéder aux capteurs du téléphone et transmettre des données dans les deux sens.

Adafruit mentionne même l'utiliser pour fabriquer des robots sur la page de leur boutique pour l'ADK:

Suivez rapidement le développement matériel de votre téléphone Android ou concevez simplement des robots de téléphone portable avec l'Arduino ADK! L'Arduino ADK est une carte microcontrôleur basée sur le puissant ATmega2560 (fiche technique). Il a une interface hôte USB pour se connecter avec des téléphones basés sur Android et un convertisseur boost d'alimentation pour recharger le téléphone à partir de l'alimentation CC pendant qu'il est branché sur l'ADK

(c'est moi qui souligne)

embedded.kyle
la source
11

Une autre option est la carte IOIO-OTG :

Carte IOIO-OTG

La description du produit Sparkfun décrit ses fonctionnalités:

Il dispose d'un microcontrôleur PIC qui agit comme un pont qui connecte une application sur votre PC ou appareil Android à des périphériques de bas niveau tels que GPIO, PWM, ADC, I2C, SPI et UART. Une bibliothèque au niveau de l'application vous aide à écrire du code de contrôle pour ces périphériques de bas niveau de la même manière que vous écrivez n'importe quelle autre application Java!

Cette carte devrait faire tout ce que vous souhaitez et elle a même un joli tutoriel pour vous aider à démarrer.

brnd4n
la source
6

Le problème principal que je vois n'est pas vraiment une interface avec les actionneurs - si vous avez un bon moyen de transférer sans fil des signaux numériques (encore mieux serait analogique, ou un canal suffisamment bon pour faire du PWM), vous pouvez simplement interfacer cela avec une puce de pilote de moteur (par exemple L293D) et soyez prêt à partir. Pour les servos, vous avez besoin d'un bon temps de réponse pour pouvoir gérer les impulsions. Si vous avez un canal compatible PWM, cela ne devrait pas être difficile car le canal a déjà un débit élevé. Si vous avez un canal lent, les servos peuvent ne pas être possibles car vous avez besoin d'une synchronisation d'impulsion précise.

La première option que je vois (bien que ce soit plutôt encombrant) est de prendre un Raspberry Pi, de le connecter via Ethernet à un routeur sans fil et de connecter le téléphone au même sans fil. Maintenant, il suffit d'écrire une application de base pour votre téléphone qui envoie des demandes au Pi en fonction de l'entrée, et d'écrire un autre serveur comme une application pour le Pi qui les gère. Ça peut être volumineux et un peu dur, mais c'est assez extensible, OMI. Vous pouvez également mettre le routeur hors-bord et le bâton ce dans le Pi (ou point d' accès d'utilisation et d' éliminer le routeur entièrement).

Une autre option consiste à utiliser un contrôleur Bluetooth comme celui illustré ici . Je ne l'ai pas utilisé auparavant, mais il semble que vous aurez toujours besoin d'un microcontrôleur pour gérer cela. Je suppose que vous pouvez connecter ses broches RX / TX directement au TX / RX sur un arduino, bien que je ne sois pas trop sûr de cela.

Si vous avez déjà utilisé XBee / ZigBee, vous voudrez peut-être essayer l' abeille Bluetooth .

Une dernière option consiste à utiliser le port USB du téléphone avec une configuration de contrôle sans fil conventionnelle (XBee / autre) - mais cela nécessitera un pour écrire les pilotes et tout.

Manishearth
la source
5

Oui, le manque de broches GPIO sur les smartphones est dommage. Si vous avez déjà ROS en cours d'exécution sur le robot, vous pouvez utiliser cette application sur un téléphone Android pour accéder à la suite de capteurs sur le téléphone.

Nis
la source
4

De nombreux appareils Android récents, tels que le Nexus 7, prennent en charge USB On The Go (OTG), ce qui est une façon élégante de dire que le `` Mode hôte USB '' est pris en charge. Dans ces cas, avec le bon câble qui peut être acheté pour moins de 1 $, tout périphérique USB compatible peut être utilisé. Vous n'avez pas besoin d'une version spéciale de l'Arduino qui a du matériel pour le mode hôte USB.

J'ai suffisamment expérimenté cela pour savoir qu'un Arduino `` normal '' comme le Leonardo ou Teensy 2 apparaît à un téléphone Android comme un appareil TTY (par exemple un port série) lorsqu'il est connecté avec un câble OTG.

Cet article explique en détail comment utiliser l'API hôte USB Android pour communiquer avec l'Arduino à partir d'une application Android. Il nécessite Android 3.1+ et ne nécessite pas de rooter l'appareil.

Jay Beavers
la source