基于Arduino做的“鱿鱼游戏”BOSS面具,支持动作检测

这是一个结合了3D打印、舵机、PIR传感器和DFPlayer MP3模块的DIY项目,旨在制作一个带有动画眼睛的"鱿鱼游戏"老板面具。当检测到动作时,面具的眼睛会移动并播放声音,非常适合万圣节使用。
在这里插入图片描述

这个项目是一个很好的起点,特别适合那些想控制眼球运动和播放特定音频文件的小伙伴们。通过协调PIR传感器检测到的运动、舵机的移动和DFPlayer的音频播放,你可以实现一个非常优秀的动画效果。

步骤1:3D打印部件

眼睛及面具本身都是使用标准3D打印机和PLA打印出来的。打印质量为中等,如果你想要更好的外观,可以打磨然后平滑地涂上颜料。

3D打印组件包括:

  • 面具(面部)
  • 两个眼球
  • 两个眼睑
  • 舵机支架(用于固定所有5个舵机)
  • 万向节(用于实现眼睛的平滑运动)
  • 支撑面具内部的两根杆
  • 用于盖住电子元件和便于安装在墙壁上的背板

你可以选择使用不同颜色的眼球,甚至在打印后手绘。万向节对眼睛的平滑运动至关重要,使其能够模拟真实的动作。

3D打印文件可以文末下载。

步骤2:组装眼睛

现在我们有了3D打印的部件,是时候开始组装眼睛了。我们将使用五个MG90S舵机来控制眼睑和眼球的运动。以下是需要的材料:

组件:
  • 5个MG90S舵机

  • 铁丝(我们使用几个回形针来连接杆)

  • 钳子和剪线钳
组装过程:

校准舵机:确保所有舵机初始位置为90度。这对于确保动作的正确校准非常关键。

安装舵机:将每个舵机放入3D打印的舵机支架中。两个舵机控制眼睛的左右运动,两个控制上下运动,一个用于眼睑。

连接眼球:使用回形针线将舵机与眼球连接,形成连杆结构。这会将舵机的旋转传递给眼球运动。添加万向节确保眼球运动平滑。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

连接眼睑:最后一个舵机将控制眼睑,使你的面具能够眨眼或闭眼。使用相同的方法将眼睑连接到舵机上。

眼睛的运动依靠伺服电机在两个轴上(上下和左右)进行操控。每只眼睛的运动由两个伺服电机控制,而眼睑的开合则由一个伺服电机控制。

步骤3:测试眼睛

在我们继续项目的其他部分之前,先来测试一下眼睛确保一切正常。

以下是测试的简单电路设置:

  • 将舵机连接到面包板。
  • 上传一个简单的舵机控制代码,使眼球向各个方向移动,并眨眼。

使用Arduino IDE上传代码,并观察运动。可以根据需要调整角度和延迟时间。

舵机连接

我们的设置第一部分涉及将五个舵机连接到Arduino Nano。这些舵机将控制以下运动:

  • 舵机1:左眼的水平运动
  • 舵机2:左眼的垂直运动
  • 舵机3:控制眼睑
  • 舵机4:右眼的垂直运动
  • 舵机5:右眼的水平运动

以下是IO引脚分配:

  • 舵机1:数字2
  • 舵机2:数字3
  • 舵机3:数字5
  • 舵机4:数字6
  • 舵机5:数字9

确保你的舵机有合适的外部电源供电,因为Arduino板载的5V供电不足以为多个舵机供电。

代码说明

舵机控制代码使用Servo库来管理每个舵机的运动。它定义了左右移动以及眼睑上下移动的具体角度。设置部分初始化了每个舵机,设定初始位置,并包含一个循环,以便在定义的角度之间平滑过渡。眼球的运动是根据代码中设定的条件触发,确保眼睛按照预期动作。

代码可以在文末下载。

步骤4:设计PCB

设计一块PCB来整合所有组件,包括DFPlayer、PIR传感器、舵机、扬声器和Arduino Nano。目的是创建一个更稳定的电路和原型。

组件包括:

  • Arduino Nano(主控制器)
  • DFPlayer MP3模块(用于声音)
  • PIR传感器(运动检测)
  • 5个舵机输入
  • 扬声器用于音频输出

