站内搜索
发作品签到
迷你电子海洋瓶,软硬件全新设计,可编程脚本创建互动式视觉艺术
专业版

迷你电子海洋瓶,软硬件全新设计,可编程脚本创建互动式视觉艺术

简介

一个多月的持续pcb打样、代码重构优化、3D结构件改进,最终接近我心中理想的形态。全彩配色可调,可在专用小程序市场下载更多模块,也可以基于lua脚本开发,释放你的创意。

简介:一个多月的持续pcb打样、代码重构优化、3D结构件改进,最终接近我心中理想的形态。全彩配色可调,可在专用小程序市场下载更多模块,也可以基于lua脚本开发,释放你的创意。
星火计划2026

开源协议

CC BY-NC-SA 4.0

创建时间:2026-05-27 08:30:09更新时间:2026-05-27 13:45:26

描述

Bottle 是一个基于 ESP32-S3 的可编程 LED 矩阵设备,支持通过 Lua 脚本创建动态动画效果。它集成了重力感应、音频采集、蓝牙配置等功能,适合创建互动式视觉艺术作品。

项目开源:https://github.com/jeffreyer/Bottle

联系作者: 不爱吃炸鸡ab6 (全网同名)

硬件能力

  • LED 矩阵: 17×8 全彩 LED 阵列,支持动态动画
  • 重力感应: LIS3DH 三轴加速度计,支持姿态检测和重力交互
  • 音频采集: 支持 I2S/PDM 麦克风,实时 FFT 频谱分析
  • 音频录制: 支持录制原始 PCM 音频到 U盘
  • 触摸控制: 电容触摸按键,支持短按、长按、超长按
  • 蓝牙功能:
    • BLE 配置服务(通过手机 App 配置设备)
    • BLE HID 鼠标模式(将设备用作蓝牙鼠标)
  • USB 功能:
    • USB 复合设备: 同时支持串口(CDC)和 U盘(MSC)
    • 串口调试: 始终可用
  • 电源管理: 电池电量监测、自动休眠、低功耗模式

软件特性

  • Lua 脚本引擎: 基于 Lua 5.4.7,支持热加载动画模块
  • 模块化架构: 内置多种动画效果(文字滚动、频谱显示、重力粒子、沙漏、蜡烛等)
  • 云端配置: 支持通过蓝牙从云端下载和配置模块
  • 安全机制: 栈溢出保护、数组边界检查、指令限制
  • 持久化存储: NVS 配置存储、Flash 文件系统
 

硬件组装注意事项

  • 元件焊接图可参考bottle.html
  • 不要焊接R18, R19,这是硬复位用的,除非设备起不来没串口,可短接R18同时短接R19,再依次断开R19,R18,可将设备切换到下载模式
  • 额外需要焊接一个R0603的10uF电容到电池正负极焊盘,对于没焊接电池只用Type-C供电的场景必备,否则会闪屏(下一版layout会加上)

贴片顺序

  • 优先用210°左右的焊锡焊接LED灯阵列,再用低温锡138°-180°焊接另一侧
  • LED阵列焊完测试方法:靠近Type-C一侧有2个测试点:LED正极,DIN,用Type-C座子引脚作为负极,用一块开发板写入颜色交替闪烁的的程序即可测试是否焊接正常

可拿Gerber.rar直接去打样,和现有版本一致。

 

快速开始

环境准备

  1. 安装开发工具

  2. 克隆仓库

    git clone <repo-url>
    cd Bottle
     

编译和上传

# 编译固件
pio run

# 上传到 ESP32-S3
pio run -t upload

# 打开串口监视器
pio device monitor
 

基本操作

触摸按键控制:

  • 短按: 切换子页面/模式
  • 长按 (大于1秒): 正常模式时:在切换动画模块/蓝牙配置模式/关机功能循环,松开即执行显示的功能;蓝牙模式时:在退出蓝牙模式/关机功能循环
  • 超长按 (>15秒): 强制关机

 

Lua 脚本开发

Bottle 支持通过 Lua 脚本创建自定义动画效果。详细的 API 文档和示例请参考:

📖 Lua 脚本开发指南

 

可用的硬件 API

  • LED 控制led.set()led.clear()led.show()led.text()led.hsv()
  • 时间time.millis()time.delay()
  • 重力感应gravity.get() - 返回 X/Y/Z 轴加速度
  • 音频频谱audio.init()audio.getSpectrum()audio.close()

 

内置动画模块

  • 文字显示 (text) - 支持滚动文字、自定义颜色
  • 频谱显示 (rhythm) - 音频频谱可视化
  • 重力粒子 - 重力感应控制的粒子效果
  • 沙漏 (sandglass) - 重力感应沙漏模拟
  • 蜡烛 (candle) - 蜡烛火焰动画
  • 水波模拟 (water_sim) - 流体动力学模拟
  • RGB 彩虹 (rgb) - 彩虹渐变动画
  • 以上部分模块需通过小程序幻彩抽屉下载

 

蓝牙配置

设备支持通过 BLE 进行配置:

  1. 长按触摸键 2-3 秒进入 BLE 配置模式
  2. 使用微信小程序幻彩抽屉连接设备(设备名: "BottleLED")
  3. 通过 小程序 配置模块参数、下载新模块、调整系统设置
  4. 再次长按退出配置模式

 

音频功能

实时频谱分析

  • 17 频段 FFT 分析(0-8kHz)
  • 支持 I2S 和 PDM 麦克风
  • 可用于音乐可视化、声控动画

音频录制

  • 录制格式: 16-bit PCM, 16kHz 采样率
  • 存储位置: /extflash/rec_*.pcm
  • 通过 USB U盘导出录音文件

 

开发和调试

USB 复合设备

设备使用 USB 复合设备模式,同时提供串口和 U盘功能:

串口(CDC):

  • 始终可用
  • 波特率: 115200
  • 用于调试输出和命令行交互

U盘(MSC):

  • 可通过串口命令 usb=1 启用(可选)
  • 启用后设备会显示为 USB 大容量存储设备
  • 可访问 /extflash 分区
  • 用于上传 Lua 脚本、导出录音文件等
  • 串口和 U盘可以同时使用

使用流程:

# 1. 连接 USB 线到电脑
# 2. 打开串口终端(115200 波特率)
pio device monitor
# 3. 电脑会识别出 U盘,可以读写文件
# 4. 串口功能始终可用,可以同时调试
 

重新烧录:

# 0. 第一次烧录不需要参考此流程
# 1. 连接 USB 线到电脑
# 2. 打开串口终端(115200 波特率)
# 3. 发送命令 dfu
# 4. 设备会重启进入下载模式
 

注意事项:

  • U盘模式启用时,设备内部无法访问 /extflash 文件系统
  • 拔出Type-C数据线,文件系统会自动重新挂载
  • 串口和U盘可以同时工作,互不干扰
 

许可证

商业使用需获得作者书面许可。

 

致谢

  • 好心却黑猫35 - 我制作了一瓶电子海洋
  • FastLED - 强大的 LED 控制库
  • arduinoFFT - 高效的 FFT 实现
  • Lua - 优雅的嵌入式脚本语言
  • ESP32 Arduino Core - ESP32 开发框架
  • NimBLE - 轻量级蓝牙协议栈

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
1
3D结构件.rar
11

附件

序号文件名称下载次数
1
BOM.xlsx
15
2
Gerber.rar
16
3
演示视频1.mp4
7
4
bottle.html
14
5
Bottle-项目代码.zip
20
6
已编译固件.rar
13
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航