当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]我的歌唱机器人是一种交互式音乐表演系统,由手持控制器、四个无线机器人节点和一台笔记本电脑图形用户界面组成。用户可通过4步音序器开启或关闭每个机器人,调节节拍(BPM),并使用控制器上的旋转编码器改变各机器人的音高,来创作节奏模式。在每一个节拍时,控制器会通过ESP-NOW无线将当前音序状态广播给所有机器人。每个机器人独立检查其步骤是否处于激活状态,若处于激活状态,则以预设频率驱动扬声器/蜂鸣器,并同步闪烁LED灯。最终形成了一种具有实体感的多智能体乐器。

我的歌唱机器人是一种交互式音乐表演系统,由手持控制器、四个无线机器人节点和一台笔记本电脑图形用户界面组成。用户可通过4步音序器开启或关闭每个机器人,调节节拍(BPM),并使用控制器上的旋转编码器改变各机器人的音高,来创作节奏模式。在每一个节拍时,控制器会通过ESP-NOW无线将当前音序状态广播给所有机器人。每个机器人独立检查其步骤是否处于激活状态,若处于激活状态,则以预设频率驱动扬声器/蜂鸣器,并同步闪烁LED灯。最终形成了一种具有实体感的多智能体乐器。

灵感与相关工作

我们的最初设想是使用Kilobot硬件,这些是极简的集群机器人,能够通过本地通信并借助振动模式移动,从而创建一个互动的音乐或LED系统。后来我们将其调整为手工制作的机器人,因为我们希望亲身体验构建物理系统的乐趣。我们也尝试过制作机器人乐器或合成器,但最终选择了一种手持控制器,使用户可以在多个机器人上创作节奏,每个机器人都充当一个独立的乐器。

图形用户界面的设计类似于FL Studio或Ableton等音乐创作软件,用户可以在每个乐器上选择特定的节拍。音高和BPM旋钮编码了与这些工具中类似的信息。我们的方法将这种行为适配到物理控制器和机器人表演系统上。

里程碑1

这个里程碑由我们提出的三个项目组成。我们共有三种选择:我的歌唱机器人(当前设计)、一个千人机器人项目,即让千人机器人组成用户自定义的队形,以及一个握手测试机器人。在听取课堂反馈后,我们最终确定了当前的方案。随后,我们设计了系统的初步草图,包括4个连接到扬声器的ESP-32模块机器人,以及1个手持控制器,用于控制机器人的节拍、音高和节奏;此外还包括机器人和控制器的3D打印外壳。

里程碑2

为这一里程碑,我们草拟了3D建模机器人外观的方案,并规划了LED灯、扬声器和ESP-32模块的连接位置。此外,我们还开发了一个图形用户界面,能够在一个机器人上播放不同节拍(bpm)和音高的4个节拍。最后,我们设计了控制如何同时与多个机器人通信的方案,并分别设计了机器人和控制器的电路。

系统概览

该系统由两个主要部分组成:一个手持式ESP32控制器和四个ESP32机器人节点。所有通信均通过ESP-NOW无线进行,这是一种低延迟的点对点Wi-Fi协议,无需路由器或互联网连接。

节拍序列逻辑

控制器维护一个4×4的状态矩阵:四个机器人,每个都有四个节拍槽。一个单个节拍时钟以预设的BPM频率运行。每当节拍发生时:

•currentBeat 增加(0 → 1 → 2 → 3 → 0 …)

一条消息结构通过ESP-NOW发送到每个机器人的MAC地址,内容包含:

•state[4] — 机器人四个节拍槽中哪个是激活的

•节拍 — 当前的节拍指数

•bpm — 当前节拍

•pitch — 用于控制蜂鸣器频率的0–100数值

每个机器人随后检查当前拍子的自身状态数组值,如果值为1则播放设定的音高,如果值为0则不播放。

硬件

•ESP32 开发板 ×5 — 1 个控制器 + 4 个机器人节点

•3W 8Ω 音箱 ×4 — 音频输出

•RGB LED ×8 — 视觉节拍指示器(每台机器人2个)

•旋转编码器 ×2 — 节拍与音高控制

•触控按钮 x8 = 控制机器人和节拍选择

•跳线、电阻等

按键引脚分配 — 控制器 ESP32

•BPM 编码器 CLK / DT → 引脚 22 / 21

•编码器时钟/数据 → 引脚 25 / 26

•切换按钮 → 针脚 4、5、18、19

•机器人选择按钮 → 引脚 12、13、14、27

•按键引脚分配 — 机器人ESP32

•蜂鸣器 → 引脚12

•LED 红色 / 绿色 / 蓝色 → 引脚 25 / 26 / 27

软件组件

•Arduino / PlatformIO (C++) — 控制器和机器人节点的固件

•ESP-NOW — 无需路由器的无线点对点消息传递

•ESP32Encoder 库 — 正交旋转编码器读取

工作原理——一步步说明

1. 设置(控制器)

启动时,控制器:

•以站点模式初始化Wi-Fi(ESP-NOW所需)

•将四个机器人的MAC地址都注册为ESP-NOW对等设备

•连接两个旋转编码器(BPM 和音高)

•将所有按钮引脚设置为输入上拉模式

2. 节拍器

在 loop() 中,控制器会将已经过的时间与当前的 BPM 区间进行比较:

当时间间隔到达后,currentBeat 会递增(取模 4),然后调用 sendBeat()。

3. 发送一个节拍(控制器 → 机器人)

sendBeat() 会遍历所有四个机器人。对于每个机器人 r,它会构建一条消息:

然后调用 esp_now_send(robotMACs[r], &msg, sizeof(msg))。这四个发送都在同一个循环迭代中完成,因此机器人几乎同时接收到它们的数据包。

4. 收到一个节拍(机器人)

机器人将 onReceive 作为其 ESP-NOW 回调函数注册。当收到数据包时:

机器人以计算出的频率发出蜂鸣声,并点亮其RGB LED的蓝色通道,持续100毫秒。

5. 用户交互(控制器)

BPM旋钮:旋转BPM编码器可增加或减少BPM(限制在40–200之间)。新的区间将在下一拍开始生效。

机器人选择按钮:按下四个机器人按钮中的任意一个,会设置当前机器人(currentRobot),并将之后所有节拍切换编辑操作都指向状态矩阵中该机器人的行。

节拍切换按钮:按下四个节拍按钮中的任意一个,会将当前选定机器人状态数组中对应位置的值进行异或操作,立即将其开启或关闭。sendBeat() 会立即被调用,因此更改将在下一次接收时生效。

音调旋钮:旋转音调编码器可调整当前选定机器人的音调(锁定范围为0–100)。

物理设计

机器人机柜

每个机器人都配有定制的3D打印外壳,由Fusion 360设计而成。机身尺寸可容纳ESP32芯片、蜂鸣器/扬声器、两个RGB LED灯以及一个4节AAA电池组,并设有镂空设计让LED灯能够透出。木质激光切割底板(在Fusion 360中设计,导出为SVG格式用于Shaper Origin CNC加工)提供了结构稳定性。

关键设计文件:

•music_upper.svg — 配备安装孔的上板激光切割CNC型材

•wooden_plates.stl / .f3d — 结构底板的3D模型

•Breadboard_Placeholder.stl / .f3d — 内部面包板安装模型

•UMS3_Breadboard_Placeholder.ufp / UMS5_Breadboard_Placeholder.ufp — Ultimaker S3/S5 打印配置文件

控制器外壳

手持控制器外壳采用3D打印和激光切割工艺,用于容纳:

•ESP32 开发板

•2块面包板

•2×挤出旋转编码器(BPM + 偏移)

•4×机器人选择按钮

•4×节拍切换按钮

•8个3D打印按钮,用于连接面包板上的按钮

•所有线路均位于控制器内部

控制器设计为模块化结构,由多个部件组成并可组装在一起。控制器的3D打印底座包括底部板,用于固定面包板。一个矩形棱柱框架是单独3D打印的,带有螺钉孔,可安装底部、后部、前部和顶部组件。顶部、前部和后部面板均采用激光切割而成,其中顶部面板设有孔位,用于安装按钮和旋转编码器。所有部件通过螺丝连接,最终构成完整的控制器外壳。

ESP32、按钮、编码器和电线都连接在面包板上。3D打印的按钮作为面包板上按钮的延伸,从控制器顶部突出。旋转编码器也从顶部面板伸出,并通过螺母和垫圈固定到位。

挑战与解决方案

•无线定时抖动——Milestone 2原型机采用主时钟同步,结合预定的未来启动时间以及基于中间点的时钟偏移估计。最终设计则利用ESP-NOW固有的低延迟特性,每时钟周期发送节拍脉冲,从而使机器人无需在丢失数据包时保存状态。

•多机器人协同——每个机器人通过唯一的MAC地址进行注册。控制器向每个机器人发送独立的消息数据包,从而实现对各机器人的姿态和模式状态的控制。

•音频质量——从WAV采样降级为通过tone()直接生成蜂鸣音。音高旋钮将0–100的整数映射到200–2000 Hz,使每个机器人拥有独特的音调范围。

•3D打印的尺寸与公差——在正式打印前,使用占位符CAD模型对面包板和ESP32焊盘进行了迭代设计。

•编码器噪声——使用 ESP32Encoder 库,采用全正弦(4×计数)方式实现可靠的步进检测,并通过 clamp() 函数将数值限制在指定范围内。

结果与演示

最终系统演示了:

•通过ESP-NOW实现4个机器人节点的实时无线同步

•通过控制器按钮矩阵进行机器人节拍模式编程

•实时BPM调节,范围40–200 BPM,即时生效

•每台机器人独立发声,实现个性化的音调控制

•RGB LED同步——每个机器人的LED灯在活跃节拍时闪烁

•定制3D打印机器人机身与激光切割木制底座

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

该项目介绍了一款集成了传感器的手套,通过手势来执行键盘和鼠标操作。该系统将指尖上的压力传感器与手掌背面的惯性测量单元(IMU)相结合,将手指轻触和手部动作转化为键盘和鼠标的控制指令。这使得用户可以在任何表面上进行完整打字...

关键字: 传感器 力敏电阻 ESP32

我们最初设想这个项目是建造一辆太空探测车,使其能够在类似火星或月球的静态环境中自主行驶。然而,我们意识到这在之前已经有人做过,因此我们希望探索构建一个更具挑战性的动态环境,让探测车面临更复杂的任务。

关键字: 步进电机 机器人 ESP-32

我们项目的核心想法是设计一个机器人,能够接收电子与通信工程系三楼任意房间号的输入,并从SE423实验室(3080)出发前往该房间。本项目包含将整个楼层的地图系统集成进来,并实现平面图与真实空间之间的坐标转换。我们采用A*...

关键字: 机器人 树莓派上 MPC服务器

所有学生都面临的一个问题是,在真正重要的时候难以集中注意力并保持专注。为了寻找能帮助学生提高专注力的工具,我们只找到了那些屏蔽手机上干扰应用的软件。许多这类专注工具只是阻止用户打开分心的应用,但并没有真正防止用户临时关闭...

关键字: AI HUD 扬声器

很长一段时间里,我总是需要反复按下Alt键切换到任务管理器或系统监控工具,才能查看电脑资源的使用情况。尤其是在进行大量渲染或游戏时,如果能一目了然地看到这些信息,就能大大减少猜测的时间。一个小巧而专用的显示屏,能够实时显...

关键字: LCD ESP32 CPU

瑞典哥德堡2026年7月2日 /美通社/ -- 斯凯孚(SKF)与全球机器人精密部件制造商绿的谐波(Leaderdrive)签署协议,宣布在中国成立合资公司。新公司将聚焦机器人关节高精密传动部件业务。通过此次投...

关键字: 机器人 谐波 供应链 智能机器人

我们已经这样临时搭建的花园喷泉好几年了。我妻子用几件陶瓷器皿组装而成,我在下层水盆里加了一台小巨型水泵,用来将水输送到上层水盆的喷嘴处。

关键字: 智能插座 压力传感器 ESP32

在我的一些之前视频中,我向大家展示了如何在不同显示屏上模拟制作模拟VU表。这次我将讲解如何制作这样一个项目,但使用的是包含几乎所有元件(包括MCU)的显示模块。只需添加几个无源元件和一个LED,即可作为峰值表来工作。

关键字: 显示屏 LED ESP32

随着人工智能从“数字世界”走向“物理世界”,具身智能(Embodied AI)正迎来爆发前夜。在2026年慕尼黑上海电子展(以下简称“慕展”)上,业界领先的半导体企业兆易创新围绕机器人产业带来了一系列核心芯片方案,全面展...

关键字: 人工智能 存储 机器人
关闭