Table des matières:

Série Android G1 vers robot Arduino : 8 étapes
Série Android G1 vers robot Arduino : 8 étapes

Vidéo: Série Android G1 vers robot Arduino : 8 étapes

Vidéo: Série Android G1 vers robot Arduino : 8 étapes
Vidéo: How Arduino is open-sourcing imagination | Massimo Banzi 2024, Septembre
Anonim
Série Android G1 vers Robot Arduino
Série Android G1 vers Robot Arduino
Série Android G1 vers Robot Arduino
Série Android G1 vers Robot Arduino
Série Android G1 vers Robot Arduino
Série Android G1 vers Robot Arduino

Découvrez comment votre téléphone portable Android peut contrôler un robot à l'aide d'une carte Arduino. Le téléphone prend des commandes via telnet à partir d'un autre téléphone ou d'un PC, vous pouvez donc contrôler le robot à distance. Ce projet ne modifiera pas autrement le G1 afin que vous puissiez continuer à l'utiliser comme votre téléphone normal après l'avoir désamarré. Pourquoi ? En utilisant des composants électroniques bon marché tels que des cartes Arduino, vous pouvez les coupler avec votre téléphone à 400 $ pour créer un robot génial. Il en coûterait des centaines de dollars pour ajouter un GPS, des écrans LCD, des capteurs de mouvement, une connexion Wi-Fi, des connexions cellulaires, des haut-parleurs et plus encore à un robot amateur, mais votre téléphone les possède déjà ! Ensemble, les cartes Android G1 et Arduino vous permettent d'utiliser des composants électroniques peu coûteux tels que de simples servos et capteurs, pour construire des appareils puissants tels que des robots, la téléprésence à distance ou des jouets amusants pour les enfants. Plus d'informations sur Cellbots.com. Notice: Ce projet nécessite actuellement un Android G1 avec accès root pour utiliser la sortie série du téléphone vers le robot Arduino. Vous pouvez ajouter un module BlueTooth de 20 $ à votre carte Arduino pour que le téléphone lui parle via BlueTooth série si vous souhaitez utiliser le logiciel Android commercial. Remerciements particuliers: nous devons remercier le Hacker Dojo de Mountain View, en Californie, de nous avoir mis en contact, de nous avoir aidés à résoudre certains problèmes délicats via leur liste de diffusion de membres géniaux et d'avoir des puces 74LS04 en stock. La majeure partie de l'assemblage a été effectuée au Tech Shop de Menlo Park.

Étape 1: Articles nécessaires

Articles nécessaires
Articles nécessaires
Articles nécessaires
Articles nécessaires
Articles nécessaires
Articles nécessaires

Pour terminer ce didacticiel, vous aurez besoin des éléments suivants: Matériel: - Android G1 Dev Phone (ou autre appareil Android avec accès root et sortie série) - Arduino (j'utilise un Freeduino SB mais n'importe qui devrait le faire) - 3.3v à 5v convertisseur si vous n'utilisez pas un Arduino 3.3v (j'utilise une puce 74LS04 pour moins de 1 $ mais d'autres options sont disponibles) - Carte de dérivation USB HTC pour le G1 - Équipement de soudure pour deux connexions rapides - Un corps de robot avec micro servos (carton, acrylique, marches, roues, tout fera l'affaire)Logiciel: - Environnement de script Android (ASE) - Client Telnet pour votre PC (j'utilise PuTTY sous Windows) - Environnement de développement Arduino - (facultatif) Client série pour votre PC (j'utilise également PuTTY sur Windows pour cela) - (facultatif) Android SDK Si vous pouvez suivre les instructions, vous pouvez compléter ce didacticiel avec peu de connaissances sur Python, Arduino, Android ou l'électronique. Vous voudrez savoir ces choses si vous voulez aller au-delà d'une LED clignotante, mais cela vous aidera à démarrer.

Étape 2: Android G1 avec sortie série activée

Android G1 avec sortie série activée
Android G1 avec sortie série activée
Android G1 avec sortie série activée
Android G1 avec sortie série activée
Android G1 avec sortie série activée
Android G1 avec sortie série activée

Les G1 ne sont pas livrés avec la possibilité d'envoyer des commandes série à partir du port USB et il n'y a pas d'option native pour l'activer. Si vous êtes un utilisateur avancé du SDK Android, vous pouvez créer votre propre version, mais j'ai choisi d'utiliser le Cyanogenmod 4.2.13. Si vous connaissez d'autres appareils Android avec une sortie série, ajoutez-les aux commentaires.

