# 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) ```