作者选择了PCBWay进行电路板制作。Gerber文件和电路原理图可以在这一链接中找到:[PCBWay项目链接](https://www.pcbway.com/project/shareproject/The_Face_maker101_c4124445.html “PCBWay项目链接”)。如果你没有焊接经验,也可以使用PCBWay的组装PCB服务。

组件清单包括用于电源需求的电容、用于电机数字输入的电阻、用于传感器和扬声器的接线端,以及DFPlayer和Arduino Nano用的公母针座。

  • 电阻和电容(用于功率调节)
  • 接线端(用于传感器和扬声器连接)
  • 公/母针座(用于DFPlayer、Nano和电机)

之后把所有的组件焊接到位。

步骤5:”面具“的主代码

集成PIR传感器和DFPlayer

一切都安装好,接下来需要将主代码上传到Arduino Nano中。这段代码整合了PIR传感器、舵机和DFPlayer MP3模块。原理很简单:当PIR传感器检测到运动时,舵机会移动以打开眼睑并移动眼球,同时DFPlayer播放声音。

代码的关键组成部分包括:

  • PIR传感器检测到运动时触发。
  • DFPlayer播放存储在SD卡上的声音文件。
  • 舵机控制眼球和眼睑的运动。
DFPlayer Mini和扬声器设置

DFPlayer Mini是一款简单、低成本的MP3播放器,可以播放存储在microSD卡上的音频文件。在这个项目中,它将在PIR传感器检测到运动时播放声音文件。

  • 将DFPlayer的RX引脚连接到Arduino Nano的数字11,将TX引脚连接到数字10。
  • 将扬声器连接到DFPlayer的SPK+和SPK-引脚用于声音输出。
PIR运动传感器连接
  • PIR传感器将检测运动并触发舵机运动和音频播放。
  • 将PIR传感器的输出引脚连接到Arduino Nano的数字7。

使用9V外部电源为电路供电,确保稳定性能。布线和编码完成后,就可以测试你的项目了。

  • 将代码上传到Arduino Nano。
  • 确保PIR传感器放置在易于检测运动的地方。
  • 当PIR传感器检测到运动时,控制眼睑的舵机应打开,DFPlayer应播放预加载的声音文件。
  • 然后,舵机将以协调的顺序移动眼球。
代码解释

主代码使用DFPlayer库来控制音频播放,同时与PIR传感器的输出进行协调。当检测到运动时,代码触发舵机移动眼睛并同时开始音频文件播放。这种同步增强了效果,使眼睛显得更加逼真。代码有效处理各种情况,确保眼球运动和声音播放之间的无缝过渡。

注意:附带文件“1.mp3”包含了项目中使用的声音“I see you(我看见你了)”。只需将音频文件上传到SD卡(SD卡格式必须为FAT32)。

文件和代码文末下载。

步骤6:最终组装

现在我们可以把所有组件组合到面具中了。

请按以下步骤操作:

  • 插入支撑杆:将两个支撑杆连接到面具背面。
  • 安装舵机支架:使用热熔胶固定舵机支架(附有舵机和眼球)到杆上。
  • 安装PIR传感器:在面具的正面钻一个6mm的小孔,来放置PIR传感器。它是一个迷你PIR传感器,所以可以完美地适配孔位。

  • 放置扬声器:将扬声器放置在面具内,确保其不露于视线。
  • 连接PCB:固定PCB在面具内部,并完成所有必要的连接。

  • 封闭面具:一旦所有连接完毕并到位,使用背板将电子设备封闭起来。

最后,使用双面胶或其他方法将面具安装在墙上。使用9V电源为面具供电,一切便准备就绪。

你可以根据个人喜好自定义此面具,比如添加不同的声音或更复杂的眼球动作。

如果你想让你的面具更加吸引人,还可以添加LED灯,在检测到运动时亮起来,增强视觉效果。

首发于DF创客社区 相关文件可移步下载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/892632.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

又一支付机构“经营异常”——易极付

近日,支付行业再次传出风波,重庆易极付科技有限公司(简称“易极付”)因“失联”问题被重庆两江新区市场监督管理局列入了经营异常名录。据天眼查平台显示,这一决定是基于“通过登记的住所或者经营场所无法联系”到该公…

【CSS in Depth 2 精译_050】7.3 CSS 响应式设计中的流式布局原则(Fluid layout)

当前内容所在位置(可进入专栏查看其他译好的章节内容) 【第七章 响应式设计】(概述) 7.1 移动端优先设计原则(上篇) 7.1.1 创建移动端菜单(下篇)7.1.2 给视口添加 meta 标签&#xf…

Linux Debian12基于ImageMagick图像处理工具编写shell脚本用于常见图片png、jpg、jpeg、tiff格式批量转webp格式

在Linux系统中,使用ImageMagick可以图片格式转换,其中最常用的是通过命令行工具进行。 ImageMagick是一个非常强大的图像处理工具集,它包含了许多用于图像转换的命令。 一、安装ImageMagick(如果尚未安装)&#xff1…

Python | Leetcode Python题解之第486题预测赢家

题目: 题解: class Solution:def PredictTheWinner(self, nums: List[int]) -> bool:length len(nums)dp [0] * lengthfor i, num in enumerate(nums):dp[i] numfor i in range(length - 2, -1, -1):for j in range(i 1, length):dp[j] max(num…

力扣21~30题

21题(简单): 分析: 按要求照做就好了,这种链表基本操作适合用c写,python用起来真的很奇怪 python代码: # Definition for singly-linked list. # class ListNode: # def __init__(self, v…

leetcode30:串联所有单词的字串

给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如,如果 words ["ab","cd","ef"], 那么 "abcdef…

NetSarang Xshell v8.0060 Linux终端管理器个人免费版

NetSarang Xshell 官方个人完全免费中文版,Xshell特别版,Xshell 个人完全免费,Xshell 是一款最好用的Linux远程连接工具,免费SSH客户端、主机服务器远程管理客户端 。Xshell,轻松管理远程服务器,会话管理器…

《人工智能:CSDN 平台上的璀璨之星》

一、CSDN 上的 AI 热门话题 GPT-3 作为 CSDN 上的热门话题,其应用极为广泛。GPT-3 是 OpenAI 开发的一种基于 Transformer 架构的大规模预训练语言模型,拥有惊人的 1750 亿个参数。它具有多任务处理能力,能够执行多种自然语言处理任务&#x…

基于KNN算法的指纹定位系统(MATLAB,平面,四个锚点)

文章目录 指纹定位指纹定位技术简介基本原理位置估算公式1. 最近邻居算法(KNN)2. 加权最近邻居算法(W-KNN)3. 最小二乘法(LS) 最终位置 P P P通过求解下面的方程获得:应用场景优缺点优点缺点 总…

Python 工具库每日推荐 【pyspider 】

文章目录 引言网络爬虫的重要性今日推荐:pyspider 网络爬虫框架主要功能:使用场景:安装与配置快速上手示例代码代码解释实际应用案例案例:爬取新闻网站的文章案例分析高级特性使用代理处理 JavaScript 渲染的页面扩展阅读与资源优缺点分析优点:缺点:总结【 已更新完 Type…

《深度学习》OpenCV 风格迁移、DNN模块 案例解析及实现

目录 一、风格迁移 1、什么是风格迁移 2、步骤 1)训练 2)迁移 二、DNN模块 1、什么是DNN模块 2、DNN模块特点 1)轻量 2)外部依赖性低 3)方便 4)集成 5)通用性 3、流程图 4、图像…