En option, vous pouvez suivre les liens vers cette instructable pour parler à votre G1 via USB à partir de votre PC. Cette connexion série vers USB n'est pas requise pour ce didacticiel, mais je l'ai utilisée comme un bon test de cohérence pour vérifier que le téléphone envoyait une sortie série. Si vous n'utilisez pas l'autre intructable pour vérifier que la sortie série fonctionne, vous pouvez essayer cette simple vérification: 1. Ouvrez l'application Terminal sur le G1 (fournie avec Cyanogen mais téléchargez-en une sur le marché si vous avez une image différente) 2 Accédez au répertoire /dev/ en tapant cd /dev/ 3. Tapez ls (c'est un L) et recherchez ttyMSM2 dans la liste renvoyée Le script Python que nous utiliserons plus tard envoie des commandes à '/dev/ttyMSM2' dans pour qu'ils sortent de la connexion série. Étant donné que cela nécessite un accès root, vous devrez modifier les autorisations à chaque fois que vous redémarrez le téléphone. Pour ce faire: 1. Ouvrez l'application de terminal sur le téléphone 2. Entrez « chmod 777 /dev/ttyMSM2 » Ensuite, vous pouvez exécuter le script Python à partir de l'édition de script Android à l'étape suivante et il aura accès à l'envoi de la sortie série.

Étape 3: Installez l'environnement de script Android (ASE) avec Python

Installer l'environnement de script Android (ASE) avec Python
Installer l'environnement de script Android (ASE) avec Python
Installer l'environnement de script Android (ASE) avec Python
Installer l'environnement de script Android (ASE) avec Python

Les scripts que nous utiliserons pour créer une connexion socket ouverte sur le téléphone et envoyer des commandes sont écrits en Python. Pour l'exécuter sur le G1, nous aurons besoin de l'environnement de script Android. Si vous ne le voyez pas sur le marché, vous pouvez le télécharger en scannant le code-barres sur cette page qui renvoie au fichier apk sur cette page.

Une fois que vous avez installé et exécuté ASE, vous souhaiterez ajouter le module Python à partir du menu: 1. Ouvrez ASE et assurez-vous que vous disposez d'une connexion Internet fonctionnelle (wi-fi ou 3G) 2. Appuyez sur le bouton de menu du téléphone et sélectionnez Interprètes 3. Appuyez à nouveau sur menu et sélectionnez Ajouter 4. Sélectionnez Python (actuellement v2.6.2 au moment d'écrire ceci) et il téléchargera des fichiers zip. ASE mais ce n'est pas obligatoire.

Étape 4: Copiez et exécutez le script Cellbot.py pour lancer le programme Python

Copiez et exécutez le script Cellbot.py pour lancer le programme Python
Copiez et exécutez le script Cellbot.py pour lancer le programme Python

Ce tutoriel utilise un script Python pour être le "cerveau" du robot. Obtenez le dernier code de notre projet open source Google Code. Vous n'avez besoin que du fichier cellbot.py, mais d'autres peuvent vous aider avec diverses choses que vous souhaitez explorer. J'ai simplement branché le téléphone sur la connexion USB de mon PC et monté le lecteur avant de copier le fichier dans /sdcard/ase/scripts.

Le programme crée une connexion socket ouverte pour accepter une session telnet entrante. Il imprime également les commandes reçues à l'écran tout en les envoyant sur le port série. Placez ce fichier sur la carte SD du téléphone dans le répertoire /ase/scripts/. Étapes détaillées pour charger et exécuter les scripts: 1. Copiez le script cellbot.py dans le répertoire /ase/scripts/ de la carte SD 2. Assurez-vous de démonter la carte SD de votre PC si vous les avez copiées de cette façon, car le téléphone ne peut pas accéder aux fichiers en même temps que votre PC. 3. Ouvrez l'application Android Scripting Environment 4. Cliquez sur cellbot.py pour la lancer. Vous devriez voir une confirmation indiquant que l'appareil est prêt à ce stade à accepter les sessions telnet entrantes sur le port 9002. /dev/ttyMSM2 à partir de l'étape 3 en premier. Voir l'étape 5 pour trouver l'adresse IP du téléphone.

Étape 5: Telnet dans le G1 et testez l'envoi des commandes

Telnet dans le G1 et testez l'envoi des commandes
Telnet dans le G1 et testez l'envoi des commandes
Telnet dans le G1 et testez l'envoi des commandes
Telnet dans le G1 et testez l'envoi des commandes
Telnet dans le G1 et testez l'envoi des commandes
Telnet dans le G1 et testez l'envoi des commandes

Le téléphone doit être prêt pour que vous puissiez y accéder par telnet et lui envoyer des commandes depuis votre PC. Il les imprimera sur l'écran du téléphone pour confirmer ce qu'il reçoit. J'ai utilisé PuTTY sur Windows, mais nous avons confirmé que minicom fonctionne très bien sur les Mac, comme décrit dans cette instructable.

Vous devrez d'abord trouver l'adresse IP de votre téléphone. Ceci est disponible en allant dans Menu > Paramètres > Contrôles sans fil > Paramètres Wi-Fi, puis en appuyant sur la connexion actuellement active. Un message toast pop-up apparaîtra avec l'adresse IP actuelle sur le réseau local. Notez-le car vous l'utiliserez chaque fois que vous voudrez ouvrir une session telnet à partir de votre PC. Les attributions IP expirent généralement après un certain nombre de jours, vous devrez donc peut-être vérifier à nouveau. Remarque: Ce didacticiel suppose que votre PC et votre téléphone sont sur le même réseau local. Le routage vers le téléphone depuis l'extérieur du réseau local devrait être possible mais n'est pas traité ici. Ouvrez le client telnet de votre choix et connectez-vous à l'adresse IP du téléphone sur le port 9002. À partir d'une ligne de commande, vous le faites en tant que "telnet 192.168.1.1 9002" en utilisant l'adresse IP réelle du téléphone. Tapez quelques caractères et appuyez sur Entrée pour les voir apparaître sur l'écran du téléphone. Vous pouvez taper un q pour faire quitter le script Python, ce qui devrait fermer votre session de terminal. Si, pour une raison quelconque, vous ne pouvez pas vous connecter via telnet et devez tuer le programme, un simple redémarrage du téléphone devrait faire l'affaire. Les utilisateurs avancés voudront peut-être trouver l'ID du processus via ps, puis utiliser kill pour l'arrêter. Avancé: une future version de ceci pourrait exécuter un serveur Web local à partir du téléphone plutôt que d'accepter des commandes via telnet. Nous explorons également XMPP pour discuter avec votre robot.

Étape 6: connectez un levier de niveau 3.3v à 5v à l'Arduino

Connectez un levier de niveau 3.3v à 5v à l'Arduino
Connectez un levier de niveau 3.3v à 5v à l'Arduino
Connectez un levier de niveau 3.3v à 5v à l'Arduino
Connectez un levier de niveau 3.3v à 5v à l'Arduino
Connectez un levier de niveau 3.3v à 5v à l'Arduino
Connectez un levier de niveau 3.3v à 5v à l'Arduino

L'Arduino utilisé dans ce tutoriel est un modèle 5v, nous devons donc convertir le signal 3,3v sortant du G1 à l'aide d'un décaleur de niveau. Il devrait être possible de se connecter directement à un Arduino 3.3v mais ce n'est pas quelque chose que j'ai testé.

Il existe plusieurs façons d'aborder cela, mais nous utiliserons une puce 74LS04 dans cet exemple. Vous pouvez en rechercher un ici et ils sont probablement inférieurs à 1 $. Tim et moi avons récupéré les nôtres au Hacker Dojo à Mountain View, en Californie, mais ceux-ci sont TRÈS courants et devraient être nombreux partout où des puces sont vendues ou données. À un niveau élevé, nous allons simplement envoyer le signal TX de la carte de dérivation USB HTS à la broche 1 de la puce 74LS04. Pour que cela fonctionne, nous passons deux fois dans la puce et sortons la broche 4 de la broche RX du Freeduino SB (votre broche série peut être différente si vous avez une autre carte Arduino, mais toutes devraient la prendre en charge). Suivez ces étapes pour câbler le levier de niveau et connecter la carte USB HTC (ne la branchez pas encore sur le téléphone et débranchez l'alimentation de l'Arduino): 1. Insérez la puce 74LS04 sur votre planche à pain. Assurez-vous que la puce bloque la rupture centrale afin que les broches ne soient pas court-circuitées (un mouvement stupide que j'ai fait au début) 2. Soldat deux fils à la carte USB HTC comme décrit dans cette instructable, mais nous n'utiliserons que les broches 7 (Ground) et 8 (TX0) puisque nous ne faisons qu'une transmission unidirectionnelle pour ce tutoriel. 3. Connectez l'autre extrémité du fil de terre (broche 7) à une terre sur votre planche à pain (qui doit être connectée à une terre sur votre Arduino) 4. Connectez l'autre extrémité du fil TX0 (broche 8) à la planche à pain où il s'exécute dans la broche 1 de la puce 74LS04. (faites une recherche d'image pour un schéma complet de la puce) 5. Utilisez un fil pour connecter les broches 2 et 3 de la puce 6. Connectez la broche 4 de la puce au point Arduino RX (broche 0 sur le Freeduino SB et Arduino Duemilanove) 7. Connectez la broche 7 (GND) de la puce à la terre de votre maquette (qui se connecte également à la terre Arduino) 8. Connectez la broche 14 (VCC) à l'alimentation 5v de votre maquette (qui est alimentée par l'Arduino sortie 5v) Vous devriez maintenant être prêt à brancher la carte de dérivation USB HTC au bas du téléphone et à allumer l'Arduino. Vérifiez qu'il n'y a pas d'étincelles et d'odeurs et touchez les objets pour vous assurer qu'ils sont froids. Remarque: Le code du robot cellulaire actuel allume la LED #13 lorsque les servomoteurs du robot doivent fonctionner. Si vous n'avez pas encore de robot, vous pouvez vérifier que le voyant s'allume et s'éteint pour confirmer qu'il fonctionne.

