Mise à jour le 13/01/2021 : Un servomoteur est un appareil qui a pour but de reproduire un mouvement. Dans cet article nous traitons de tout ce qui gravite autour de cet appareil comme, leur principe de fonctionnement, le couple, comment le piloter avec un microcontrôleur etc.
Archives de l’auteur : Hervé Mazelin
***
Mise à jour le 30/03/2016
Ce module « Grove » intègre un capteur spécialisé de type PAJ7620U2, lequel est capable de reconnaître jusqu’à 9 mouvements de la main : vers le haut, vers le bas, vers la droite, vers la gauche, etc… (sur une distance entre 5 à 15 cm).
Information technique
Interface: compatible Grove
Alimentation: 5 Vcc
Distance de détection: 5 à 15 mm
Température de service: -40°C à 85°C
Lumière ambiance max: < 100k Lux
Deux modes de fonctionnement:
– mode normal: 60°/s à 600°/s
– mode jeu: 60°/s à 1200°/s
Dimensions: 20 x 20 mm
Poids: 8g
Protocole: I2C
Référence Seeedstudio: 101020083
Voir la vidéo de présentation du produit -> affichage
Raccordement de la carte de détection de geste référence 101020083 sur la carte interface Mega Shield. »attention à bien se connecter sur un bus I2C«
Une bibliothèque est disponible pour vous aider à commencer à utiliser rapidement le capteur avec Arduino,
- Télécharger la bibliothèque se trouvant en fichier zip à partir du github Gesture_PAJ7620
- Décompressez le fichier téléchargé dans le répertoire Arduino … / Arduino / bibliothèques.
- Renommez le dossier « Gesture » dézippé (ou: « Gesture_PAJ7620 »)
- Démarrez l’IDE Arduino (ou redémarrer si elle est ouverte).
Dans le programme des le départ , Initialiser le PAJ7620 du capteur de mouvement
Exemple :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// // // void setup() // Un programme Arduino doit impérativement contenir cette fonction . // Elle ne sera exécuter une seule fois au démarrage du microcontroleur // Elle sert à configurer globalement les entrées sorties // etc… ( void setup ) { paj7620Init();//initialisation du capteur de mouvement } |
Ce code d’initialisation doit être ajoutée à chaque programme utilisant ce matériel
Lecture des données du registre du PAJ7620 sur le port I2C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
// // // // //Traduit par Redohm void loop() { uint8_t data = 0; // lecture Bank_0_Reg_0x43/0x44 pour le resultat du geste paj7620ReadReg(0x43, 1, &data); // Lorsque les différents gestes sont détectés,les différents data // data seront données par paj7620ReadReg (0x43, 1, et données). if (data == GES_UP_FLAG) // lorsque le geste est détecté le registre sera = GES_UP_FLAG digitalWrite(4, HIGH); // Met un niveau logique haut a la pin 4 la LED s'allume if (data == GES_DOWN_FLAG) // Lorsque le geste est détecté le registre sera = GES_DOWN_FLAG digitalWrite(4, LOW); // Met un niveau logique bas a la pin 4 la LED s’éteint } |
Exemple de programme : Lorsque vous vous déplacez la main , le voyant rouge sera allumé, sinon la LED rouge sera éteinte.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
// // // // #include <Wire.h> //Cette bibliothèque vous permet de communiquer avec des périphériques I2C #include "paj7620.h" void setup() // Un programme Arduino doit impérativement contenir cette fonction . // Elle ne sera exécuter une seule fois au démarrage du microcontroleur // Elle sert à configurer globalement les entrées sorties // etc… ( void setup ) { paj7620Init(); } void loop() { uint8_t data = 0; // lecture Bank_0_Reg_0x43/0x44 pour le resultat du geste paj7620ReadReg(0x43, 1, &data); // Lorsque les différents gestes sont détectés,les différents data // data seront données par paj7620ReadReg (0x43, 1, et données). if (data == GES_UP_FLAG) // lorsque le geste est détecté le registre sera = GES_UP_FLAG digitalWrite(4, HIGH); // Met un niveau logique haut a la pin 4 la LED s'allume if (data == GES_DOWN_FLAG) // Lorsque le geste est détecté le registre sera = GES_DOWN_FLAG digitalWrite(4, LOW); // Met un niveau logique bas a la pin 4 la LED s’éteint } |
Traduction du document : http://www.seeedstudio.com/wiki/Grove_-_Gesture_v1.0
Table de définition des différents gestes |
||||
Geste | Register Data | Adresse registre |
Si oui | Si non |
En haut « Up » | data==GES_UP_FLAG | 0x43 | Geste détecté | Geste non détecté |
Vers le bas « Down » | data==GES_DOWN_FLAG | 0x43 | Geste détecté | Geste non détecté |
Vers la gauche « Left » | data==GES_LEFT_FLAG | 0x43 | Geste détecté | Geste non détecté |
Vers la droite « Right » | data==GES_RIGHT_FLAG | 0x43 | Geste détecté | Geste non détecté |
Vers l’avant « Forward » | data==GES_FORWARD_FLAG | 0x43 | Geste détecté | Geste non détecté |
Vers l’arriere « Backward » | data==GES_BACKWARD_FLAG | 0x43 | Geste détecté | Geste non détecté |
Dans le sens horaire »Clockwise » | data==GES_CLOCKWISE_FLAG | 0x43 | Geste détecté | Geste non détecté |
Dans le sens anti-horaire « Count Clockwise » | data==GES_COUNT_CLOCKWISE_FLAG | 0x43 | Geste détecté | Geste non détecté |
« Wave » | data==GES_WAVE_FLAG | 0x43 | Geste détecté | Geste non détecté |
Mise à jour le 20/06/2019
***
Vous avez sur cette page les principaux paramètres entre autre, la vitesse ,la température , la qualité d’impression ainsi que le poids de la matière et le temps pour réaliser votre pièce .L’ensemble de ces paramètres est applicable pour l’imprimante Replicator 2 (il suffira d’adapter ces paramètres pour un autre type d’imprimante 3D ) .
Pour ses impressions nous avons utilisé du fil PLA 1.75 de chez Verbatim. Voir La liste pour les imprimantes compatibles . Voici le lien -> Verbatim imprimante
Récapitulatif des pièces à imprimer:
- Pièce 001 : Socle (quantité 1)
- Pièce 002 : Rotule (quantité 1)
- Pièce 003 : Articulation rotule (quantité 1)
- Pièce 004 : Axe (quantité 1)
- Pièce 005 : Paume (quantité 1)
- Pièce 006 : Bras cassé mâle (quantité 1)
- Pièce 007 : Bras cassé femelle (quantité 1)
- Pièce 008-01 : Corps de vérin partie basse (quantité 2)
- Pièce 008-02 : Corps de vérin partie haute (quantité 2)
- Pièce 008-03 : Coupole de vérin (quantité 2)
- Pièce 008-04 : Pion de Paume (quantité 2)
- Pièce 008-05 : Tige vérin (quantité 2)
- Pièce 015 : Annulaire droit (quantité 1)
- Pièce 016 : Auriculaire droit (quantité 1)
- Pièce 017 : Index droit (quantité 1)
- Pièce 018 : Majeur droit (quantité 1)
- Pièce 019 : Pouce droit (quantité 1)
Recapitulatif |
|||
Référence de la pièce | Temps d’impression | Poids en Gramme | Poids en lb |
Socle pièce 001 | 4h34mm | 65.71g | 0.145lb |
Rotule pièce 002 | 0h30mm | 7.07g | 0.016lb |
Articulation rotule pièce 003 |
5h30mm | 85.68g | 0.189lb |
Axe pièce 004 | 3h01mm | 44.31g | 0.098lb |
Paume pièce 005 | 2h05mm | 29.08g | 0.064lb |
Bras cassé mâle pièce 006 | 2h43mm | 47.16g | 0.104lb |
Bras cassé femelle pièce 007 | 1h51mm | 32.27g | 0.071lb |
Corps de vérin partie basse pièce 008-01 | 1h17mm | 17.39g | 0.038lb |
Corps de vérin partie haute pièce 008-02 | 1h37mm | 22.35g | 0.049lb |
Coupole de vérin pièce 008-03 | 0h14 | 3.20g | 0.007lb |
Pion de paume pièce 008-04 | 0h7mm | 1.17g | 0.003lb |
Tige vérin pièce 008-05 | 0h21mm | 1.93g | 0.004lb |
Annulaire droit pièce 015 | 0h46mm | 9.81g | 0.022lb |
Auriculaire droit pièce 016 | 0h43mm | 8.00g | 0.019lb |
Index droit pièce 017 | 0h50mm | 11.01g | 0.024lb |
Majeur droit pièce 018 | 0h55mm | 12.21g | 0.027lb |
Pouce droit pièce 019 | 0h43mm | 9.09g | 0.020lb |
Ensemble des fichiers à télécharger |
SOCLE PIÈCE 001 |
|
. Information sur Replicator 2
Fichier à télécharger pour impression : Socle pièces 001 |
.
ROTULE PIÈCE 002 |
|
Information sur Replicator 2 – Temps de réalisation : 0h30mm – Matière : 7.07g PLA noir – Définition : Haute – Température : 216°C |
Fichier à telecharger :
Terminator : Pièce 002 rotule RedOhm
.
ARTICULATION ROTULE PIÈCE 003 |
|
Information sur Replicator 2 – Temps de réalisation : 5h30mm – Matière : 85.68g PLA noir – Définition : Haute – Température : 216°C |
Fichier à telecharger :
.
AXE PIÈCE 004 |
|
Information sur Replicator 2 – Temps de réalisation : 5h01mm – Matière : 44.31g PLA noir – Définition : Haute – Température : 216°C |
Fichier à telecharger :
Terminator : Piéce 004 axe RedOhm
.
PAUME PIÈCE 005 |
|
Information sur Replicator 2 – Temps de réalisation : 2h05mm – Matière : 29.08g PLA noir – Définition : Haute – Température : 216°C |
Fichier à telecharger :
Terminator : Piéce 005 paume RedOhm
.
BRAS CASSE MÂLE PIÈCE 006 |
|
Information sur Replicator 2 – Temps de réalisation : 2h43mm – Matière : 47.16g PLA noir – Définition : Haute – Température : 216°C |
Fichier à telecharger :
.
BRAS CASSE FEMELLE PIÈCE 007 |
|
Information sur Replicator 2 – Temps de réalisation : 1h51mm – Matière : 32.27g PLA noir – Définition : Haute – Température : 216°C |
|
ANNULAIRE DROIT PIÈCE 015 |
|
Information sur Replicator 2 – Temps de réalisation : 0h46mm – Matière : 9.81g PLA noir – Définition : Haute – Température : 216°C |
|
AURICULAIRE DROIT PIÈCE 016 |
|
Information sur Replicator 2 – Temps de réalisation : 0h43mm – Matière : 8.00g PLA noir – Définition : Haute – Température : 216°C |
|
INDEX DROIT PIÈCE 017 |
|
Information sur Replicator 2 – Temps de réalisation : 0h50mm – Matière : 11.01g PLA noir – Définition : Haute – Température : 216°C |
|
Type Terminator : Piéce 017 index droit -RedOhm- 1 fichier·s 399.80 KB
|
MAJEUR DROIT PIÈCE 18 |
|
Information sur Replicator 2 – Temps de réalisation : 0h55mm – Matière : 12.12g PLA noir – Définition : Haute – Température : 216°C |
|
Type Terminator : Piéce 018 majeur droit 1 fichier·s 395.64 KB
|
POUCE DROIT PIÈCE 19 |
|
Information sur Replicator 2 – Temps de réalisation : 0h43mm – Matière : 9.09g PLA noir – Définition : Haute – Température : 216°C |
|
***
Mise à jour le 26/07/2015
Nous avons voulu reproduire le bras du plus mythique des robots le T800 pour plusieurs raisons,nous avons vu que la main correspondait à nos besoins et surtout correspond a un bon sujet d’étude sur le principe de fonctionnement d’un avant-bras comme de la main d’ailleurs .
***
Module ChipKIT WF 32 Cartes mères utilisé par RedOhm
Mise à jour le 25/07/2015
Le module chipKIT WIF32™ est une plate-forme de prototypage microcontrôlée « open-source » compatible avec le brochage et les applications développées pour les Arduino Ce modèle est achitecturé autour d’un micro-contrôleur Microchip 32 bits PIC32MX695F512 associé à un module WLAN WiFi™ « 24WG0MA » et à un connecteur pour carte mémoire microSD .
Le chipKIT WIF32™ se programme directement via son port USB ). Le chipKIT Uno32™ est compatible avec le code source des applications développées pour les arduino™ ainsi qu’avec les platines Shield pour Arduino™ fonctionnant en 3,3 V.
La présence du module Wlan WiFi™ intégré au module « ChipKIT WF32 » vous permettra de réaliser par exemple un serveur web accessible via votre BOX Internet à distance sans fil. Une page Web dynamique pourra ainsi afficher l’état des différentes entrées de la platine ou vous permettre de piloter des sorties.
Ou trouver le matériel en France : Lextronic
Caractéristiques de la platine:
– Vitesse d’horloge: 80 MHz
– Mémoire Flash: 512 K
– Mémoire RAM: 128 K
– Module WLAN WiFi™ « 24WG0MA »
– Nombres d’entrée/sorties: 43
– 2 UART (avec mode IrDA)
– Compatible avec les programmes développés pour Arduino™
– Compatible avec les platines Shield en 3,3 V pour Arduino
– Programmable également sous MPLAB
***
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
/* ******************************************************** * * * * * RedOhm * * Herve Mazelin * ******************************************************** */ // Pour inclure la librairie Servo dans un programme // on ajoutera au début du programme la ligne suivante : #include <Servo.h> Servo servo2; // déclaration d'une variable de type Servo2 Servo servo3; // déclaration d'une variable de type Servo3 int v1; int v2; // variable pour les compteurs enfin de jouer sur la vitesse du servomoteur int i; void setup() { // ouvre le port série et fixe le debit de communication à 9600 bauds Serial.begin(9600); // Attache un objet de type Servo à une broche servo2.attach(2); // attache la variable Servo à la broche 2 servo3.attach(3); // attache la variable Servo à la broche 3 delay(10000); // -------------------- INITIALISATION PHASE 1 ----------------------------- // parametre du servomoteur v2 // fourchette comprise entre 30 et 150 Serial.println ("----------- PHASE 1 -----------"); Serial.println (""); Serial.println ("Initialisation du servomoteur 2 en position 30"); delay (1000); // Forçage de la valeur v1 a 30 utilisation de l'opérateurs arithmétiques = // syntaxe v1 = 30 v1=30; servo2.write(v1); // tempo pour attendre le positionnement du servo delay(5); Serial.print("position du servomoteur 2 -> "); Serial.println(v1); Serial.println("Position acquise"); Serial.println (""); delay (10000); // -------------------- PHASE 2 ----------------------------- // parametre du servomoteur v2 // fourchette comprise entre 30 et 150 Serial.println ("----------- PHASE 2 -----------"); Serial.println (""); Serial.println ("Initialisation du servomoteur 2 en position 150"); delay (1000); // Forçage de la valeur v1 a 30 utilisation de l'opérateurs arithmétiques = // syntaxe v1 = 150 // Cette boucle est exécutée i fois .Dans la boucle ci-dessous // 120 passages for (int i=0; i <= 120; i++) { servo2.write(v1+i); // tempo pour attendre le positionnement du servo delay(1); Serial.print("position du servomoteur 2 -> "); Serial.println(v1+i); } Serial.println("Position acquise"); Serial.println (""); delay (10000); // -------------------- PHASE 3 ----------------------------- // parametre du servomoteur v2 // fourchette comprise entre 30 et 150 Serial.println ("----------- PHASE 3 -----------"); Serial.println (""); Serial.println ("Retour a la position 30 du servomoteur 2 "); delay (5000); v1=150; // Cette boucle est exécutée i fois .Dans la boucle ci-dessous // 120 passages for (int i=0; i <= 120; i++) { servo2.write(v1-i); // tempo pour attendre le positionnement du servo delay(1); Serial.print("position du servomoteur 2 -> "); Serial.println(v1-i); } Serial.println("Position acquise"); Serial.println (""); delay (10000); // -------------------- PHASE 4 ----------------------------- // parametre du servomoteur v3 // fourchette comprise entre 120 et 179 Serial.println ("----------- PHASE 4 -----------"); Serial.println (""); Serial.println ("Initialisation a 120 du servomoteur 3"); delay (5000); // Forçage de la valeur v1 a 30 utilisation de l'opérateurs arithmétiques = // syntaxe v2 = 120 v2=120; servo3.write(v2); // tempo pour attendre le positionnement du servo delay(5); Serial.print("position du servomoteur 3 -> "); Serial.println(v2); } void loop() { } |
***
Ce module de connexion Grove permet d’accéder aux 4 broches du connecteurs Grove sur un bornier à vis pour le raccordement de capteurs ou d’actionneurs divers sur le Grove Base Shield.
***
Mise à jour le 06/06/2015
Ce module infrarouge compatible Grove utilise un capteur RFR359F pour détecter une distance prédéfinie et changer d’état. Le réglage de la distance de référence est facilité par un potentiomètre de réglage et une led.