你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

带有Viper和ST Nucleo的机器人手臂

[复制链接]
木木&点点 发布时间:2019-4-1 17:03
本帖最后由 点点&木木 于 2019-4-12 09:43 编辑
3 z0 D; x) l/ S) N- P, `
8 q6 S3 U7 K, S8 u0 n0 R& y
项目介绍:本项目的机械手臂使用Viper创建,这是一个带有Nucleo板的简单机械臂,两个伺服电机和一个便宜的激光指示器。你可以通过它实现书写等功能。
# C# \$ g5 p0 ^: S8 A7 k

) b( N% Q) `4 _( N
1.jpg
# f$ ~! L' v5 ~! t# K; E

9 C  z1 [4 U+ l, z; W9 C/ Z5 V
硬件组件
伺服电机9g    ×        2      
3D打印激光结构    ×        1      
激光笔   ×  1      
STM32 Nucleo ST Nucleo f401RE    ×         1      
跳线(通用)            ×       1      
面包板(通用)        ×       1      
) d* [& n% [$ v4 x/ [: m) ?" O
手动工具和制造机器
Viper IDE

2 b* t& }( ]5 Q" w9 A6 F7 [4 M
  E( E& L0 [, f/ @) w  D+ F
介绍
使用Viper创建,这是一个带有Nucleo板的简单机械臂,两个伺服电机和一个便宜的激光指示器。您可以通过写入表示度数的坐标来移动手臂。对于与Nucleo板的通信,您可以按照简单的步骤,实现使用串行端口和简单的Viper协议。
9 z& e* _$ w, Y/ X6 _
2.jpg
  X/ R" P& j- q- m8 d% y% Y
  h  G" q) X" o
Viper是一个Python开发套件,支持快速设计和与传感器和云服务的集成(http://www.viperize.it)。VIPER运行在所有32位ARM Pro和DIY微控制器上,如Arduino,UDOO,Particle,ST Nucleo。Viper从一场伟大的Kickstarter活动开始。
! `8 C" ]% K; Y" r0 m1 kViper使用VIPER IDE,这是一个基于多平台和浏览器的开发环境,具有云同步和板卡管理功能。
4 |3 B* G5 K0 f& S( e$ A: f$ s6 A- i8 D3 ?  R& l

( E% W# \  p! b# f/ B- U1 Y0 \1 \. e7 p! P) y
3.jpg

( T5 `2 N; W0 F2 i2 o* \, i5 N, }/ q+ m

0 |: f+ K' a: W! O" d
从Viper下载页面下载Windows,Linux和iOS安装程序(安全消息可以在Windows上显示,请接受并继续,此问题将很快得到解决)。安装并通过Viper快捷方式启动通过专用按钮创建Viper用户。点击提供的链接,可以查看您的电子邮件并验证您的新帐户。验证帐户后,Viper IDE会自动将您登录到Viper云中(第一次创建用户帐户时,可能需要重新启动IDE。如果您有登录问题,请重新启动IDE),并且要使电路板可用,你需要Viperize它。Viperization是在板上安装Viper VM的过程。单击Viper IDE顶部栏上的专用按钮即可启动该过程。有些板则需要上传模式,

7 m4 p1 I) P: e) x% L
不要忘记安装主板USB驱动程序,从以下位置下载:
Arduino DUE驱动程序页面(http://www.arduino.cc/en/Guide/ArduinoDue
ST Nucleo F401RE驱动程序和固件页面(http://developer.mbed.org/teams/ST/wiki/Nucleo-Firmware
UDOO板串口驱动下载页面。(http://www.udoo.org/other-resources/

: J, p0 d/ I  w) z  l
: n9 N. w5 ]0 @7 g, g% C
4.jpg
# c8 A& a3 L# s8 h0 E$ c' C7 J+ R

9 k) u5 S+ _1 s& H, u; ?* S1 n1 p' e/ @/ f
Viper与专用开发环境集成。Viper IDE是一个基于浏览器的开发环境,可在Windows,Linux和Mac上运行。电路板管理工具栏通过ViperIDE电路板管理栏可以管理所有连接的设备。通过上传Viper虚拟机,可以使用Boards Management Bar来对连接的板进行Viperizing。此外,如果没有连接虚拟板,所有Viper支持的板也会被列出,允许在不需要物理连接的情况下对特定平台进行代码验证。

% B5 ?3 Y5 L7 F' }9 y
启动时,Viper IDE启动一个Python本地服务器,控制连接的外围设备,显示Boards管理栏上的所有可用板。
安装Viper App并注册Viper社区后,即可安装伺服电机库。库是预先准备好的代码,用于简化确定硬件或特定功能的使用。您可以通过包菜单添加库。
您可以搜索“伺服电机库”,然后将此库添加到ViperIDE。在项目中使用此库之后,可以通过简单的行命令。
& a6 E, H5 Q/ k$ n# Q
5 d' W5 J6 L2 g
来自伺服导入伺服
5.jpg

9 ]  I3 K* f5 i  c! Q' r$ t. u  T/ s' J+ o# e' r
7 a8 [1 c+ b2 A+ }2 \" g: c
打开Viper IDE。完成此操作后,插入ST Nucleo。在顶部菜单中选择ST Nucleo F401RE。现在你进行电路板的“viperization”。为此,您可以按Viper按钮。viper按钮靠近屏蔽菜单,符号为Viper V。换句话说,您在电路板上上传了一个新固件。好的,现在你有一个Viper板!要创建新项目,可以单击“项目”菜单上的+(新项目)。然后复制代码文件的代码,并将其粘贴到窗口中。Viper IDE自动保存项目。如果您是Viper社区的成员,那么您的项目是否有云空间?您可以随时通过世界上其他计算机的Viper云重新加载此项目。单击“验证”按钮验证项目。
1 [( I5 p- q: R8 l/ v+ v. L

1 U0 E; P( [; p; U# i8 ^+ \" Q
Viper IDE还包括一个系统消息面板,在该面板上报告所有编译器,调试器和服务器消息。此外,右侧栏中还集成了串行终端控制台。Viper IDE支持并行打开多个串行终端控制台。可以从打开的选项卡之间切换的同一面板监视各种项目输出。打开串行终端控制台时,它会自动配置为打开分配给所选板的串行端口(USB OS分配的串行端口)。默认情况下,IDE控制台波特率设置为不同的值,具体取决于所选的板。在字节码上显示电路板的波特率。必须将此控制台视为与Viper默认打印功能一起使用的集成调试输出。要读取配置了不同波特率的板串行端口,应使用Putty等外部串行端口。任何其他外部端口终端都可能与Viper串行终端控制台发生冲突。用户应在启动任何其他外部终端之前关闭串行终端控制台。

: j- i1 y5 G# j( C5 s' T9 I; E
6.jpg
8 O$ Y& u( O, S! B

' r: k/ @' S7 k  c3 R
: e8 V& Z2 w1 Q5 P" r  B8 R
7.jpg

5 @4 L8 @8 q7 k  \! y5 Q# z2 A# U4 X6 t
. i3 i* _6 y* Z1 W2 t8 p- G
电线的连接非常简单。您只需将Nucleo的电源插入伺服电机,然后连接伺服电机X和Y的数据端口。用于伺服电机控制的Nucleo端口为D10和D11。在图片上你可以看到一个小手工制作的盾牌,它可以增加Nucleo的电源端口。您也可以使用面包板。请参阅图片进行安装。

' p3 N$ ]0 g% m0 X% E% [
8.jpg
$ s  M& {; z: e; }' v& V, ~

, R# N; E; |) ~# X2 j1 ]0 c
请注意此程序。您可以刻录伺服电机或Nucleo屏蔽。
好的,现在你连接了所有电线!
对于机械臂的结构,您可以打印组合两个伺服电机的塑料件。
从Thingiverse下载结构:http://www.thingiverse.com/thing: 1274295或由3Dhubs打印。
3DHubs是一个3D打印机社区。选择区域的3D打印并打印件。印刷成本非常便宜,因为这件作品非常简单。
对于印刷材料,我更喜欢abs或colorfabb xt丝用于这项工作。
9 z& p! T  c: ]4 j3 H
通过Viper应用程序,您可以使用串行通信连接到电路板。打开“串行”窗口后,可以将坐标放在命令行上,然后单击“输入”将数字发送到板上。以度为单位表示坐标。从0到180度。如果使用0,则电机转到0位置,然后关闭伺服电路。

. d! U* w8 g2 C& L9 R, B  s
等待启动信号:所有伺服ON
然后写出从0到180的度数。
现在你有一个机器人手臂!在这种情况下,手臂移动激光笔。您可以将此手臂用于您可以想象的各种操作。插入计算机上的板,打开串口,并放入X轴和Y轴的坐标内。选择0到180度之间的X和Y坐标。
手臂将激光移动到您选择的坐标上。请记住,如果使用0,则电机转到0位置,然后关闭伺服电路。
4 C. P, p, p- j1 P$ w0 v
: d1 G, u) a4 B! Z5 v& E2 L0 U$ F5 X
原理图
将伺服数据连接到电路板
9.JPG
2 G# w( M$ Z. f1 U- e6 H& g4 c
% i8 ]# ~% C/ `, y

/ F# h- N' X( e" T9 J6 x* G* ?8 t) v2 [8 r& N
连接伺服电机电源引脚
我使用了一个简单的电源屏蔽来增加Nucleo的电源引脚,但你可以使用面包板。
10.JPG

9 h) e, I& l( Q0 j' [7 U0 h2 B

; @2 b$ D! {" z  b0 O( e; u& t: e1 J
代码

8 K+ ~5 u* T' ~/ J$ h9 h
##########################################################################
# Robotic Servo Arm
#
# Created: 17-12.2015 by 0lab Team -www.0lab.it
# Authors: G. Gentile
#
# Materials:
# 1 x ST Nucleo shield
# 2 x 9g servo motor
# 1 x 3D printed interfacing (Thingiverselink: http://)
##########################################################################
import streams
from servo import servo
s = streams.serial()
MyServoX=servo.Servo(D11.PWM,400,2400,500,3000)
MyServoY=servo.Servo(D10.PWM,400,2400,500,3000)
sleep(200)
print("All servo ON")
MyServoX.attach()
MyServoY.attach()
sleep(2000)
MyServoX.moveToDegree(0)
sleep(300)
MyServoX.moveToDegree(180)
sleep(300)
MyServoY.moveToDegree(0)
sleep(300)
MyServoY.moveToDegree(180)
while True:
    print("insert X:")
    line = s.readline()
    if line == 0:
       MyServoX.detach()
       print("Servo X OFF")
   MyServoX.moveToDegree (int(line))
    print("You wrote:", line)
    print("The servoX is", MyServoX.getCurrentDegree())
    print("insert Y:")
   line = s.readline()
    if line == 0:
       MyServoY.detach()
       print("Servo Y OFF")
   MyServoY.moveToDegree (int(line))
    print("You wrote:", line)
    print("The servoY is", MyServoX.getCurrentDegree())

. R  {; Q, A# Z! A  A/ S" G$ T8 |9 l: A) x4 U& d% X* d, l4 X
9 X6 T2 I& i, C; @0 n+ e
收藏 1 评论1 发布时间:2019-4-1 17:03

举报

1个回答
Kevin_G 回答时间:2019-4-2 16:01:15
点赞
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版