diff --git a/compte-rendu-3.md b/compte-rendu-3.md new file mode 100644 index 0000000..116192c --- /dev/null +++ b/compte-rendu-3.md @@ -0,0 +1,149 @@ +# compte rendu bras robot 3 +## modelisation 3D et plans + +``` +On a réalisé toutes les pièces du bras (y compris la base qui supporte le bras sur la base roulante) via la modélisation 3D sur fusion et onshape +``` +![plan-dessin](https://i.ibb.co/MyKgypjd/IMG-2059.jpg) + +### realisation de la structure globale du bras : +- base du bras robot +![base](https://i.ibb.co/8HGdrNh/image.png) +``` +dimension +D= 10cm +H= 1cm +``` + +- premier support de servo moteur +![support servo](https://i.ibb.co/8LSDkfd6/image2.png) +`Nous allons utiliser des inserts M3 avec des vis M3. Initialement, nous avions pensé à des inserts M2, mais le laboratoire n'en dispose pas. Nous utilisons également des vis M2 pour le pignon des servomoteurs.` +``` +dimension +L= 5cm +l= 2,5cm +H= 0,9cm +``` + +- bras 1 +![bras1](https://i.ibb.co/bjgJf4h9/image3.png) +``` +dimension +L= 16cm +l= 4cm +H= 1cm +``` + +### On a fait des recherches sur les sites suivants pour la conception du bras et de la pince. +- (https://cults3d.com/fr/mot-clefs/pince+robotique?srsltid=AfmBOooZES-gdmSo7IuyJx9b4YLv5vBiozO5lpjA8HrPHTfmVw3mWtIw) +- (https://www.autodesk.com/community/gallery?featured=true&page=1) + +### modification du cablage +![plan cablage](https://i.ibb.co/dsJwBXm0/image4.png) +`ajout d'un servo moteur de 360 degres pour la base du bras robot` + +### modification des dimentions des pieces +`on c'est rendu compte que les pieces ne s'emboite pas entre elle et n'avaient pas les bonnes dimentions` + +- base du bras robot +``` +nouvelle dimention +D= 5cm +H= 1cm +``` + +- support de servo moteur base +``` +nouvelle dimention +L= 5cm +l= 2cm +H= 1cm +et fixation a la base avec des vis M3 et des ecrouts +``` + +- bras 1 +``` +nouvelle dimention +L= 16cm +l= 4cm +H= 1cm +``` +### on n'a fais un code pour test le bras robot qui a pour but de tester le deploiment du bras a rapport a une distance max fixe (ps: idee de Erika) + +``` +from machine import Pin, PWM, UART +import time + +# UART liaison série +uart = UART(1, baudrate=9600, tx=7, rx=6) + +# Servos GPIO 4,5,6,7 +servo_base = PWM(Pin(4), freq=50) +servo_epaule = PWM(Pin(5), freq=50) +servo_coude = PWM(Pin(6), freq=50) +servo_pince = PWM(Pin(7), freq=50) + +MIN_US = 500 +MAX_US = 2500 +DISTANCE_MAX_CM = 15 + +def set_servo_angle(pwm, angle): + if angle < 0: angle = 0 + if angle > 180: angle = 180 + us = MIN_US + (MAX_US - MIN_US) * angle / 180 + duty = int(us / 20000 * 1023) + pwm.duty(duty) + +def position_prete_ramassage(): + """Position fixe : déployé à exactement 15cm max""" + set_servo_angle(servo_base, 90) # droit devant + set_servo_angle(servo_epaule, 75) # longueur bras = 15cm + set_servo_angle(servo_coude, 115) # pointe sol + set_servo_angle(servo_pince, 130) # grande ouverte + time.sleep(0.5) + uart.write("READY\n") # signal : "je suis en position" + +def ramasser_maintenant(): + """Pince seulement une fois en position""" + set_servo_angle(servo_pince, 40) # fermer + time.sleep(1) + set_servo_angle(servo_pince, 130) # rouvrir (lâcher) + time.sleep(0.5) + +def position_repos(): + set_servo_angle(servo_base, 90) + set_servo_angle(servo_epaule, 40) + set_servo_angle(servo_coude, 90) + set_servo_angle(servo_pince, 100) + time.sleep(0.5) + +# Démarrage +print("Bras : mode distance fixe 15cm") +buffer = b"" +position_repos() + +while True: + if uart.any(): + data = uart.read() + if data: + buffer += data + while b"\n" in buffer: + line, _, buffer = buffer.partition(b"\n") + cmd = line.decode().strip() + print("Reçu:", cmd) + + if cmd.startswith("DIST:"): + # Se déploie toujours à 15cm max, peu importe la distance + print("Déploiement position 15cm") + position_prete_ramassage() + + elif cmd == "PICK_NOW": + print("RAMASSAGE !") + ramasser_maintenant() + uart.write("DONE\n") + position_repos() + + time.sleep(0.05) +``` + + \ No newline at end of file