Table des matières:

Agitez votre main pour contrôler le bras robotique OWI Aucune condition : 10 étapes (avec photos)
Agitez votre main pour contrôler le bras robotique OWI Aucune condition : 10 étapes (avec photos)

Vidéo: Agitez votre main pour contrôler le bras robotique OWI Aucune condition : 10 étapes (avec photos)

Vidéo: Agitez votre main pour contrôler le bras robotique OWI Aucune condition : 10 étapes (avec photos)
Vidéo: MARCHE OU CREVE - STEPHEN KING - ( LIVRE AUDIO INTEGRAL en FRANCAIS ) Lu par VL 2024, Décembre
Anonim
Image
Image
les pièces
les pièces

L'IDÉE:

Il existe au moins 4 autres projets sur Instructables.com (au 13 mai 2015) autour de la modification ou du contrôle du bras robotique OWI. Ce n'est pas surprenant, puisqu'il s'agit d'un kit robotique si génial et peu coûteux avec lequel jouer. Ce projet est similaire dans l'esprit (c'est-à-dire contrôler le bras robotique avec Arduino), mais différent dans l'approche. [vidéo]

L'idée est de pouvoir contrôler le bras robotique sans fil à l'aide de gestes. De plus, j'ai essayé de réduire au minimum les modifications du bras robotique, afin qu'il puisse toujours être utilisé avec le contrôleur d'origine.

Cela semble simple.

Il s'agit finalement d'un projet en trois parties:

  1. Un gant équipé de suffisamment de capteurs pour contrôler une LED et 5 moteurs
  2. Un dispositif émetteur basé sur Arduino Nano pour accepter les commandes de contrôle du gant et les envoyer sans fil au dispositif de contrôle Arm
  3. Un récepteur sans fil basé sur Arduino Uno et un dispositif de commande de moteur attaché au bras robotique OWI

CARACTÉRISTIQUES

  1. Prise en charge des 5 degrés de liberté (DOF) et de la LED
  2. Gros bouton rouge - pour arrêter immédiatement les moteurs sur le bras en évitant les dommages
  3. Conception modulaire portable

Pour les mobinautes: la "vidéo promotionnelle" de ce projet est sur YouTube ici.

Étape 1: Pièces

GANT:

Vous aurez besoin des éléments suivants pour créer un contrôleur de gant:

  1. Isotoner Smartouch Tech Stretch Stitched Glove (ou similaire) - sur Amazon.com
  2. Capteur Spectra Symboflex 2.2" - sur Amazon.com
  3. Gyroscope 3 axes + module accéléromètre GY-521 6DOF MPU6050 - sur Fasttech.com
  4. EN-TÊTE DE BOÎTE 2X5 DROITE - sur Phoenixent.com
  5. PRISE-RECEPTACLE 2X5 IDC - sur Phoenixent.com
  6. CÂBLE RUBAN PLAT 10 Conducteurs Pas.050" - sur Phoenixent.com
  7. 2 LED 5 mm - Vert et Jaune
  8. 2 x petits boutons
  9. Résistances, fils, aiguille, fil noir, pistolet à colle, pistolet à souder, soudure, etc.

BOÎTE À SANGLE DE TRANSMISSION:

  1. Carte compatible Arduino Nano v3.0 ATmega328P-20AU - sur Fasttech.com
  2. Émetteur-récepteur sans fil nRF24L01+ 2,4 GHz compatible Arduino - sur Amazon.com
  3. Bracelet Gymboss - sur Amazon.com
  4. Boîtier de support de batterie 9V avec interrupteur marche/arrêt - sur Amazon.com
  5. EN-TÊTE DE BOÎTE 2X5 DROITE - sur Phoenixent.com
  6. pile 9v
  7. Condensateur 47uF (50v)
  8. Résistances, fils, pistolet à colle, pistolet à souder, soudure, etc.

BOÎTIER DE CONTRLEUR DE BRAS ROBOTIQUE OWI:

  1. Carte de développement Uno R3 Rev3 compatible Arduino - sur Fasttech.com
  2. KIT de bricolage Prototype Shield pour Arduino (ou similaire) - sur Amazon.com
  3. Émetteur-récepteur sans fil nRF24L01+ 2,4 GHz compatible Arduino - sur Amazon.com
  4. 3 x L293D 16 broches Circuit intégré Pilote de moteur IC - sur Fasttech.com
  5. 1 x SN74HC595 74HC595 Registre à décalage 8 bits avec registres de sortie à 3 états DIP16 - sur Amazon.com
  6. Condensateur 47uF (50v)
  7. Boîte pour Arduino - sur Amazon.com
  8. Interrupteur marche / arrêt
  9. 2 boutons de 13 mm (un rouge et un vert)
  10. 2 x 2X7 BOX EN-TÊTE DROITE - comme ci-dessus sur Phoenixent.com
  11. CÂBLE RUBAN PLAT 14 Conducteur Pas de 0,050" - comme ci-dessus sur Phoenixent.com
  12. Pile 9v + connecteur à clipser
  13. Résistances, fils, pistolet à colle, pistolet à souder, soudure, etc.

