Robot2bras Codes¶
- Auteur
Gilles Lecorsier
- Blog
- Association
BricoLab Groslay(95)
- Entity
- Page principale
- Création
05/2023
- Maj
03/08/2024
Présentation¶
Bras Manipulateur Original (base de départ de l’étude)
Voir wiki Vorobotics Bras manipulateur 4
et le projet Arduino - Control Arm Robot via Web 5 sur Hackster.io.
L’appli web (PHPoc) parle en angles moteur, l’appli Android bras robot parle en switch je tourne/j’arrête
Idée : possibilité d’adaptation pour rendre le code Arduino de départ compatible d’un pilotage avec des angles.
Adaptation du code Arduino¶
Notre décision : on repart du code Arduino (bras_manip_rot_control_bluetooth.ino) et on essaie de le rendre compatible de la version web PHPoc.
Répertoire de travail¶
robot_2bras\robot2brascodes\bras_manip_etincel_control_bluetooth\bras_manip_etincel_control_bluetooth.ino
Etape 1 : regroupement des fonctions du mode APP-INVENTOR¶
On sépare les fichiers cpp en web d’une part et app inventor d’autre part
Dépendances¶
Utilisation de la bibliothèque SoftwareSerial version 1.0
Utilisation de la bibliothèque Wire version
Utilisation de la bibliothèque Adafruit_PWM_Servo_Driver_Library version 2.4.1
Test du mode APP_INVENTOR¶
Le serveur doit être déconnecté (Bluetooth) de l’Arduino.
Etape 2 : mode WEB¶
Le serveur doit être connecté (Bluetooth) à l’Arduino. Passage en mode WEB, rappel nous avons ajouté @ en début de trame web voir dans serveur
La fonction appInventorInterface retourne WEB quand elle reçoit un 64d (code ASCII de @)
Mise enplace du Bluetooth¶
la carte du premier projet est remplacée par la carte Arduino 2560 7
Connexion bluetooth entre le serveur et le bras en liaison softserial (FTDI) cf. Bibliothèque Serial 8 et entre le smatphone et le bras.
Les différents modules Bluetooth utilisés
puce BC417 puce datasheet<fichiersJoints/CSR-BC417-datasheet.pdf> 9
BC352<fichiersJoints/BC352239A_CambridgeSiliconRadio.pdf> 10
Commande AT
L’objet de ce paragraphe est la configuration du module Bluetooth pour Arduino. Utilisation du code « robot2brascodesbtCommandeAt »
Mode AT des modules bluetooth HC05 11
Passage du module en Commande AT : débrancher la broche d’alimentation 3.3V du module bluetooth HC05. Rebrancher la broche 3.3V Tout en appuyant sur le bouton poussoir du module. La LED clignote alors lentement 2s. Les commandes AT répondent en 38400, suivant les modules les commandes doivent être en majuscule ou en minuscule
Le module que j’utilise attend des commandes en majuscule et accepte AT+ NAME
Envoie des commande AT:
+VERSION:2.0-20100601
+NAME:HC-05
+UART:9600,0,0
+ROLE:0
+PSWD:1234
Changement de nom: AT+NAME=Bras2023_HC05
+NAME:Bras2023_HC05
+CMOD:1
+BIND:98d3:31:300e42
+ADDR:98d3:32:31115a
A la mise sous tension la broche KEY ou EN doit être connectée au 3.3V (la LED clignote alors lentement 2s)
Conclusion¶
Même si la LED BT clignote rapidement, il n’est pas nécessaire de refaire l’appairage.
Il n’est pas nécessaire de se désappairer d’un appareil pour s’appairer avec un autre.
Quand tout va bien, appairé et connecté, la led émet 2 clignotements bref toutes les 2s environs.
Mode debug¶
Afin de faire les calage des valeurs des servo, nous nous sommes aperçus que nous avions besoin de commander finement le bras indépendamment de l’interface web.
Nous avons ajouté le mode debug qu’on peut activer en envoyant * sur la liaison serveur.
Ajout des fichier SerialCommand.h et .cpp
Vitesse de debug descendue à 9600 !
Commandes:
<h> display this list in alphabetic order
<A> Passage en mode AppInventor
<D> Passage en mode debug
<E> display code status
<F> Find I2C device I2C scan
<M m a> Move motor m at angle a
<W> passage en mode WEB
Définition des différentes valeurs des servomoteurs du bras¶
servo1 : Plateforme
valeur Initiale : 0
Valeur Maxi : 180
valeur Mini : 0
sens : 1
valeur de rangement : 60
servo2 : Epaule
valeur Initiale : 90
Valeur Maxi : 100
valeur Mini : 0
sens : 1
valeur de rangement : 15
servo3 : Coude
valeur Initiale : 80
Valeur Maxi : 180
valeur Mini : 0
sens : 1
valeur de rangement : 120
Mise au point web vs physique¶
La trame reçue en position de repos depuis l’interface WEB:
@90,90,180,180,90,17
Nous on a:
90,80,90,85,0,10
Passage à la classe Joint¶
Evaluation de l’impact¶
Fonction initialisation() propre au mode AppInventor
Avertissement
Quid du passage du mode AppInventor au mode WEB
(les varaibles du mode web ne sont alors pas initialisées avec la position courante des moteurs)
L’impact se limite au fichier fonctionsRobotWeb.cpp
Transformer 7 tableaux en 1 tableau de 7 instances de la classe Joint:
dest_angles[]
cur_angles[]
direction[]
angle_offset[]
angle_max[]
angle_min[]
angleSteps[]
Servo vitesse¶
Un exemple from Banggood: DSSERVO DS3225 25KG 180 degrés Engrenage en métal à couple élevé et étanche Servo numérique pour avions RC, robots et voitures - 1 pc 12
Vitesse de fonctionnement (5.0V): 0.15 sec/60 degrés
sous 4.8VV 0.18s/60° soit pour 180° : 540ms 3ms/°
Communication Bluetooth et smartphone Android¶
Lorsqu’un bouton est enfoncé, un octet est envoyé à l’Arduino pour commander la rotation du servomoteur en question (h=horaire, ah=anti horaire).
Lorsqu’un bouton est relâché, un octet est envoyé à l’Arduino pour arrêter la rotation du servomoteur en question.
Les commandes sont des octets (4 octets par moteur):
6 et 60 coude rotation ah
7 et 70 coude rotation h
8 et 80 epaule rotation ah
9 et 90 épaule rotation h
12 et 120 plateforme rotation ah
13 et 130 plateforme rotation h
Plus les 5 commandes spéciales :
100 init
200 rangement
201 enregistrer la position
202 lancement (des positions enregistrées)
250 appui Ampoule
251 relâche Ampoule
//---Controle Servo plateforme (no 1) 130°---
valRotationPlate1 = POS_INIT_PLATEF;
pulseLen = map(valRotationPlate1, 0, 180, SERVOMIN, SERVOMAX);
pwm.setPWM(SERVOPLATEFORME, 0, pulseLen);
delay(DELAY);
L’appli web (PHPoc) parle en angles moteur, l’appli Android bras robot parle en switch je tourne/j’arrête
Weblinks¶
- 1
- 2
- 3
https://bitbucket.org/robotdeuxbras/robot2brasdocsources/src/master/
- 4
https://www.vorobotics.com/wiki/index.php?title=Bras_manipulateur
- 5
https://www.hackster.io/phpoc_man/arduino-control-arm-robot-via-web-379ef3
- 6
https://robotdeuxbras.bitbucket.io/Robot2bras_codes.html#mise-enplace-du-bluetooth
- 7
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.MaterielMega2560
- 8
- 9
https://cdn.sparkfun.com/datasheets/Wireless/Bluetooth/CSR-BC417-datasheet.pdf
- 10
- 11
https://telefab.fr/documentation/lelectronique-au-telefab/mode-at-des-modules-bluetooth-hc05/
- 12