玛泽的故事中英文Big Muzzy台词本电子版PDF

《Big Muzzy》玛泽的故事,中英文都有,是BBC制作的,专为英语初学者设计的外语课程。它是教学动画里最有趣的一部!风靡全球,上百个国家引进,深受小朋友的喜爱。《Big Muzzy》用动画的形式,讲述了M…

第九课:Python学习之函数基础

函数基础 目标 函数的快速体验函数的基本使用函数的参数函数的返回值函数的嵌套调用在模块中定义函数 01. 函数的快速体验 1.1 快速体验 所谓函数,就是把 具有独立功能的代码块 组织为一个小模块,在需要的时候 调用函数的使用包含两个步骤&#xff…

FFmpeg的简单使用【Windows】--- 指定视频的时长

目录 功能描述 效果展示 代码实现 前端代码 后端代码 routers 》users.js routers 》 index.js app.js 功能描述 此案例是在上一个案例【FFmpeg的简单使用【Windows】--- 视频混剪添加背景音乐-CSDN博客】的基础上的进一步完善,可以先去看上一个案例然后再…

C++核心编程和桌面应用开发 第十一天(静态转换 动态转换 常量转换 重新解释转换)

目录 1.静态类型转换 1.1语法 1.2用法 2.动态类型转换 2.1语法 2.2用法 3.常量类型转换 3.1语法 3.2用法 4.重新解释转换 4.1语法 1.静态类型转换 1.1语法 static_cast<目标转换类型>(待转换变量) 1.2用法 可用于基本数据类型之间的转换。比如int和char之…

2.线段求交

1.线段求交 给定由平面上 n 条闭线段构成的一个集合 S&#xff0c;报告出 S 中各线段之间的所有交点。 我们所希望得到的算法&#xff0c;其运行时间不仅取决于输入中线段的数目&#xff0c;还取决于&#xff08;实际的&#xff09;交点数目。这样的算法&#xff0c;被称为“输…

网络爬虫-数美滑块验证码

仅供研究学习使用。 今天带来的是数美滑块验证码的逆向 目标站 --> 传送门 解决此类验证码 首先要解决滑动距离的判定 无论是使用selenium还是使用协议的方式来破解 都绕不开滑动距离的识别 滑动距离可以参考以前我博客上的方式&#xff0c;或者找一找开源的一些算法&am…

Collection 单列集合 List Set

集合概念 集合是一种特殊类 ,这些类可以存储任意类对象,并且长度可变, 这些集合类都位于java.util中,使用的话必须导包 按照存储结构可以分为两大类 单列集合 Collection 双列集合 Map 两种 区别如下 Collection 单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两…

Android:记录一个打包发布版的release包以后闪退的问题

个人感觉其实release闪退的问题挺难排查的&#xff0c;因为release包运行起来as捕获不到相应的应用程序进程&#xff0c;从而不易查看到日志&#xff0c;也是我玩得不溜&#xff0c;大家有不同的方法可以评论区探讨&#xff0c;我也定期回复一些评论一起讨论。以下是我遇到的情…

Scrapy | 使用Scrapy进行数据建模和请求

scrapy数据建模与请求 数据建模1.1 为什么建模1.2 如何建模1.3如何使用模板类1.4 开发流程总结 目标&#xff1a; 1.应用在scrapy项目中进行建模 2.应用构造Request对象&#xff0c;并发送请求 3.应用利用meta参数在不同的解析函数中传递数据 数据建模 | 通常在做项目的过程中…