基于Arduino的自弹尤克里里机器人

news/2024/9/30 12:39:55 标签: 机器人, 硬件工程, pcb工艺

需要项目源码资料的可以私信我

基于Arduino的自弹尤克里里机器人

  • 一、简介
  • 二、材料清单
  • 三、工具
  • 四、实现过程
    • 步骤1:实物图
    • 步骤2:3D打印部件
    • 步骤3:组装上半部分
    • 步骤4:组装下半部分
    • 步骤5:安装导轨
    • 步骤6:设置皮带和滑轮系统
    • 步骤7:电子设备的连接
    • 步骤8:编写和上传代码
    • 步骤9:校准
    • 步骤10:组装电磁阀
    • 步骤11:最终测试
    • 步骤12:添加曲目
  • 结语

一、简介

在这个充满创意的项目中,我们将一起探索如何使用Arduino Uno微控制器来构建一个可以自主演奏音乐的自弹尤克里里机器人。这是一个结合了3D打印、电子工程和编程的有趣项目,适合所有级别的爱好者。以下是实物图片。

在这里插入图片描述
在这里插入图片描述

二、材料清单

在开始之前,我们需要准备以下材料:

  1. 尤克里里:任何便宜的型号都可以,但最好是女高音型号。
  2. Arduino Uno:作为我们机器人的大脑。
  3. L293D电机驱动盾:用于驱动电磁阀。
  4. 12V电磁阀:8个,用于弹奏琴弦。
  5. Nema 17步进电机:用于控制滑动机构。
  6. TMC2208步进电机驱动器:为步进电机提供精确控制。
  7. 迷你面包板:用于临时连接电子元件。
  8. 150mm MGN9B直线导轨:带滑块,用于构建滑动机构。
  9. GT2 6mm同步带:用于连接步进电机和滑块。
  10. 滑轮和惰轮:用于同步带的张紧。
  11. 微型伺服电机:用于控制拨片。
  12. 12V 10A电源:为整个系统供电。
  13. 22 AWG实心导线:用于连接电子元件。
  14. M3螺母和螺栓:用于组装3D打印部件。
    Arduino控制核心如下图:
    在这里插入图片描述

三、工具

  • 3D打印机:用于打印机器人的外壳和部分机械部件。
  • 烙铁:用于焊接电子元件。
  • 螺丝刀:用于组装机械部件。
  • 万用表:用于测量电压和电流。

四、实现过程

步骤1:实物图

在这里插入图片描述

步骤2:3D打印部件

首先,使用3D打印机打印所需的部件,包括外壳、滑轨支架、步进电机支架、伺服电机支架等。如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由于部件过多这里就不展示了,需要3D模型的可以私信我,发你文件。
在这里插入图片描述
然后即可进入打印模型了
在这里插入图片描述
在这里插入图片描述

步骤3:组装上半部分

将直线导轨支架安装在上半部分,并使用M3螺丝固定。然后安装步进电机支架和步进电机。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
重复这个过程来将步进电机支架安装在侧面,然后将步进电机滑入到位,面向上方。

步骤4:组装下半部分

对于下半部分,首先安装惰轮支架,然后是另一个导轨支架。接下来,将Arduino和电机盾安装到侧面。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最终完成的效果应该与上面显示的图片类似。

步骤5:安装导轨

现在可以将直线导轨放置在尤克里里的主体上。一旦它处于正确的位置,就应该完全紧固导轨支架。

接下来,取下3D打印的伺服电机支架,并将其连接到同步带上。伺服电机支架有特定的槽位用于固定皮带,因此它应该可以轻松地推入到位。

再次检查滑动块是否能够自由地沿直线导轨上下移动,然后将其拧紧到伺服电机支架上,确保其方向正确。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

步骤6:设置皮带和滑轮系统

将惰轮滑轮放置在其支架上,然后将皮带环绕在惰轮滑轮和步进电机轴上。将皮带剪成合适的长度,并将其插入步进电机支架上的另一个槽中。这将允许步进电机上下移动滑动块。
在这里插入图片描述
在这里插入图片描述

步骤7:电子设备的连接

将迷你面包板放置在步进电机旁边,并将TMC2208步进电机驱动器插入中心。现在,为了限制供应给步进电机的电流,我们需要在驱动模块上设置电压参考。

  1. 首先,将驱动器连接到12V电源。
  2. 打开电源并将万用表设置为测量直流电压。
  3. 将黑色探头放在GND引脚上,红色探头放在微小的电位器上。
  4. 在监视万用表读数的同时调整电位器以设置参考电压(VREF)。

⚠️我最终将参考电压设置在大约1V。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

步骤8:编写和上传代码

