Files
bras-robot/compte-rendu-3.md
2026-01-28 20:34:16 +01:00

149 lines
4.0 KiB
Markdown

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