… et bien sûr:

OWI Robotic Arm Edge - Bras robotique - OWI-535 - sur Adafruit.com

Étape 2: PROTOTYPAGE

PROTOTYPAGE
PROTOTYPAGE
PROTOTYPAGE
PROTOTYPAGE

Je suggère fortement de prototyper chacun des contrôleurs avant de souder tous les composants ensemble.

Ce projet utilise quelques éléments de matériel difficiles:

nRF24L01

Il m'a fallu un certain temps pour que les deux nRF24 se parlent. Apparemment, ni Nano, ni Uno ne fournissent suffisamment d'alimentation stabilisée de 3,3 V pour que les modules fonctionnent de manière cohérente. Une solution dans mon cas était un condensateur de 47 uF sur les broches d'alimentation des deux modules nRF24. Il y a aussi quelques bizarreries avec l'utilisation de la bibliothèque RF24 en modes IRQ et non-IRQ, je recommande donc d'étudier les exemples très attentivement.

Quelques bonnes ressources:

nRF24L01 Page du produit du circuit intégré d'émetteur-récepteur RF 2,4 GHz à très faible consommation

Page de la bibliothèque du pilote RF24

Le simple fait de googler nRF24 + arduino produira beaucoup de liens. Cela vaut la peine de faire des recherches

74HC595 REGISTRE DE CHANGEMENT

Sans surprise, devant contrôler 5 moteurs, une LED, deux boutons et un module sans fil, j'ai manqué de broches sur l'Uno assez rapidement. La façon bien connue d'"étendre" votre nombre de broches est d'utiliser un registre à décalage. Étant donné que nRF24 utilisait déjà l'interface SPI, j'ai décidé d'utiliser également SPI pour la programmation du registre à décalage (pour la vitesse et pour économiser les broches) au lieu de la fonction shiftout(). À ma grande surprise, cela a fonctionné comme un charme dès la première fois. Vous pouvez le vérifier dans l'affectation des broches et dans les croquis.

La planche à pain et les fils de connexion sont vos amis.

Étape 3: GANT

GANT
GANT
GANT
GANT
GANT
GANT
GANT
GANT

OWI Robotic ARM a 6 éléments à contrôler (OWI Robotic Arm Edge Picture)

  1. Une LED située sur le GRIPPER de l'appareil
  2. UNE PINCE
  3. UN POIGNET
  4. Un COUDE - est la partie du bras robotique attachée au POIGNET
  5. Une ÉPAULE est la partie du bras robotique attachée à la BASE
  6. UNE BASE

Le gant est conçu pour contrôler la LED du bras robotique et les 5 moteurs (degrés de liberté).

