bot de préhension de la télécommande
Composants et fournitures
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 5 | ||||
| × | 2 | ||||
| × | 8 | ||||
| × | 8 |
Applications et services en ligne
|
À propos de ce projet
Il y a quelques mois, mon fils m'a demandé de lui faire un bot télécommandé. Il m'a donné une liste de ce qu'il voulait et nous l'avons réduite à une liste gérable :) C'est ce que j'ai fini par construire pour lui...
- Prenez le blindage du capteur UNO et V5 et enclenchez-les ensemble.
- Placez la carte UNO/Sensor jointe dans le support de clip à l'intérieur du centre du bot.
- Prenez du ruban adhésif double face et placez le pilote du moteur sur le mur intérieur gauche et l'adaptateur Bluetooth sur le mur droit.
Pour ce projet, vous pouvez fabriquer votre propre châssis ou en choisir un autre, à vous de choisir.
Étape 1 : le logiciel nécessaire
Choses que vous devrez télécharger :
- L'IDE Arduino
- Python 2.7 (une installation complète avec tkinter)
- La bibliothèque pySerial
- La bibliothèque de contrôleur de moteur L9110S jointe .zip (voir les fichiers dans cette étape)
- Le code Robot ci-dessous ou le fichier .zip joint (Voir les fichiers dans cette étape)
- L'application de contrôle à distance Python (voir les fichiers dans cette étape)
Étape 2 :Nomenclature du matériel
Les pièces dont vous aurez besoin sont les suivantes :
- Châssis Runt Rover Half-pint ou remplacement approprié pour 4 roues motrices
- Arduino Uno ou carte similaire avec câble USB
- Bouclier de capteur V5
- Driver de moteur L9110S (Obtenez-en quelques-uns car ils sont bon marché)
- Servo MG995 ou autre remplacement approprié x2
- Adaptateur Bluetooth HC-05 ou HC-06 x1
- Plaque servo standard B x1
- Support à 90 degrés x1
- Support simple x2
- Moyeu servo léger (525125 pour Futaba) x1
- Kit de préhension standard A x1
- Câbles de raccordement femelle à femelle
- 5 piles AA rechargeables (NiMH) et chargeur
- Ruban adhésif double face et petites attaches zippées
- Un bloc-piles "AA" à 5 emplacements (si vous optez pour l'option AA rechargeable)
- Batterie et chargeur NiMH 6 v ou Li-ion 7,4 v
- Vis 1,250" 6-32 x2
- Entretoises en nylon 8-32 .750" x2
- Vis .500" 6-32 avec écrous x8
- .3125" 6-32 vis x8
Vous pouvez vous procurer de nombreuses pièces directement auprès d'eBay ou d'autres fournisseurs comme Sparkfun, Adafruit et ServoCity.
Après avoir acheté, collecté et téléchargé tout ce que vous êtes prêt à commencer avec la construction.
Étape 3 :Assemblage - Le châssis
Assemblez d'abord le châssis en suivant les instructions fournies avec le châssis ou la vidéo. Après avoir terminé, vous devriez avoir quelque chose comme l'image. Lorsque vous placez la plaque qui maintient le contrôleur sur le bot, assurez-vous de la placer dans les trous du milieu. Cela laissera de l'espace à l'avant et à l'arrière du bot.
REMARQUE :Avant d'aller plus loin, veuillez retirer les 4 roues, afin de ne pas endommager les moteurs lors de la mise en place des autres composants du bot.
Étape 4 :Assemblage de la pince
Assemblez la pince en suivant les instructions fournies dans cette vidéo. Après avoir terminé, vous devriez avoir quelque chose comme l'image.
Étape 5 :Montage de la pince - Étape 1
Prenez le support à 90 degrés, le moyeu servo léger et quatre (4) des vis .3125" pour cette étape :
Prenez le moyeu du servo et placez-le sur un côté du support et fixez-les avec les vis .2125" comme sur la photo et mettez-le de côté Placez les écrous sur les deux vis les plus courtes et serrez-les Maintenant, contenez les deux supports simples, le 1.250 " et deux vis de .500" avec écrous, 2 entretoises en nylon et la plaque Servo B. Prenez un seul support et placez-le à l'intérieur du demi-pinte bot et placez les 2 vis de 1,259" sur les trous de gauche (de l'intérieur) et les vis de 2,500" sur le côté droit. Toutes les têtes de vis seront à l'intérieur du bot comme illustré. placez maintenant le deuxième support unique sur les vis à l'extérieur du bot. Ensuite, prenez le entretoises en nylon et placez-les sur la plus longue (1.250") qui dépasse, puis vissez la plaque servo sur les vis longues Serrez les vis allant à la plaque servo avec une clé hexagonale de la bonne taille ou un tournevis si vous avez utilisé des vis normales.
Utilisez les images pour référence au besoin.
Étape 6 :Montage de la pince - Étape 2
- Prenez ensuite le servo restant que vous avez et placez-le dans le support du servo avec la colonne vertébrale vers le haut. Fixez-le avec 4 des vis .3125".
- Prenez ensuite le support à 90 degrés avec le moyeu du servo dessus et montez la pince dessus avec les 4 vis de 0,500" en utilisant 2 des écrous 8-32 comme espaceurs entre le support et la pince comme illustré. Fixez avec un autre écrou sur le dessus de la pince (sous le support si vous tournez les vis dans l'autre sens)
- Maintenant, prenez l'ensemble de pince et placez-le sur le servo et utilisez une vis de servo (de votre paquet de servo) pour le maintenir en place, en le fixant fermement.
Une fois que vous avez terminé, faites passer les deux câbles de servo à travers le trou du support plat à l'intérieur du bot.
Voir les images pour plus de détails et de référence.
Étape 7 : Montage de l'électronique
- Prenez le blindage du capteur UNO et V5 et enclenchez-les ensemble.
- Placez la carte UNO/Sensor jointe dans le support de clip à l'intérieur du centre du bot.
- Prenez du ruban adhésif double face et placez le pilote du moteur sur le mur intérieur gauche et l'adaptateur Bluetooth sur le mur droit.
Étape 8 :Câblage - Les moteurs
- Broche A-1A sur le pilote du moteur à la broche 5 sur le blindage du capteur
- Broche A-1B sur le pilote du moteur à la broche 6 sur le blindage du capteur
- Broche B-1A sur le pilote du moteur à la broche 3 sur le blindage du capteur
- Broche B-1B sur le pilote du moteur à la broche 11 sur le blindage du capteur
Maintenant, avec les robots face à vous, prenez les fils sur le côté GAUCHE et -
- Connectez les deux fils NOIRS de gauche à la première borne à vis de sortie du moteur A
- Connectez les deux fils ROUGES sur la gauche à la deuxième borne à vis de sortie pour le moteur A
Prenez les fils sur le côté DROIT et -
- Connectez les deux fils NOIRS de gauche à la première borne à vis de sortie du moteur B
- Connectez les deux fils ROUGES sur la gauche à la deuxième borne à vis de sortie pour le moteur B
Les servos :
- Connectez maintenant le fil du servo Y à la ligne de broche 2 sur le blindage du capteur. Le fil blanc ou orange est toujours le fil de signal.
- Connectez maintenant le fil de servo X (Gripper) à la ligne de broche 7 sur le blindage du capteur. Le fil blanc ou orange est toujours le fil de signal.
Étape 9 :Câblage du module Bluetooth
- Adaptateur Bluetooth Tx -> broche 0 du blindage du capteur
- Adaptateur Bluetooth Rx -> broche 1 du blindage du capteur
Étape 10 :Ajout de puissance
Connectez les câbles d'alimentation du bloc-piles 5 'aa' (ou autre pack 6 v) à la borne à vis d'alimentation du blindage du capteur :
- Rouge à Vcc
- Noir vers GND
- Ensuite, assurez-vous que le cavalier sur le blindage du capteur V5 est en place sur les broches du cavalier.
- Connectez la broche GND sur le pilote L9110s à une broche GND sur le blindage du capteur.
- Connectez le fil positif de la batterie 6 v ou 7,2 v ou de toute autre batterie que vous avez choisie pour les moteurs à la broche Vcc du pilote de moteur L9110S.
- Connectez le fil négatif (GND) de la batterie du moteur à une broche GND sur le blindage du moteur.
Étape 11 :Configuration du module Bluetooth HC05/HC06
Vous devrez maintenant accéder aux paramètres du périphérique Bluetooth sur votre PC à partir du panneau "Contrôle" ou "Systèmes" du système d'exploitation ou utiliser Google pour vous aider.
Informations de configuration du système d'exploitation Bluetooth possibles :
- Windows
- Linux (j'utilise blueman sur Linux Mint, mais consultez votre distribution pour plus d'informations)
- Mac
Vous devrez noter le nom ou le numéro du périphérique de port série qui lui est attribué.
Étape 12 : chargement du code
Avec le câblage vérifié et revérifié , Il est temps de charger le code. Suivez les instructions sur le site Arduino pour savoir comment installer l'IDE Arduino.
Une fois l'IDE installé, vous pouvez ensuite installer la bibliothèque L9110 Motor Driver. Pour ce faire, téléchargez le fichier zip inclus dans l'ÉTAPE 1 nommé L9110Driver.zip et extrayez-le dans votre dossier de bibliothèques Arduino ou en suivant ces instructions sur la façon d'ajouter une bibliothèque.
Maintenant que l'IDE et la bibliothèque de pilotes de moteur ont été installés, chargez le code du robot dans l'IDE Arduino à partir du fichier zip trouvé à l'ÉTAPE 1 nommé blue_t_slave.zip. Ces fichiers sont également inclus dans cette étape.
Connectez votre PC et Arduino avec le câble USB. Maintenant, choisissez la carte dans le menu Outils->Carte dans l'IDE, Uno pour ce projet (choisissez la carte que vous avez si différente de Uno) Maintenant, dans le menu Outils->Port, choisissez votre port com. Une fois cela fait, cliquez sur le bouton de téléchargement. Si tout s'est bien passé, le code a été chargé, sinon consultez ici pour obtenir de l'aide sur l'IDE et les problèmes associés.
Étape 13 :Exécuter l'application de contrôle Python
Pour exécuter l'application de contrôle à distance Python, téléchargez le fichier zip à partir de cette étape et extrayez-le à l'emplacement à partir duquel vous souhaitez l'exécuter. Ensuite, ouvrez un shell de commande (c'est-à-dire un terminal, cmd.exe, etc...) et accédez au répertoire dans lequel vous avez extrait le fichier. Tapez maintenant :python rover.py à partir de la ligne de commande et une fenêtre ressemblant à celle de l'image devrait apparaître. Sinon, recherchez les erreurs python et corrigez (c'est-à-dire les bibliothèques manquantes, etc.) Le site Python peut en aider certains si nécessaire.
Une fois l'application en cours d'exécution, vous devriez être prêt à partir.
Maintenant, allumez le bot. Tapez ensuite le port comm de votre adaptateur et cliquez sur le bouton "Connect". Après quelques secondes, vous devriez voir les autres commandes activées et le bouton de connexion désactivé. Cela signifie que vous êtes connecté au robot. Si vous ne parvenez pas à vous connecter à l'adaptateur Bluetooth, vous devrez utiliser la magie de Google pour vous dépanner !
L'application de contrôle est simple à utiliser et permet de contrôler la souris ou le clavier.
Les commandes du clavier sont :
- Les flèches sont vers l'avant, vers l'arrière, tournez à gauche à 90 degrés, tournez à droite à 90 degrés
- a - tourner à gauche à 45 degrés
- s - tourner à droite à 45 degrés
- h - s'arrêter (arrêter)
- y - définir l'axe Y de la pince
- u - ouvrir/fermer la pince
- c - maison de préhension
Les commandes Forward et Reverse sont constantes, c'est-à-dire qu'elles maintiennent le bot en mouvement après l'exécution jusqu'à ce qu'une nouvelle direction soit envoyée ou qu'une commande Halt soit envoyée.
Les virages à 90 et 45 degrés sont temporaires, c'est-à-dire qu'après un certain délai, ils empêchent le robot de se déplacer.
Les curseurs de la pince ne règlent pas automatiquement la pince sur le bot. Vous devez appuyer sur le bouton ou la touche "Set" correspondant pour effectuer l'exécution réelle de l'ensemble.
Les valeurs du curseur vont de 0 à 180.
- Axe Y de la pince : 0 correspond à tout le haut et 180 à tout le bas.
- Gripper Open/Close :0 est complètement fermé et 180 et complètement ouvert.
Utilisez le bouton "Déconnecter" pour arrêter d'utiliser le programme. Cela enverra des commandes pour arrêter le bot et ramener le préhenseur.
Code
- Interface graphique du pilote Python
- Code mobile
IHM graphique du pilote PythonPython
#!/usr/bin/env python## Pour Linux, BSD ou Mac OSX, vous pouvez chmod +x sur ce script pour le rendre exécutable############# Application de contrôle Rover## Écrit par Scott Beasley - 2015 # Libre d'utilisation ou de modification. Enjoy.############import sysimport serialimport timefrom Tkinter import *import tkFontimport tkMessageBox# Créer la fenêtre pour l'applicationclass App (Frame):# Faire la fenêtre def createWidgets (self):self.connected =False self.message =StringVar ( ) # Créez une petite police pour les boutons de réglage de la pince. helv6 =tkFont.Font (family ='Helvetica', size =6, weight ='normal') self.frame =Frame (self.master) self.frame.pack ( ) self.f1 =Frame (self.frame) self .l1 =Label (self.f1, text ="Comm Port:") self.l1.pack (side =LEFT) self.comm_entry =Entrée (self.f1, bd =5, name ="comm_entry") self.comm_entry .pack (side =LEFT) self.connectButton =Button (self.f1, text ="Connect", command =self.SerialConnect, name ="b_connect") self.connectButton.pack (side =LEFT) self.disconnectButton =Button (self.f1, text ="Disconnect", command =self.SerialDisconnect, name ="b_disconnect") self.disconnectButton.pack (côté =RIGHT) self.f1.grid (ligne =0, colonne =0) self.f2 =LabelFrame (self.frame, bd =3, relief ="groove", text="Ground Control") self.g_vert_fm =Frame (self.f2) self.grip_vert =Échelle (self.g_vert_fm, from_ =0, to =180) self.grip_vert.grid (row =0, column =0, rowspan =4, sticky =W) self.grip_vert_set =Button (self.g_vert_fm, text ="Set", command =self.GripperY, name ="b_grip_vert_set", largeur =1, hauteur =2, police =helv6) self.grip_vert_set.grid (ligne =5, colonne =0, collant =W) self.master.bind ("", self.GripperY) self. g_vert_fm.grid (row =0, column =0, rowspan =4, sticky =W) self.leftforwardButton =Button (self.f2, text ="\\", command =self.TurnLeft45, name ="b_left_forward") self .leftforwardButton.grid (ligne =0, colonne =1) self.master.bind ("", self.TurnLeft45) self.leftButton =Bouton (self.f2, text ="<", command =self.TurnLeft, name ="b_left") self.leftButton.grid (ligne =1, colonne =1) self.master.bind (" ", self.TurnLeft ) self.rightforwardButton =Button (self.f2, text ="/", command =self.TurnRight45, name ="b_right_forward") self.rightforwardButton.grid (row =0, column =3) self.master.bind (" ", self.TurnRight45) self.haltButton =Button (self.f2, text ="Halt!", command =self.Halt, name ="b_halt") self.haltButton .grid (ligne =1, colonne =2) self.master.bind ("", self.Halt) self.rightButton =Button (self.f2, text=">", command =self.TurnRight, name ="b_right") self.rightButton.grid( ligne =1, colonne =3) self.master.bind (" ", self.TurnRight) self.upButton =Bouton (self.f2, text="^", commande =self.Forward, name ="b_forward") self.upButton.grid (ligne =0, colonne =2) self.master.bind (" ", self.Forward) self.leftdownButton =Button (self.f2, text ="/", command =self.TurnRight45, name ="b_left_down") self.leftdownButton.grid (row =2, column =1) self.downButton =Button (self. f2, text="V", command=self.Reverse, name ="b_reverse") self.downButton.grid (ligne=2, colonne =2) self.master.bind (" ", self.Reverse) self.f2.grid (row =1, column =0, pady =25) self.rightdownButton =Button (self.f2, text ="\\", command =self.TurnLeft45, name ="b_right_down") self.rightdownButton.grid (ligne =2, colonne =3) self.g_horz_fm =Cadre (self.f2) self.grip_horz =Échelle (s elf.g_horz_fm, from_ =0, to =180, orient =HORIZONTAL) self.grip_horz.grid (row =0, column =0, columnpan =7, sticky =E) self.grip_horz_set =Bouton (self.g_horz_fm, text ="Set", command =self.GripperX, name ="b_grip_horz_set", width =1, height =2, font =helv6) self.grip_horz_set.grid (row =0, column =8) self.master.bind ("", self.GripperX) self.g_horz_fm.grid (ligne =4, colonne =0, étendue de colonnes =7, collant =E) self.master.bind (" ", self.GripperHome) self.f3 =Frame (self.frame) self.l2 =Label (self.f3, text ="Last action:") self.l2.pack (side =LEFT) self.l3 =Label (self.f3, text=" ", textvariable =self.message) self.l3.pack (side =RIGHT) self.f3.grid (row =3, column =0, pady =8) # Définissez l'état des boutons de contrôle du bot. Activer lorsque connecté, # Désactivé sinon. def CtrlButtonsState (self, bstate):self.leftforwardButton.config (state =bstate) self.leftButton.config (state =bstate) self.rightforwardButton.config (state =bstate) self.rightButton.config (state =bstate) self. upButton.config (état =bstate) self.leftdownButton.config (état =bstate) self.downButton.config (état =bstate) self.rightdownButton.config (état =bstate) self.haltButton.config (état =bstate) self. disconnectButton.config (state =bstate) self.grip_horz.config (state =bstate) self.grip_vert.config (state =bstate) self.grip_horz_set.config (state =bstate) self.grip_vert_set.config (state =bstate) # Définir l'état de l'entrée du port de communication. Activer lorsqu'il n'est pas connecté, # Désactivé lorsque le bot est connecté. def ConnCtrlsState (self, bstate):self.connectButton.config (state =bstate) self.comm_entry.config (state =bstate) # Connectez-vous au port de communication saisi dans le champ d'entrée comm. def SerialConnect (self):essayez:# Modifiez le débit en bauds ici if diffrent then 9600 self.ser =serial.Serial (self.comm_entry.get ( ), 9600) sauf IOError:tkMessageBox.showerror ("Invalid comm port", " Port de communication introuvable.") return self.ConnCtrlsState (DISABLED) self.CtrlButtonsState (NORMAL) self.message.set ("SerialConnect") self.connected =True time.sleep (3) # Attendez un peu pour que la connexion se produise # Déconnectez-vous du bot (fermez le port de communication). def SerialDisconnect (self):essayez:# Envoyez une commande Halt juste au cas où le bot serait toujours en mouvement. self.send_cmd ('h', "Halt!") time.sleep (1) self.ser.close ( ) sauf IOError:print "Impossible de fermer le port..." self.message.set ("SerialDisconnect") self .ConnCtrlsState (NORMAL) self.CtrlButtonsState (DISABLED) self.connected =False time.sleep (2) # Attendez un peu pour que la déconnexion se produise # Envoyez la commande au port de communication ouvert def send_cmd (self, action, msg):if self.connected ==True :pour val en action :self.ser.write (val) self.ser.flush ( ) self.message.set (msg) # Envoie au bot une commande tourner à gauche. def TurnLeft (self, event =None):self.send_cmd ('a', "Left") # Envoie au bot une commande tourner à gauche. def TurnLeft45 (self, event =None):self.send_cmd ('q', "Left45") # Envoie au bot une commande tourner à droite. def TurnRight (self, event =None):self.send_cmd ('s', "Right") # Envoie au bot une commande de retournement à droite. def TurnRight45 (self, event =None):self.send_cmd ('e', "Right45") # Envoie au bot une commande Forward. def Forward (self, event =None):self.send_cmd ('w', "Up") # Envoie au bot une commande Reverse. def Reverse (self, event =None):self.send_cmd ('z', "Down") # Envoie au bot une commande Halt. def Halt (self, event =None):self.send_cmd ('h', "Halt!") # Définit la pince (X). def GripperX (self, event =None) :# Lisez le curseur et envoyez la valeur au contrôleur de bot # Remarque :0 est complètement fermé et 180 est complètement ouvert grp_change =('>', chr (self. grip_horz.get ( )), chr (255)) self.send_cmd (grp_change, "Gripper X") # Définir le préhenseur Y. def GripperY (self, event =None):# Lire le curseur et envoyer la valeur au contrôleur de bot # Remarque :0 est tout en haut et 180 est tout en bas grp_change =('^', chr (self.grip_vert.get ( )), chr (255)) self.send_cmd (grp_change, "Gripper Y ") # Réglez la pince sur la position "home". def GripperHome (self, event =None):self.send_cmd (('c', chr (255)), "Gripper Home") def __init__ (self, master =None):Frame.__init__ (self, master) self. pack ( ) self.createWidgets ( ) self.CtrlButtonsState (DISABLED)# Démarrez l'interface graphique (Tk) puis dimensionnez et intitulez l'application windowdef main ( ) :root =Tk ( ) root.geometry ("450x350") root.wm_title ( "Rover Control Center (RCC)") app =App (master =root) app.mainloop ( )if __name__ =='__main__':main ( )
Code RoverArduino
Pilote L9110
Pilote de moteur L9110 pour Arduinohttps://github.com/jscottb/L9110DriverPièces et boîtiers personnalisés
4wdgripperbt2.fzzSchémas
4wdgripperbt2.fzzProcessus de fabrication
- Capteur de température multiple
- Contrôle de fer à souder DIY pour 862D+
- MotionSense
- Sécurité incendie des imprimantes 3D
- Lévitation électromagnétique répulsive Arduino
- enregistreur de données de ballon météo alimenté par Arduino
- CoroFence - Détecteur thermique🖖
- Cloud monitoring, un système de contrôle à distance
- 5 avantages du contrôle de production à distance