Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Opneembare kartonnen robotarm

Componenten en benodigdheden

Arduino UNO
× 1
Servo van normaal formaat
× 3
SG90 Micro-servomotor
× 1
Broodplank (algemeen)
× 1
5V-voeding
× 1

Benodigde gereedschappen en machines

Hot lijmpistool (algemeen)

Apps en online services

Arduino IDE
Python

Over dit project

Over

Dit is een eenvoudige robotarm die posities kan opnemen en afspelen. Het is gemaakt van gemakkelijk verkrijgbare materialen, zoals karton en hete lijm, waardoor het gemakkelijk te bouwen is.

Je bestuurt de arm met een grafische interface op de computer die data naar de Arduino stuurt die de arm aanstuurt. Er zijn schuifregelaars om elke servo te besturen en knoppen om posities op te nemen en af ​​te spelen wat je hebt opgenomen. U kunt ook eerdere opnamen opslaan en openen.

Hier is een demo van het in actie:

Instructies

1.) Download en print de kartonnen uitsnijdingssjabloon in het gedeelte Aangepaste onderdelen en behuizingen onder aan de pagina. Gebruik dat sjabloon om de kartonnen delen uit te snijden.

2.) Monteer het armgedeelte met behulp van de video hierboven als richtlijn. De opbouw begint om 0:22 van de video.

3.) Bouw de schakeling op basis van het schema onderaan de pagina.

4.) Download de "Robot Arm Arduino-code" onderaan de pagina in de codesectie op het tweede tabblad. Upload dat dan naar de arm.

5.) Download de code "Python User Interface" onderaan de pagina in het gedeelte Code op het eerste tabblad. Open het dan. U moet Python hebben geïnstalleerd om het uit te voeren, dat u hier kunt downloaden:https://www.python.org/

Je hebt ook de PySerial-bibliotheek voor Python nodig (https://pypi.org/project/pyserial/). Je kunt het installeren door "pip install pyserial" uit te voeren.

6.) Sluit de arm aan, voer de code "Python User Interface" uit en typ de COM-poort van de Arduino in (dit is te vinden in Apparaatbeheer op Windows). Nu ben je klaar om het te gebruiken!

Als het niet werkt, probeer dan de time.sleep(0.15) op regel 20 van de Python-code te verhogen naar iets hoger, zoals 0.2 of 0.3

Code

  • Python-gebruikersinterface
  • Arduino-code robotarm
Python-gebruikersinterfacePython
from tkinter import *from tkinter import filedialogimport serialimport timeport_opened=Falsedef set_port():global port_opened,arduino com_port=port_input.get() arduino=serial.Serial(com_port,9600) port_opened=True print ("COM-poort ingesteld op :"+com_port)def send_positions(position):message ="{0:0=3d}".format(position[0])+"{0:0=3d}".format(position[1])+" {0:0=3d}".format(positie[2])+"{0:0=3d}".format(positie[3])+"{0:0=3d}".format(positie[4 ])+"\n" arduino.write(str.encode(bericht)) 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("opgeslagen posities:"+str(saved_posities))def play_positions():voor positie in opgeslagen_posities:print("playing:"+str(positie)) send_positions(positie); time.sleep(1)def clear_all_positions():global saved_positions saved_positions =[] print("wist alle posities")def clear_last_positions():global saved_positions verwijderd =saved_positions.pop() print("removed:"+str(removed) ) print("saved positions:"+str(saved_positions))def open_file():global saved_positions bestandsnaam =filedialog.askopenbestandsnaam(initialdir ="/", title ="Selecteer een bestand", bestandstypes =(("Tekstbestanden", "*.txt*"),("alle bestanden","*.*"))) file =open(bestandsnaam, "r") data=file.read() saved_positions=eval(data) file.close() print("opened:"+bestandsnaam)def save_file():save_file =filedialog.asksaveasfile(mode='w', defaultextension=".txt") save_file.write(str(saved_positions)) save_file.close() print(" opgeslagen bestand")def instructies():print("1.) Stel de Arduino's COM-poort in en klik op Enter. Dit is te vinden in Apparaatbeheer in Windows") print("2.) Verplaats de servo's van de arm met behulp van de schuifregelaars") print("3.) Om een ​​positie vast te leggen, klik op Record Position") print("4.) Om de opgenomen . opnieuw af te spelen posities, klik op Posities opnieuw afspelen") print("\nOm op te slaan wat je hebt opgenomen, ga je naar Bestand> Bestand opslaan.") print("Om een ​​eerder opgeslagen bestand te openen, ga je naar Bestand> Bestand openen.")window =Tk()window.title("Robot Arm Controller 2")window.minsize(355,300)port_label=Label(window,text="Set Port:");port_label.place(x=10,y=10);port_input=Entry(window)port_input.place(x=10,y=35)port_button=Button(window, text="Enter", command=set_port)port_button.place(x=135,y=32)servo1_slider =Schaal(venster, from_=180, to=0)servo1_slider.place(x=0, y=100)servo1_label=Label(window,text="Servo 1")servo1_label.place(x=10, y=80)servo2_slider =Scale (venster , from_=180, to=0)servo2_slider.place(x=70, y=100)servo2_label=Label(window,text="Servo 2")servo2_label.place(x=80, y=80)servo3_slider =Scale( window, from_=180, to=0)servo3_slider.place(x=140, y=100)servo3_label=Label(window,text="Servo 3")servo3_label.place(x=150, y=80)servo4_slider =Schaal (venster, van_=180, naar=0)servo4_slider.place(x=210, y=100)servo4_label=Label( window,text="Servo 4")servo4_label.place(x=220, y=80)servo5_slider =Scale(window, from_=180, to=0)servo5_slider.place(x=280, y=100)servo5_label=Label (window,text="Servo 5")servo5_label.place(x=290, y=80)save_button=Button(window, text="Record Position", command=save_positions)save_button.place(x=10,y=220 )clear_button=Button(window, text="Wis laatste positie", command=clear_last_positions)clear_button.place(x=120,y=220)clear_button=Button(window, text="Wis alle posities", command=clear_all_positions)clear_button .place(x=120,y=255)play_button=Button(window, text="Replay Positions", command=play_positions, height=3)play_button.place(x=250,y=220)menubalk =Menu(venster) filemenu =Menu(menubalk, tearoff=0)filemenu.add_command(label="Bestand openen", command=open_file)filemenu.add_command(label="Bestand opslaan", command=save_file)menubar.add_cascade(label="Bestand", menu=bestandsmenu)editmenu =Menu(menubalk, tearoff=0)editmenu.add_command(label="Laatste positie wissen", command=clear_last_positions)editmenu.add _command(label="Wis alle posities", command=clear_all_positions)menubar.add_cascade(label="Bewerken", menu=editmenu)helpmenu =Menu(menubar, tearoff=0)helpmenu.add_command(label="Hoe te gebruiken (gedrukt in console)", command=instructions)menubar.add_cascade(label="Help", 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()])
Arduino-code robotarmArduino
#include Servo servo1;Servo servo2;Servo servo3;Servo servo4;Servo servo5;int servoPositions[5];void setup() { Serial.begin(9600); servo1.bevestigen (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(servoPosities[0]); servo2.write(servoPosities[1]); servo3.write(servoPosities[2]); servo4.write(servoPosities[3]); servo5.write(servoPosities[4]); vertraging(500);}

Aangepaste onderdelen en behuizingen

Schema's


Productieproces

  1. Arduino digitale dobbelstenen
  2. MeArm Robotarm - Uw robot - V1.0
  3. Iron Man
  4. Vind mij
  5. Arduino 3D-geprinte robotarm
  6. Arduino-luchtbevochtigerbediening
  7. MobBob:doe-het-zelf Arduino-robot bestuurd door Android-smartphone
  8. Arduino-gestuurde pianorobot:PiBot
  9. Littlearm 2C:bouw een 3D-geprinte Arduino-robotarm
  10. Arduino-joystick
  11. Stappenteller (Arduino 101)