J'ai des capteurs individuels marqués sur les images ainsi qu'une description ci-dessous:

  1. Le GRIPPER est contrôlé par les boutons situés sur le majeur et l'auriculaire. La pince est fermée en pressant l'index et le majeur ensemble. La pince s'ouvre en pressant l'anneau et le petit doigt ensemble.
  2. Le POIGNET est contrôlé par la résistance flexible sur le chercheur d'index. Recourber le doigt à mi-chemin fait descendre le poignet et le recourber complètement fait monter le poignet. Garder l'index droit arrête le poignet.
  3. Le COUDE est contrôlé par un accéléromètre - l'inclinaison de la paume vers le haut et vers le bas déplace le coude de haut en bas respectivement
  4. L'ÉPAULE est contrôlée par un accéléromètre - l'inclinaison de la paume vers la droite et vers la gauche (mais pas à l'envers !) déplace l'épaule vers le haut et vers le bas respectivement
  5. La BASE est également contrôlée par un accéléromètre, similaire à l'épaule - l'inclinaison de la paume vers la droite et vers la gauche complètement à l'envers (paume vers le haut) déplace la base respectivement à droite et à gauche
  6. La LED sur la pince est allumée/éteinte en appuyant simultanément sur les deux boutons de commande de la pince.

Toutes les réponses des boutons sont retardées d'un quart de seconde pour éviter la gigue.

L'assemblage du gant nécessite un peu de soudure et beaucoup de couture. Fondamentalement, il s'agit simplement d'attacher 2 boutons, une résistance flexible, un module Accel/Gyro au tissu du gant et d'acheminer les fils vers la boîte de connexion.

Deux LED sur le boîtier de connexion sont:

  1. VERT - sous tension
  2. JAUNE - clignote lorsque les données sont transmises au boîtier de commande du bras.

Étape 4: BOÎTIER ÉMETTEUR

BOÎTE ÉMETTEUR
BOÎTE ÉMETTEUR
BOÎTE ÉMETTEUR
BOÎTE ÉMETTEUR
BOÎTE ÉMETTEUR
BOÎTE ÉMETTEUR

Le boîtier émetteur est essentiellement un Arduino Nano, un module sans fil nRF24, un connecteur de fil flexible et 3 résistances: 2 résistances déroulantes de 10 kOhm pour les boutons de commande de la pince sur le gant et une résistance à division de tension de 20 kOhm pour le capteur flexible contrôlant le poignet.

Tout est soudé ensemble sur un vero-board. Notez que nRF24 est "suspendu" au-dessus de Nano. J'avais peur que cela puisse causer des interférences, mais cela fonctionne.

L'utilisation de la batterie 9v rend la partie sangle un peu encombrante, mais je ne voulais pas jouer avec les batteries LiPo. Peut-être plus tard.

Veuillez consulter l'étape d'affectation des broches pour les instructions de soudage

Étape 5: BOÎTIER DE CONTRLE DU BRAS

BOÎTIER DE COMMANDE DE BRAS
BOÎTIER DE COMMANDE DE BRAS
BOÎTIER DE COMMANDE DE BRAS
BOÎTIER DE COMMANDE DE BRAS
BOÎTIER DE COMMANDE DE BRAS
BOÎTIER DE COMMANDE DE BRAS
BOÎTIER DE COMMANDE DE BRAS
BOÎTIER DE COMMANDE DE BRAS

Le boîtier de contrôle du bras est basé sur Arduino Uno. Il reçoit les commandes du gant sans fil via le module nRF24 et contrôle le bras OWI Robotoc via 3 puces de pilote L293D.

Comme presque toutes les broches Uno ont été utilisées, il y a beaucoup de fils à l'intérieur de la boîte - elle se ferme à peine !

De par sa conception, le boîtier démarre en mode OFF (comme si un bouton d'arrêt rouge était enfoncé), laissant à l'opérateur le temps de mettre le gant et de se préparer. Une fois prêt, l'opérateur appuie sur le bouton vert et la connexion entre le gant et le boîtier de commande doit être immédiatement établie (comme indiqué par la LED jaune sur le gant et la LED rouge sur le boîtier de commande).

CONNEXION À OWI

La connexion au bras robotique s'effectue via un en-tête à double rangée à 14 broches (selon l'image ci-dessus) via un câble plat à 14 fils.

  • Les connexions LED sont à la terre commune (-) et à la broche arduino A0 via une résistance de 220 ohms
  • Tous les fils du moteur sont connectés aux broches L293D 3/6 ou 11/14 (+/- respectivement). Chaque L293D supporte 2 moteurs, donc deux paires de broches.
  • Les lignes électriques OWI sont les broches les plus à gauche (+6v) et les plus à droite (GND) du connecteur à 7 broches à l'arrière du haut jaune. (Vous pouvez voir les fils branchés sur la photo ci-dessus). Ces deux sont connectés aux broches 8 (+) et 4, 5, 12, 13 (GND) sur les trois L293D.

Veuillez voir le reste de l'affectation des broches à l'étape suivante

Étape 6: ATTRIBUTION DU PIN

AFFECTATION DU PIN
AFFECTATION DU PIN
AFFECTATION DU PIN
AFFECTATION DU PIN
AFFECTATION DU PIN
AFFECTATION DU PIN

NANO:

  • Puce 3.3v - 3.3v vers nRF24L01 (broche 2)
  • 5v - 5v vers carte accéléromètre, boutons, capteur flexible
  • a0 - entrée de résistance flexible
  • a1 - contrôle LED jaune "coms"
  • a4 - SDA vers accéléromètre
  • a5 - SCL vers accéléromètre
  • d02 - Puce nRF24L01 Broche d'interruption (broche 8)
  • d03 - ouvrir l'entrée du bouton de préhension
  • d04 - fermer l'entrée du bouton de préhension
  • d09 - Broche SPI CSN vers puce nRF24L01 (broche 4)
  • d10 - Broche SPI CS vers puce nRF24L01 (broche 3)
  • d11 - Puce SPI MOSI vers nRF24L01 (broche 6)
  • d12 - Puce SPI MISO vers nRF24L01 (broche 7)
  • d13 - Puce SPI SCK vers nRF24L01 (broche 5)
  • Vin - 9v +
  • GND - terrain d'entente

ONU:

  • Puce 3.3v - 3.3v vers nRF24L01 (broche 2)
  • 5v - 5v aux boutons
  • Vin - 9v +
  • GND - terrain d'entente
  • a0 - LED poignet +
  • a1 - Broche SPI SS pour Shift Register Select - à la broche 12 sur Shift Register
  • a2 - Entrée bouton ROUGE
  • a3 - Entrée bouton VERT
  • a4 - direction base droite - broche 15 sur L293D
  • a5 - led de communication
  • d02 - nRF24L01 Entrée IRQ (broche 8)
  • d03 - activer la broche 1 ou 9 du servo de base (pwm) sur L293D
  • d04 - direction base gauche - broche 10 sur L293D respectif
  • d05 - activer la broche 1 ou 9 du servo d'épaule (pwm) sur L293D
  • d06 - activer la broche 1 ou 9 du servo coude (pwm) sur L293D
  • d07 - Broche SPI CSN vers puce nRF24L01 (broche 4)
  • d08 - Broche SPI CS vers puce nRF24L01 (broche 3)
  • d09 - activer la broche 1 ou 9 du servo de poignet (pwm) sur L293D
  • d10 - activer la broche 1 ou 9 du servo de préhension (pwm) sur L293D
  • d11 - Puce SPI MOSI vers nRF24L01 (broche 6) et broche 14 sur le registre à décalage
  • d12 - Puce SPI MISO vers nRF24L01 (broche 7)
  • d13 - Puce SPI SCK vers nRF24L01 (broche 5) et broche 11 sur le registre à décalage

SHIFT REGISTRE ET L293Ds:

  • broche QA (15) de 74HC595 à broche 2 de L293D #1
  • broche QB (1) de 74HC595 à broche 7 de L293D #1
  • broche QC (2) de 74HC595 à broche 10 de L293D #1
  • broche QD (3) de 74HC595 à broche 15 de L293D #1
  • broche QE (4) de 74HC595 à broche 2 de L293D #2
  • broche QF (5) de 74HC595 à broche 7 de L293D #2
  • broche QG (6) de 74HC595 à broche 10 de L293D #2
  • broche QH (7) de 74HC595 à broche 15 de L293D #2

Étape 7: COMMUNICATION

LA COMMUNICATION
LA COMMUNICATION

Glove envoie 2 octets de données au boîtier de commande 10 fois par seconde ou chaque fois qu'un signal de l'un des capteurs est reçu.

2 octets suffisent pour 6 contrôles car il suffit d'envoyer:

  • ON/OFF pour LED (1 bit) - J'ai en fait utilisé 2 bits pour être cohérent avec les moteurs, mais un suffit
  • OFF/RIGHT/LEFT pour 5 moteurs: 2 bits chacun = 10 bits

Un total de 11 ou 12 bits est suffisant.

Codes de direction:

  • OFF: 00
  • DROITE: 01
  • GAUCHE: 10

Le mot de contrôle ressemble à ceci (au niveau du bit):

Octet 2 ---------------- Octet 1----------------

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 LED-- M5-- M4-- M3-- M2-- M1--

  • M1 - pince
  • M2 - poignet
  • M3 - coude
  • M4 - épaule
  • M5 - socle

L'octet 1 pourrait être facilement introduit directement dans le registre à décalage, car il contrôle la direction droite/gauche des moteurs 1 à 4.

Un délai d'attente de 2 secondes est activé pour les communications. Si une temporisation se produit, tous les moteurs sont arrêtés comme si un bouton ROUGE était enfoncé.

Étape 8: CROQUIS et plus…

CROQUIS et plus…
CROQUIS et plus…

GANT

Glove sketch utilise les bibliothèques suivantes:

  • DirectIO - disponible sur Github
  • I2Cdev - disponible sur Github
  • Fil - partie de l'IDE Arduino
  • MPU6050 - disponible sur Github
  • SPI - partie de l'IDE Arduino
  • RF24 - disponible sur Github

et trois bibliothèques développées par moi:

  • AvgFilter - disponible sur Github
  • DhpFilter - disponible sur Github
  • TaskScheduler - disponible sur Github

Le croquis du gant est disponible ici: Croquis du gant v1.3

BOÎTIER DE COMMANDE DE BRAS

Arm sketch utilise les bibliothèques suivantes:

  • DirectIO - disponible sur Github
  • PinChangeInt - disponible sur Github
  • SPI - partie de l'IDE Arduino
  • RF24 - disponible sur Github

et une bibliothèque développée par moi:

TaskScheduler - disponible sur Github

Le croquis du bras est disponible ici: Croquis du bras v1.3

Fiches techniques du matériel utilisé

  • Registre à décalage 74HC595 - fiche technique
  • Pilote de moteur L293D - fiche technique
  • Module sans fil nRF24 - fiche technique
  • Module accéléromètre/gyroscope MPU6050 - fiche technique

MISE À JOUR du 31 mai 2015:

Une nouvelle version des croquis du boîtier de commande des gants et des bras est disponible ici: Croquis des gants et des bras v1.5

Ils sont également situés sur github ici.

Changements

  • Ajout de deux octets supplémentaires à la structure de communication pour envoyer la vitesse du moteur demandée pour les moteurs du poignet, du coude, de l'épaule et de la base sous la forme d'une valeur de 5 bits (0.. 31) à partir du gant proportionnellement à l'angle du geste de contrôle (voir ci-dessous). Arm Control Box mappe les valeurs [0.. 31] aux valeurs PWM respectives pour chacun des moteurs. Cela permet un contrôle progressif de la vitesse par l'opérateur et une manipulation plus précise du bras.
  • Nouvel ensemble de gestes:

1. LED: LED de contrôle des boutons - bouton majeur - allumé, bouton auriculaire - éteint

2. PINCE: Commandes de bande flexible Pince - doigt à moitié plié - OUVERT, doigt complètement plié - FERMER

3. POIGNET: Le poignet est contrôlé en inclinant la paume de la position complètement horizontale vers le HAUT et le BAS respectivement. Plus d'inclinaison produit plus de vitesse

4. BRAS: Le bras est contrôlé en inclinant la paume de la position complètement horizontale à GAUCHE et à DROITE. Plus d'inclinaison produit plus de vitesse

5. ÉPAULE: L'épaule est contrôlée en tournant la paume à DROITE et à GAUCHE à partir de la paume pointant vers le haut. La paume est tournée le long de l'axe du coude (comme c'est le cas en agitant la main)

6. BASE: La base est contrôlée de la même manière que l'épaule avec la paume dirigée vers le bas.

Étape 9: QUOI D'AUTRE ?

QUOI D'AUTRE?
QUOI D'AUTRE?

IMAGINATION AU TRAVAIL

Comme d'habitude avec de tels systèmes, ils pourraient être programmés pour faire beaucoup plus.

Par exemple, la conception actuelle intègre déjà des capacités supplémentaires, impossibles avec la télécommande standard:

  • Augmentation progressive de la vitesse: chaque mouvement du moteur est initié à une vitesse minimale prédéfinie, qui est augmentée progressivement toutes les 1 seconde jusqu'à ce qu'une vitesse maximale soit atteinte. Cela permet un contrôle plus précis de chacun des moteurs (notamment le poignet et la pince)
  • Annulation de mouvement plus rapide: lorsque la commande est reçue par l'Arm Box pour arrêter un moteur, il inverse momentanément le moteur pendant environ 50 ms, " cassant " ainsi le mouvement, et permettant un contrôle plus précis.

QUOI D'AUTRE?

Peut-être qu'une gestuelle de contrôle plus élaborée pourrait être mise en œuvre. Ou des gestes simultanés pourraient être utilisés pour des contrôles élaborés. Le bras peut-il danser ?

Si vous avez une idée de la façon de reprogrammer le gant, ou si vous avez une version d'un croquis que vous voulez que je teste - faites-le moi savoir: [email protected]

Étape 10: *** NOUS AVONS GAGNÉ !!! ***

*** NOUS AVONS GAGNÉ !!! ***
*** NOUS AVONS GAGNÉ !!! ***

Ce projet a remporté le premier prix du concours de créations codées parrainé par Microsoft.

Vérifiez-le! WOO-HOO !!!

Créations codées
Créations codées
Créations codées
Créations codées

Deuxième Prix des Créations Codées

Conseillé: