这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【拾色播放器 DIY 活动】成果帖 —— Aura 光环播放器

共1条 1/1 1 跳转至

【拾色播放器 DIY 活动】成果帖 —— Aura 光环播放器

菜鸟
2025-12-19 11:13:13     打赏

一、Aura Player 光环播放器


效果演示:



1. 概述

本项目基于 Adafruit ESP32-S3 Reverse TFT Feather 开发板,结合 DFRobot 颜色传感器 (TCS3200) 和 音频模块,实现了一个能够“听见颜色”的智能设备。用户可以通过传感器拾取物体颜色,设备将识别颜色并在板载屏幕上显示,同时播放对应的音符,实现“颜色-声音”的跨感官交互。此外,项目还集成了磁性接近开关,用于控制播放功能的启停。

image.png

2. 硬件设计说明


2.1 核心组件

  • 主控制器: Adafruit ESP32-S3 Reverse TFT Feather (DigiKey: 1528-5691-ND)

    • 集成 ESP32-S3 芯片,支持 WiFi/BLE

    • 板载 1.14英寸 TFT 彩屏,方便状态显示

  • 颜色传感器: DFRobot TCS3200 Color Sensor (DigiKey: 1738-1035-ND)

    • 用于识别 RGB 颜色分量

  • 音频输出: DFRobot Digital Buzzer Module (DigiKey: 1738-1142-ND)

    • 用于播放八阶音符

  • 接近传感器: Littelfuse Reed Sensor (DigiKey: 18-59001-1-T-02-A-ND)

    • 磁性触发,用于播放控制

2.2 系统框图

Mermaid Chart - Create complex, visual diagrams with text.-2025-12-19-043213.png



2.3 硬件连接 


模块引脚名称ESP32-S3 引脚功能描述
TCS3200S0D5频率调节 选择 1

S1D6频率调节 选择 2

S2D9滤波器 选择 1

S3D10滤波器 选择 2

OUTD11频率信号输出

VCC3.3V电源 (正极)

GNDGND电源地 (负极)
BuzzerSignalD12PWM 信号输出,用于驱动蜂鸣器发声
Reed SwSignalD13干簧管开关信号,低电平或高电平有效


(注:具体引脚根据实际连线调整,代码中需对应)


3. 软件实现步骤


环境搭建: 使用 CircuitPython 固件,方便通过 USB 模拟 U 盘直接更新代码。


驱动开发:

lib/tcs3200.py: 封装颜色传感器逻辑,通过 pulseio 读取频率并映射为 RGB 值

lib/buzzer.py: 封装 pwmio 控制蜂鸣器频率。


UI 设计: 使用 displayio 在板载屏幕显示实时颜色色块和 RGB 数值。


主逻辑:

循环检测按键/传感器状态。

读取颜色 -> 映射音符 -> 播放。

接近传感器触发自动播放模式。



3.1 依赖库 (Libraries)

请确保 lib 文件夹中包含以下 CircuitPython 库 (可从 CircuitPython Bundle 获取):

  • adafruit_display_text

  • adafruit_display_shapes

  • neopixel


4. 开启运行说明

将 code.py 和 lib 文件夹复制到 CIRCUITPY 磁盘根目录,连接各模块传感器。上电后,屏幕显示初始化界面。按下板载 BOOT 键或触发接近开关开始拾色/播放。


主要参数情况

  • 颜色识别范围: RGB 24-bit

  • 音频响应: 262Hz (C4) - 523Hz (C5)

  • 屏幕分辨率: 240x135 pixel



二、Aura Studio 光环演奏页面

1. 项目概述

系统提供了一个包含多首经典曲目与校准工具的曲库,并设计了直观的视觉引导界面。整体操作流程清晰简便:用户在选择曲目并完成参数设置后,连接硬件设备即可开始运行,并能够方便地保存完整的测试数据以供分析。以下表格对其中涉及的技术实现部分进行了梳理:


特性说明解释
BPM 与速度控制BPM(每分钟节拍数)可调范围为40至180,默认90。此数值直接控制乐谱的垂直滚动速度这是音乐的“速度旋钮”。数字越大,乐谱滚动得越快,音乐播放也更急促。
dur 时值渲染音符显示高度由公式 height = max(60, 180*dur) 计算。其中 dur 是音符的原始时长值。系统根据音符的应有长短,来决定它在屏幕上显示为“长条”还是“短条”,使其视觉效果更符合乐理。
引导层包含静止的激光瞄准线和移动的音符目标框,可一键开启或关闭。其设计特意避免遮挡设备传感器区域。这就像射击游戏的“准星”和“目标”,帮助你精准地对准时侯按下按键或触发设备,并且不会妨碍设备“看见”光线。
串口连接基于 Web Serial API 实现,允许网页直接与单片机、Arduino等硬件设备的串口通信,实时读取数据。让网页和你的硬件设备“直接对话”,无需安装额外驱动,就能在网页上看到硬件发来的数据。
数据导出自动生成CSV格式文件。文件名会包含曲目名和精确的时间戳(年-月-日-时-分-秒),确保每次记录都不会混淆。系统将你的整个操作过程和结果,规整地保存成一张标准的电子表格,方便你日后用Excel等软件打开进行分析。
日志对比界面实时并列显示“传感器检测”到的音符与“Expected”预期音符,便于立刻比对差异。在屏幕上直接对照“设备实际识别的”和“理论上应该识别的”音符,一目了然,方便快速调试设备精度。


曲库选择:

Twinkle Star
Ode to Joy
Jingle Bells
C Major Scale
Calibration Pattern


PixPin_2025-12-19_09-35-18.jpeg

整体页面:

aura_studio.jpeg



2. 数据导出与分析

系统运行后,所有数据均可导出为CSV文件进行深入分析。

CSV文件列说明
下表解释了导出文件中各列数据的含义:


列名说明
RelativeTime(ms)相对于会话开始的毫秒时间戳。
RealTime数据点的实际日期与时间。
RawData从设备串口读取的原始字符串,通常包含 Freq: 或 Note: 前缀。
ParsedFreqR/G/B从RawData中解析出的红、绿、蓝三色光的频率值(如果存在)。
DetectedNote固件根据传感器输入实时判断出的音符。
ExpectedNote当前UI界面中,激光瞄准线位置所对应的、理论上应该被检测到的音符。


数据分析与检索建议


导出数据后,您可以按以下思路进行效果验证与问题排查:

  • 核心比对:重点分析 DetectedNote(检测音符) 与 ExpectedNote(预期音符) 这两列是否一致,这是评估系统准确性的关键。


文件命名示例


导出的文件会自动按以下规则命名,确保清晰且不重复:

  • Twinkle_Twinkle_Little_Star_aura_session_2025-12-19-00-49-11.csv

  • Ode_to_Joy_aura_session_2025-12-19-00-50-54.csv


3. 效果演示与故障排查

为了获得最佳的演示与检测效果,环境设置至关重要。

校准与光照建议
稳定的环境光是系统可靠工作的基础,请遵循以下建议:

  • 避免极端光照:不要在阳光直射或过于昏暗的环境下使用。

  • 保持垂直对齐:确保设备传感器与乐谱色块表面垂直,并正对色块中心,以接收到最强的反射光信号。




共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]