对于连接到Arduino的其余部分:

  1. M1A、M1B、M2A、M2B连接到步进电机。
  2. VIO焊接到电机盾上的5V输出。
  3. DIR、STEP和ENABLE连接到你选择的Arduino数字引脚,并用于向驱动器发送信号。
  4. 应该连接地线。

在这里插入图片描述
在这里插入图片描述

步骤9:校准

现在是时候让机械装置动起来了!

通过将滑块移至尽可能靠近步进电机的位置来重置滑块的位置。然后上传使用Accelstepper库的stepper.ino代码,以测试其运动(你可能需要调整限制以确保滑块具有完整的运动范围)。

完成之后,将微型伺服电机连接到Arduino并运行servo.ino代码以验证其操作。
以上代码私信我可以获取!!!!
在这里插入图片描述
在这里插入图片描述

尤克里里测试视频

步骤10:组装电磁阀

安装电磁阀并连接到Arduino,确保它们可以正确地弹奏琴弦。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

步骤11:最终测试

根据你的设置,让一切正常工作可能需要几次尝试。我在本节中包含了一些脚本,这些脚本可以帮助此过程。

每次测试过程要记住:

  1. 插入12V电源。
  2. 连接Arduino。
  3. 将滑块移动到起始位置。

将所有部件组装在一起,并进行最终测试。见下视频:
在这里插入图片描述
在这里插入图片描述

步骤12:添加曲目

在代码中添加不同的曲目,让机器人演奏。
在这里插入图片描述
见视频:

尤克里里完成

结语

通过这个项目,你不仅能够学习到如何使用Arduino和3D打印技术,还能够体验到创造一个能够演奏音乐的机器人的乐趣。这是一个极好的实践项目,可以激发你的创造力和技术能力。

希望你喜欢这个项目,并在构建过程中找到乐趣!如果你有任何问题或需要帮助,欢迎在评论区交流。

作者:Svan.


注意:本博文为不得在未经本人同意进行转载或者二次创作,违者必究!!!


http://www.niftyadmin.cn/n/5685120.html

相关文章

使用session来实现验证码发送功能

一、什么是session? Session由服务器创建,并为每一次会话分配一个Session对象。同一个浏览器发起的多次请求,同属于一次会话(Session)。首次使用到Session时,服务器会自动创建Session,并创建Co…

DC00023基于jsp+MySQL新生报到管理系统

1、项目功能演示 DC00023基于jsp新生报到管理系统java webMySQL新生管理系统 2、项目功能描述 基于jspMySQL新生报到管理系统项目分为学生、辅导员、财务处和系统管理员四个角色。 2.1 学生功能 1、系统登录 2、校园新闻、报到流程、学校简介、在线留言、校园风光、入校须知…

Xiaojie雷达之路---静态杂波滤除

Hello,大家好,我是Xiaojie,欢迎大家能够和Xiaojie来一起学习毫米波雷达知识,本篇文章主要是介绍一下雷达信号处理中的静态杂波滤除,一起来看看吧!!! 前言 在雷达信号处理中有时候不需要考虑静止的物体,会将相对于雷达静止的物体进行滤除,静止目标被滤除后,会降低雷达…

【2024.9.29练习】R 格式

题目描述 题目分析 带小数点的高精度乘法。小数点在计算时忽略,只需在最终打印字符串的时候在合适位置四舍五入即可。对于,可理解为对d乘2总共n次。因此使用“单精度高精度”类型的算法足矣。 我的代码 一开始代码有错误,我只想到了对小数点…

Mac pnpm安装

安装pnpm的时候一定要把npm更新到最新版 不然pnpm下载不成功。 (更新npm):sudo npm install -g npm (安装pnpm:) sudo npm install -g pnpm 检验安装是否成功:pnpm --version 项目内安装依赖:pnpm install / 运行项目&…

用C++游戏开发

引言 C被广泛使用于游戏开发中,这是因为它提供了高性能、灵活的内存管理,以及与硬件的低级别交互能力。在这篇文章中,我们将介绍C游戏开发的基础知识,包括游戏引擎的选择、基本的编程概念以及一些实践建议。 C在游戏开发中的优势…

二值图像的面积求取的两种方法及MATLAB实现

一、引言 面积在数字图像处理中经常用到,在MATLAB中,计算二值图像的面积通常可以通过两种主要方法实现:遍历法和直接利用bwarea函数。下面将分别介绍这两种方法的原理和相应的MATLAB代码示例。 二、遍历法计算二值图像面积的原理和MATLAB代码…

PostgreSQL是否有等待事件

PostgreSQL是否有等待事件 PostgreSQL 提供了等待事件(Wait Events)的机制,用于监控数据库运行过程中因资源争用而导致的等待情况。这些等待事件可以帮助数据库管理员识别导致性能问题的瓶颈,例如锁冲突、I/O 等待等。 什么是等…