Étape 7: Chargez le programme Cellbots sur l'Arduino

Charger le programme Cellbots sur l'Arduino
Charger le programme Cellbots sur l'Arduino
Charger le programme Cellbots sur l'Arduino
Charger le programme Cellbots sur l'Arduino

Obtenez le code source Arduino sur notre site de projet Google Code. Ouvrez le programme Arduino Cellbots.pde dans l'éditeur Arduino. Puis poussez-le sur votre carte Arduino.

Vous pouvez tester la communication avec le code Arduino en ouvrant le moniteur série dans l'éditeur Arduino. C'est un excellent moyen de tester votre robot ou votre appareil en parlant directement à l'Arduino avant de tout brancher au téléphone. Le code renvoie des commandes série au moniteur série pour confirmer ce qu'il fait même si votre robot n'est pas encore construit. Remarque: vous ne pouvez pas charger de programmes sur l'Arduino tant que le fil est connecté à la broche d'entrée série RX.. Donc, vous voudrez peut-être mettre un interrupteur sur celui-ci, mais je l'ai simplement débranché lorsque j'avais besoin de charger un nouveau programme.

Étape 8: Exécutez l'ensemble du processus

Exécutez l'ensemble du processus
Exécutez l'ensemble du processus
Exécutez l'ensemble du processus
Exécutez l'ensemble du processus
Exécutez l'ensemble du processus
Exécutez l'ensemble du processus

Vous devriez pouvoir connecter la carte USB HTC au téléphone, lancer le fichier cellbot.py dans ASE et ouvrir une session de terminal dans le téléphone. Tapez "H" pour que le téléphone dise bonjour ou toute autre commande du fichier README.txt.

Un "q" quittera le script Python sur le téléphone et fermera le socket du terminal. Voici un récapitulatif de la façon dont tout cela fonctionne: 1. Le script Python ouvre un socket pour accepter les connexions telnet entrantes et faire écho aux commandes sur le port série 2 Nous nous connectons de notre PC au téléphone via telnet sur le port 9002 et lui envoyons les commandes que nous voyons à l'écran 3. La carte USB HTS s'interface avec le port USB du G1 et envoie le signal 3.3v dans la broche 74LS04 1. 4. Le le signal sort de la puce sur la broche 2, revient sur la broche 3 et ressort sur la broche 4 à 5v 5. Notre Arduino accepte le signal série sur la broche RX 0 et le traite via le programme Cellbot.pde 6. Nous pouvez taper 'q' pour tuer le script Python et fermer la connexion telnet Maintenant que vous avez terminé ce processus très compliqué pour envoyer des commandes de base à un robot Arduino, il est temps pour vous de le pirater pour qu'il soit encore plus génial ! Nous n'avons pas encore de fonctionnement série bidirectionnel, donc l'Arduino ne peut pas renvoyer de commandes au téléphone, mais nous y travaillons. Restez à jour en vous abonnant à notre blog sur Cellbots.com. À propos des auteurs: Tim Heath Chercheur principal qui a mis en place ce processus pour la première fois au Tech Shop de Menlo Park, dont il est membre. Programmeur Ryan Hickman qui a travaillé sur le code Python et Arduino et a créé ce Instructable.

Conseillé: