亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

可记录纸板机械臂

组件和用品

Arduino UNO
× 1
普通伺服
× 3
SG90 微伺服电机
× 1
面包板(通用)
× 1
5V 电源
× 1

必要的工具和机器

热胶枪(通用)

应用和在线服务

Arduino IDE
Python

关于这个项目

关于

这是一个简单的机械臂,可以记录和回放位置。它由容易获得的材料制成,例如纸板和热胶,因此易于构建。

您可以使用计算机上的图形界面控制手臂,该界面将数据发送到控制手臂的 Arduino。有滑块来控制每个伺服器,还有按钮来记录位置和重放你记录的内容。您还可以保存和打开过去的录音。

这是它的实际演示:

说明

1.) 在页面底部的自定义部件和外壳部分下载并打印纸板剪切模板。使用该模板剪下纸板部分。

2.) 使用上面的视频作为指导组装手臂部件。构建从视频的 0:22 开始。

3.) 根据页面底部的原理图搭建电路。

4.) 在页面底部的第二个选项卡的代码部分下载“Robot Arm Arduino 代码”。然后将其上传到手臂。

5.) 在第一个选项卡的代码部分中下载页面底部的“Python 用户界面”代码。然后,打开它。您必须安装 Python 才能运行它,可以从这里下载:https://www.python.org/

您还需要 Python 的 PySerial 库 (https://pypi.org/project/pyserial/)。您可以通过运行“pip install pyserial”来安装它。

6.) 插入手臂,运行“Python 用户界面”代码,然后输入 Arduino 的 COM 端口(这可以在 Windows 的设备管理器中找到)。现在您可以使用它了!

如果它不起作用,请尝试将 Python 代码第 20 行的 time.sleep(0.15) 增加到更高的值,例如 0.2 或 0.3

代码

  • Python 用户界面
  • 机械臂 Arduino 代码
Python 用户界面Python
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 端口设置为:"+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()]);打印(“保存的位置:”+str(保存的位置))def play_positions():用于保存位置的位置:打印(“播放:”+str(位置))发送位置(位置); time.sleep(1)def clear_all_positions():global saved_positions saved_positions =[] print("清除所有位置")def clear_last_positions():global saved_positions removed =saved_positions.pop() print("removed:"+str(removed) ) print("保存的位置:"+str(saved_positions))def open_file():global saved_positions filename =filedialog.askopenfilename(initialdir ="/", title ="Select a File", filetypes =(("Text files", "*.txt*"),("所有文件","*.*"))) file =open(filename, "r") data=file.read() saved_positions=eval(data) file.close() print("打开:"+文件名)def save_file():save_file =filedialog.asksaveasfile(mode='w', defaultextension=".txt") save_file.write(str(saved_positions)) save_file.close() print("保存的文件")def 指令():打印("1.) 设置Arduino 的COM 端口并单击Enter。这可以在Windows 的设备管理器中找到") 打印("2.) 使用滑块移动手臂的伺服系统") print("3.) 要记录位置,请单击 Record Position") print("4.) 重播记录的位置位置,单击重放位置") print("\n要保存您录制的内容,请转到文件> 保存文件。") 打印("要打开以前保存的文件,请转到文件> 打开文件。")window =Tk()window.title("Robot Arm Controller 2")window.minsize(355,300)port_label=Lab​​el(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 =Scale(window, from_=180, to=0)servo1_slider.place(x=0, y=100)servo1_label=Lab​​el(window,text="Servo 1")servo1_label.place(x=10, y=80)servo2_slider =Scale(window , from_=180, to=0)servo2_slider.place(x=70, y=100)servo2_label=Lab​​el(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=Lab​​el(window,text="Servo 3")servo3_label.place(x=150, y=80)servo4_slider =Scale (window, from_=180, to=0)servo4_slider.place(x=210, y=100)servo4_label=Lab​​el( 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=Lab​​el (window,text="Servo 5")servo5_label.place(x=290, y=80)save_button=Button(window, text="记录位置", command=save_positions)save_button.place(x=10,y=220 )clear_button=Button(window, text="清除最后位置", command=clear_last_positions)clear_button.place(x=120,y=220)clear_button=Button(window, text="清除所有位置", 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)menubar =Menu(window) filemenu =Menu(menubar, tearoff=0)filemenu.add_command(label="打开文件", command=open_file)filemenu.add_command(label="保存文件", command=save_file)menubar.add_cascade(label="文件", menu=filemenu)editmenu =Menu(menubar,tearoff=0)editmenu.add_command(label="Clear last position", command=clear_last_positions)editmenu.add _command(label="清除所有位置", command=clear_all_positions)menubar.add_cascade(label="Edit", menu=editmenu)helpmenu =Menu(menubar, tearoff=0)helpmenu.add_command(label="如何使用(打印)在控制台中)", 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代码Arduino
#include 伺服伺服1;伺服伺服2;伺服伺服3;伺服伺服4;伺服伺服5;intservoPositions[5];void setup() { Serial.begin(9600);伺服1.附加(3);伺服2.附加(5);伺服3.附加(6);伺服4.附加(9);伺服5.attach(10);}void loop() { while(Serial.available()){ String input =Serial.readStringUntil('\n');伺服位置[0] =input.substring(0,3).toInt();伺服位置[1] =input.substring(3,6).toInt();伺服位置[2] =input.substring(6,9).toInt();伺服位置[3] =input.substring(9,12).toInt();伺服位置[4] =input.substring(12,15).toInt(); }servo1.write(servoPositions[0]);伺服2.写(伺服位置[1]);伺服3.写(伺服位置[2]);伺服4.写(伺服位置[3]);伺服5.写(伺服位置[4]);延迟(500);}

定制零件和外壳

示意图


制造工艺

  1. Arduino 数字骰子
  2. MeArm 机械臂 - 你的机器人 - V1.0
  3. 钢铁侠
  4. 找到我
  5. Arduino 3D 打印机械臂
  6. Arduino 加湿器控制
  7. MobBob:由 Android 智能手机控制的 DIY Arduino 机器人
  8. Arduino 控制的钢琴机器人:PiBot
  9. Littlearm 2C:构建 3D 打印的 Arduino 机械臂
  10. Arduino Joystick
  11. 计步器(Arduino 101)
  12. Arduino 混色器