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

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

[复制链接]
点点&木木 发布时间:2019-4-1 17:03
本帖最后由 点点&木木 于 2019-4-12 09:43 编辑

项目介绍:本项目的机械手臂使用Viper创建,这是一个带有Nucleo板的简单机械臂,两个伺服电机和一个便宜的激光指示器。你可以通过它实现书写等功能。


1.jpg


硬件组件
伺服电机9g    ×        2      
3D打印激光结构    ×        1      
激光笔   ×  1      
STM32 Nucleo ST Nucleo f401RE    ×         1      
跳线(通用)            ×       1      
面包板(通用)        ×       1      

手动工具和制造机器
Viper IDE


介绍
使用Viper创建,这是一个带有Nucleo板的简单机械臂,两个伺服电机和一个便宜的激光指示器。您可以通过写入表示度数的坐标来移动手臂。对于与Nucleo板的通信,您可以按照简单的步骤,实现使用串行端口和简单的Viper协议。

2.jpg


Viper是一个Python开发套件,支持快速设计和与传感器和云服务的集成(http://www.viperize.it)。VIPER运行在所有32位ARM Pro和DIY微控制器上,如Arduino,UDOO,Particle,ST Nucleo。Viper从一场伟大的Kickstarter活动开始。
Viper使用VIPER IDE,这是一个基于多平台和浏览器的开发环境,具有云同步和板卡管理功能。



3.jpg



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

不要忘记安装主板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/


4.jpg



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

启动时,Viper IDE启动一个Python本地服务器,控制连接的外围设备,显示Boards管理栏上的所有可用板。
安装Viper App并注册Viper社区后,即可安装伺服电机库。库是预先准备好的代码,用于简化确定硬件或特定功能的使用。您可以通过包菜单添加库。
您可以搜索“伺服电机库”,然后将此库添加到ViperIDE。在项目中使用此库之后,可以通过简单的行命令。


来自伺服导入伺服
5.jpg



打开Viper IDE。完成此操作后,插入ST Nucleo。在顶部菜单中选择ST Nucleo F401RE。现在你进行电路板的“viperization”。为此,您可以按Viper按钮。viper按钮靠近屏蔽菜单,符号为Viper V。换句话说,您在电路板上上传了一个新固件。好的,现在你有一个Viper板!要创建新项目,可以单击“项目”菜单上的+(新项目)。然后复制代码文件的代码,并将其粘贴到窗口中。Viper IDE自动保存项目。如果您是Viper社区的成员,那么您的项目是否有云空间?您可以随时通过世界上其他计算机的Viper云重新加载此项目。单击“验证”按钮验证项目。


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

6.jpg



7.jpg



电线的连接非常简单。您只需将Nucleo的电源插入伺服电机,然后连接伺服电机X和Y的数据端口。用于伺服电机控制的Nucleo端口为D10和D11。在图片上你可以看到一个小手工制作的盾牌,它可以增加Nucleo的电源端口。您也可以使用面包板。请参阅图片进行安装。

8.jpg


请注意此程序。您可以刻录伺服电机或Nucleo屏蔽。
好的,现在你连接了所有电线!
对于机械臂的结构,您可以打印组合两个伺服电机的塑料件。
从Thingiverse下载结构:http://www.thingiverse.com/thing: 1274295或由3Dhubs打印。
3DHubs是一个3D打印机社区。选择区域的3D打印并打印件。印刷成本非常便宜,因为这件作品非常简单。
对于印刷材料,我更喜欢abs或colorfabb xt丝用于这项工作。

通过Viper应用程序,您可以使用串行通信连接到电路板。打开“串行”窗口后,可以将坐标放在命令行上,然后单击“输入”将数字发送到板上。以度为单位表示坐标。从0到180度。如果使用0,则电机转到0位置,然后关闭伺服电路。

等待启动信号:所有伺服ON
然后写出从0到180的度数。
现在你有一个机器人手臂!在这种情况下,手臂移动激光笔。您可以将此手臂用于您可以想象的各种操作。插入计算机上的板,打开串口,并放入X轴和Y轴的坐标内。选择0到180度之间的X和Y坐标。
手臂将激光移动到您选择的坐标上。请记住,如果使用0,则电机转到0位置,然后关闭伺服电路。


原理图
将伺服数据连接到电路板
9.JPG




连接伺服电机电源引脚
我使用了一个简单的电源屏蔽来增加Nucleo的电源引脚,但你可以使用面包板。
10.JPG




代码

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



收藏 1 评论1 发布时间:2019-4-1 17:03

举报

1个回答
Kevin201707 回答时间:2019-4-2 16:01:15
点赞

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

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