
像素桌面宠物v1.0
简介
一款集复古美学与智能交互于一体的电子宠物摆件。调用大语言模型,支持语音多轮互动,兼具科技感与治愈感。
简介:一款集复古美学与智能交互于一体的电子宠物摆件。调用大语言模型,支持语音多轮互动,兼具科技感与治愈感。开源协议
:CC BY-NC-SA 4.0
(未经作者授权,禁止转载)描述
NeoMate
项目简介
NeoMate 是一款基于 ESP32-S3 的智能像素灯桌面摆件与 AI 语音助手一体化设备。它将 192 颗 WS2812 全彩灯珠 组成的 8×24 像素矩阵、阿里云 Qwen3-8B 大模型语音对话、TTS 语音合成、MPU6050 姿态感应、环境光自适应等多种功能融于一体,既可作为酷炫的桌面氛围灯和像素动画显示器,也可作为智能语音助手随时响应你的指令。
NeoMate 具备高度可扩展性,通过配套 HTML 像素画编辑器,用户可以自由创作像素画并实时投放到设备上显示。无论是作为像素时钟、倒计时沙漏、番茄钟、音乐频谱可视化、粉丝数显示器、天气信息看板,还是自定义消息通知提醒,NeoMate 都能轻松胜任。
硬件组成
| 模块 | 型号/规格 | 功能说明 | 连接引脚 |
|---|---|---|---|
| 主控芯片 | ESP32-S3 (Xtensa LX7 双核 240MHz) | 系统核心处理器,支持 WiFi/BLE | - |
| 内存 | 8MB PSRAM | 大容量缓冲,支持音频预缓冲与像素帧缓存 | - |
| 像素矩阵 | WS2812B (5050 封装) × 192 颗 | 8×24 全彩像素显示面板 | IO4 |
| 音频功放 | MAX98357A | I2S 数字音频功放,驱动扬声器 | DIN=IO16, BCLK=IO17, LRCLK=IO18, SD=IO8 |
| 麦克风 | INMP441 | I2S 数字麦克风,高信噪比录音 | CLK=IO5, WS=IO7, SD=IO15 |
| 姿态传感器 | MPU6050 | 六轴加速度计+陀螺仪,支持手势识别 | SDA=IO47, SCL=IO48 |
| 光敏电阻 | GL5528 | 环境光检测,自动调节亮度 | IO9 |
| 物理按键 | 轻触开关 × 5 | 用户交互输入 | SW1=IO39, SW2=IO38, SW3=IO37, SW4=IO36, SW5=IO35 |
| 状态指示灯 | LED × 3 (红×2 + 绿×1) | 系统状态可视化 | RED1=IO12, RED2=IO13, GREEN1=IO14 |
核心功能
1. 像素矩阵显示系统
- 8×24 像素画布:192 颗 WS2812 灯珠构成高分辨率像素面板
- Z 字串联布局:偶数列左→右,奇数列右→左,符合常规 LED 灯带物理走线
- 列优先数据格式:C 数组按列存储,天然匹配 Z 字串联顺序
- 多元素渲染引擎:支持多个独立像素元素叠加到同一画布,实现复杂场景合成
- 像素动画支持:帧插值与实时刷新,支持平滑过渡动画
- HTML 像素画编辑器:配套网页工具,支持调色绘画、多元素图层管理、C 数组一键导出
2. AI 语音助手
- 阿里云 Qwen3-8B 大模型:通过百炼平台 API 进行语义理解与智能对话
- TTS 语音合成:调用阿里云语音合成引擎,将 AI 回答转为自然语音播报
- 双向音频交互:MAX98357A 功放播放 + INMP441 麦克风录音,完整语音闭环
- 语音唤醒:按下 SW5 开始录音,松开或超时自动停止,录音内容经 ASR 识别后送 Qwen 处理
- 对话历史记忆:支持多轮连续对话,上下文连贯
3. 姿态感应与交互
- MPU6050 六轴传感器:实时读取加速度与角速度数据
- 姿态解算:计算 Roll (横滚角) 与 Pitch (俯仰角)
- 手势识别:通过姿态变化识别翻转、倾斜等手势动作
- 运动交互:倾斜设备即可控制像素颜色渐变,实现物理互动
4. 环境光自适应
- GL5528 光敏电阻:检测环境光照强度
- 自动亮度调节:根据环境光自动调整 WS2812 显示亮度
- 昼夜模式切换:低光环境下自动降低亮度,保护眼睛
5. 像素时钟
- NTP 网络时间同步:自动获取北京时间,无需手动设置
- 3×5 像素数字字体:清晰显示时、分
- 冒号闪烁:每秒切换,直观感知时间流逝
- 秒进度条:底部 24 格进度条实时显示秒数
- SW1 一键切换:随时进入/退出时钟模式
软件架构
技术栈
- 开发框架:Arduino (PlatformIO)
- 芯片平台:ESP32-S3
- 网络协议:WiFi + HTTP/HTTPS
- 音频协议:I2S (双控制器分离架构)
- 显示协议:单线 WS2812 协议 (800Kbps)
- 传感器协议:I2C (MPU6050)
关键设计
- I2S 双控制器分离:I2S_NUM_0 负责 INMP441 录音,I2S_NUM_1 负责 MAX98357A 播放,避免硬件冲突
- PSRAM 预缓冲:音频流数据预先缓存到 PSRAM,平滑网络波动
- 分块传输容错:HTTP Chunked Transfer Encoding 解析增加十六进制验证与阈值检查,异常分块自动终止
- 独立音频任务:录音读取放在 Core 1 的 FreeRTOS 独立任务中,避免与主循环抢占中断
- 列优先像素映射:画布数据按列存储,与物理灯带 Z 字串联顺序一致,渲染时无需额外坐标转换
项目文件说明
| 文件 | 说明 |
|---|---|
esp-rea/src/main.cpp | 核心固件源码,包含 WiFi 连接、TTS 播放、Qwen API 调用、传感器读取、灯带控制、录音功能、时钟显示 |
esp-rea/platformio.ini | PlatformIO 配置文件,启用 PSRAM,指定 ESP32-S3 开发板 |
pixel_editor.html | HTML 像素画编辑器,支持元素绘制、调色、C 数组导出 |
README.md | 项目介绍文档 |
.trae/rules/espio配置.md | 硬件 IO 引脚定义文档 |
扩展应用场景
NeoMate 具备高度可扩展性,通过软件更新即可实现以下功能:
- 像素时钟:实时显示网络时间,支持多种颜色主题
- 倒计时沙漏:可视化倒计时,适合专注工作
- 番茄钟:25 分钟专注 + 5 分钟休息循环
- 音乐频谱可视化:实时分析音频频率,显示动态频谱条
- 粉丝数显示器:对接 B站/YouTube API,实时显示粉丝数变化
- 天气信息展示:对接天气 API,显示温度、天气图标
- 消息通知提醒:手机推送转像素通知图标
- 纪念日倒计时:显示距离特定日期的剩余天数
- 环境数据监测:显示温湿度、PM2.5 等数据
- 运动数据同步:显示步数、卡路里等健康数据
- 氛围灯:静态或动态色彩照明,支持呼吸、渐变、彩虹等效果
- 像素相册幻灯片:轮播多张像素画
- 自定义游戏平台:贪吃蛇、俄罗斯方块等经典像素游戏
使用说明
基础操作
- 上电启动:连接 USB 供电,设备自动连接 WiFi 并同步 NTP 时间
- 语音对话:按下 SW5 说话,松开自动识别并播报 AI 回答
- 时钟模式:按 SW1 切换到时钟显示,再按退出
- 姿态灯效:倾斜设备,灯带颜色随俯仰角变化
- 像素画投放:使用
pixel_editor.html绘制图案,复制 C 数组到代码中编译上传
串口交互
连接串口监视器 (115200 波特率),输入文字即可直接发送给 Qwen 对话,无需语音。
开发信息
- 开发环境:PlatformIO + VS Code
- 目标板:Espressif ESP32-S3-DevKitC-1
- Arduino 版本:2.0.17
- 主要依赖:Adafruit NeoPixel, ArduinoJson, HTTPClient, WiFiClientSecure
https://github.com/Liam-rasberrypi/NeoMate
NeoMate —— 你的桌面像素伴侣,拥有无限可能。
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。










