Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Construisez un bras robotique en carton programmable – DIY facile avec Arduino et servomoteurs

Composants et fournitures

Composant Quantité
Arduino UNO 1
Servomoteur standard 3
Micro-servomoteur SG90 1
Plaque d'essai (breadboard) 1
Alimentation 5V 1

Outils et machines nécessaires

Applications et services en ligne

À propos du projet

Ce bras robotique simple peut enregistrer et rejouer des positions. Il est construit avec des matériaux faciles à trouver, comme du carton et de la colle chaude, ce qui le rend très accessible à réaliser.

Vous contrôlez le bras via une interface graphique sur l'ordinateur qui envoie les données à l'Arduino pilotant le bras. Des curseurs permettent de contrôler chaque servomoteur, et des boutons servent à enregistrer des positions et à rejouer la séquence. Vous pouvez également sauvegarder et charger d'anciens enregistrements.

Instructions de montage

  1. Téléchargez et imprimez le gabarit de découpe en carton disponible dans la section « Pièces personnalisées et boîtiers » en bas de page. Utilisez ce gabarit pour découper les pièces en carton.
  2. Assemblez le bras en suivant la vidéo (le montage commence à 0:22).
  3. Réalisez le câblage selon le schéma électronique fourni en bas de page.
  4. Téléchargez le code Arduino (« Robot Arm Arduino Code ») dans la section Code (deuxième onglet) et téléversez-le sur la carte.
  5. Téléchargez l'interface Python (« Python User Interface ») dans la section Code (premier onglet). Vous devez avoir Python installé (téléchargeable sur python.org).
  6. Installez la bibliothèque PySerial : pip install pyserial.
  7. Branchez le bras, lancez le script Python et saisissez le port COM de l'Arduino (visible dans le Gestionnaire de périphériques sous Windows). C'est prêt !

Note : si ça ne fonctionne pas, essayez d'augmenter la valeur time.sleep(0.15) à la ligne 20 du code Python à 0.2 ou 0.3.

Code

Interface utilisateur Python

from tkinter import *
from tkinter import filedialog
import serial
import time

port_opened = False

def set_port():
    global port_opened, arduino
    com_port = port_input.get()
    arduino = serial.Serial(com_port, 9600)
    port_opened = True
    print("Port COM défini sur : " + com_port)

def send_positions(position):
    message = "{0:0=3d}".format(position[0]) + "{0:0=3d}".format(position[1]) + \
              "{0:0=3d}".format(position[2]) + "{0:0=3d}".format(position[3]) + \
              "{0:0=3d}".format(position[4]) + "\n"
    arduino.write(str.encode(message))
    print(message, end='')
    time.sleep(0.2)

saved_positions = []

def save_positions():
    saved_positions.append([servo1_slider.get(), servo2_slider.get(),
                            servo3_slider.get(), servo4_slider.get(), servo5_slider.get()])
    print("Positions enregistrées : " + str(saved_positions))

def play_positions():
    for position in saved_positions:
        print("Lecture : " + str(position))
        send_positions(position)
        time.sleep(1)

def clear_all_positions():
    global saved_positions
    saved_positions = []
    print("Toutes les positions effacées")

def clear_last_positions():
    global saved_positions
    removed = saved_positions.pop()
    print("Supprimé : " + str(removed))
    print("Positions enregistrées : " + str(saved_positions))

def open_file():
    global saved_positions
    filename = filedialog.askopenfilename(initialdir="/", title="Sélectionner un fichier",
                                          filetypes=(("Fichiers texte", "*.txt"), ("Tous les fichiers", "*.*")))
    file = open(filename, "r")
    data = file.read()
    saved_positions = eval(data)
    file.close()
    print("Ouvert : " + filename)

def save_file():
    save_file = filedialog.asksaveasfile(mode='w', defaultextension=".txt")
    save_file.write(str(saved_positions))
    save_file.close()
    print("Fichier sauvegardé")

def instructions():
    print("1. Définissez le port COM de l'Arduino et cliquez sur Entrée. Trouvable dans le Gestionnaire de périphériques sous Windows")
    print("2. Déplacez les servos du bras à l'aide des curseurs")
    print("3. Pour enregistrer une position, cliquez sur 'Enregistrer position'")
    print("4. Pour rejouer les positions enregistrées, cliquez sur 'Rejouer positions'")
    print("\nPour sauvegarder : Fichier > Sauvegarder fichier")
    print("Pour ouvrir un fichier : Fichier > Ouvrir fichier")

window = Tk()
window.title("Contrôleur Bras Robot 2")
window.minsize(355, 300)

port_label = Label(window, text="Définir le port :")
port_label.place(x=10, y=10)
port_input = Entry(window)
port_input.place(x=10, y=35)
port_button = Button(window, text="Entrée", command=set_port)
port_button.place(x=135, y=32)

# Curseurs pour 5 servos
servo1_slider = Scale(window, from_=180, to=0)
servo1_slider.place(x=0, y=100)
Label(window, text="Servo 1").place(x=10, y=80)

servo2_slider = Scale(window, from_=180, to=0)
servo2_slider.place(x=70, y=100)
Label(window, text="Servo 2").place(x=80, y=80)

servo3_slider = Scale(window, from_=180, to=0)
servo3_slider.place(x=140, y=100)
Label(window, text="Servo 3").place(x=150, y=80)

servo4_slider = Scale(window, from_=180, to=0)
servo4_slider.place(x=210, y=100)
Label(window, text="Servo 4").place(x=220, y=80)

servo5_slider = Scale(window, from_=180, to=0)
servo5_slider.place(x=280, y=100)
Label(window, text="Servo 5").place(x=290, y=80)

Button(window, text="Enregistrer position", command=save_positions).place(x=10, y=220)
Button(window, text="Effacer dernière position", command=clear_last_positions).place(x=120, y=220)
Button(window, text="Effacer toutes positions", command=clear_all_positions).place(x=120, y=255)
Button(window, text="Rejouer positions", command=play_positions, height=3).place(x=250, y=220)

# Menus
menubar = Menu(window)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Ouvrir fichier", command=open_file)
filemenu.add_command(label="Sauvegarder fichier", command=save_file)
menubar.add_cascade(label="Fichier", menu=filemenu)

editmenu = Menu(menubar, tearoff=0)
editmenu.add_command(label="Effacer dernière position", command=clear_last_positions)
editmenu.add_command(label="Effacer toutes positions", command=clear_all_positions)
menubar.add_cascade(label="Édition", menu=editmenu)

helpmenu = Menu(menubar, tearoff=0)
helpmenu.add_command(label="Mode d'emploi (affiché dans la console)", command=instructions)
menubar.add_cascade(label="Aide", menu=helpmenu)

window.config(menu=menubar)

while True:
    window.update()
    if port_opened:
        send_positions([servo1_slider.get(), servo2_slider.get(),
                        servo3_slider.get(), servo4_slider.get(), servo5_slider.get()])

Code Arduino pour le bras robotique

#include 

Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;

int servoPositions[5];

void setup() {
    Serial.begin(9600);
    servo1.attach(3);
    servo2.attach(5);
    servo3.attach(6);
    servo4.attach(9);
    servo5.attach(10);
}

void loop() {
    while (Serial.available()) {
        String input = Serial.readStringUntil('\n');
        servoPositions[0] = input.substring(0, 3).toInt();
        servoPositions[1] = input.substring(3, 6).toInt();
        servoPositions[2] = input.substring(6, 9).toInt();
        servoPositions[3] = input.substring(9, 12).toInt();
        servoPositions[4] = input.substring(12, 15).toInt();
    }
    servo1.write(servoPositions[0]);
    servo2.write(servoPositions[1]);
    servo3.write(servoPositions[2]);
    servo4.write(servoPositions[3]);
    servo5.write(servoPositions[4]);
    delay(500);
}

Schéma de câblage

Le schéma de câblage est disponible dans la section « Schémas » en bas de page.

Processus de fabrication

  1. Dé numérique Arduino sur écran LCD 16x2 – Générateur aléatoire à bouton poussoir
  2. Bras Robotique MeArm V1.0 – Construisez Votre Bras Robotisé Arduino et Raspberry Pi
  3. Construire un Iron Man animé avec Arduino : capteurs, sons et relais
  4. Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
  5. Construire un bras robotique 3D fonctionnel piloté par Arduino – Guide pas à pas
  6. Contrôleur d'humidificateur DIY avec Arduino et relais – Installation haute tension sécurisée
  7. MobBob : Construisez votre propre robot Arduino, contrôlé via smartphone Android
  8. PiBot : Robot pianiste Arduino pour performance musicale de précision
  9. LittleArm 2C : Bras Robot 3D Imprimé Arduino pour Éducation STEM