Sesame Robot 项目深度分析报告
项目名称: Sesame Robot
作者: Dorian Todd(starphee)
开源协议: Apache License 2.0
仓库地址: https://github.com/dorianborian/sesame-robot
![]()
目录
- 项目概述
- 业务模型分析
- 需求清单
- 系统架构设计
- 代码规模统计
- 技术栈评估
- 组件依赖分析
- API 接口清单
- 数据模型
- 硬件架构
- 迭代优化建议
1. 项目概述
Sesame 是一个开源的桌面级四足步行机器人项目,基于 ESP32 微控制器系统,强调表情表达与运动能力的融合。项目目标是提供一个面向各级别制造者和工程师的可访问的机器人平台,让用户能够从零开始构建一个具有表情显示和远程控制能力的四足机器人。
核心特征:
- 四足步行机器人(8自由度)
- 128x64 OLED 表情显示屏
- WiFi 网络远程控制 + Captive Portal 本地控制
- RESTful JSON API + Python SDK
- 完全 3D 打印(PLA材质)
- 硬件成本 $50-60
项目对标: 类似小型教育/娱乐机器人平台(如 Petoi Bittle、Otto DIY),但更侧重表情表达和网络互联。
2. 业务模型分析
2.1 价值主张
| 维度 | 说明 |
|---|
| 目标用户 | Makers(创客)、工程师、教育工作者、机器人爱好者、STEM教育机构 |
| 核心价值 | 低成本、全开源、完整文档的四足机器人平台,降低入门门槛 |
| 差异化 | 表情交互 + 运动控制融合;双模WiFi(AP+Station);动画作曲家工具 |
| 商业模式 | 开源硬件 + 社区驱动 + Build Kit 销售(Sesame Build Kit) + PCBway 赞助 |
2.2 业务生态
┌──────────────────────────────────────────────────────┐ │ Sesame 生态 │ ├──────────────────────────────────────────────────────┤ │ 硬件层 │ 3D打印零件 + 标准电子元件 + PCB定制(Distro Board) │ │ 固件层 │ ESP32 Arduino 固件(运动/表情/WiFi/API) │ │ 软件层 │ Sesame Studio(C++) + Companion App(Python) │ │ 社区层 │ Discord + YouTube 教程 + PCBway 赞助 │ │ 商业层 │ Build Kits(预组装 Distro Board V2) │ └──────────────────────────────────────────────────────┘
2.3 收入渠道推断
- Sesame Build Kit销售(含预烧录 Distro Board V2)
- PCBway 赞助合作(PCB制造)
- YouTube 内容变现(教程视频)
- 社区捐赠 / Discord 会员
2.4 用户旅程
1. 收集零件(BOM清单采购,$50-60) 2. 3D打印外壳(11个部件,PLA材质) 3. 焊接组装(手工接线 或 Distro Board) 4. 烧录固件(Arduino IDE) 5. 校准测试(Motor Tester 调试工具) 6. 创作动画(Sesame Studio 可视化工具) 7. 集成扩展(JSON API + Companion App)
3. 需求清单
3.1 功能需求(Functional Requirements)
| ID | 功能分类 | 需求描述 | 实现状态 |
|---|
| FR-01 | 运动控制 | 四足步行:前进、后退、左转、右转 | ✅ 已实现 |
| FR-02 | 运动控制 | 预设动作:站立、休息、挥手、跳舞、游泳、指点、俯卧撑、鞠躬、可爱、怪异、蠕虫、摇晃、耸肩、装死、螃蟹步 | ✅ 17种动作 |
| FR-03 | 运动控制 | 8舵机独立角度控制(0-180°) | ✅ 已实现 |
| FR-04 | 运动控制 | Subtrim 微调校准(-90° ~ +90°) | ✅ 已实现 |
| FR-05 | 表情显示 | 128x64 OLED 位图表情渲染 | ✅ 已实现 |
| FR-06 | 表情显示 | 20+ 预设表情(含运动表情和对话表情) | ✅ 已实现 |
| FR-07 | 表情显示 | “talk_” 对话变体(张嘴口型同步) | ✅ 9种talk变体 |
| FR-08 | 表情显示 | 表情动画:LOOP/ONCE/BOOMERANG三种模式 | ✅ 已实现 |
| FR-09 | 本地控制 | Captive Portal Web UI(AP模式) | ✅ 已实现 |
| FR-10 | 本地控制 | Serial CLI 命令行控制 | ✅ 已实现 |
| FR-11 | 网络控制 | Station模式连接家庭WiFi | ✅ 已实现 |
| FR-12 | 网络控制 | mDNS 服务发现(sesame-robot.local) | ✅ 已实现 |
| FR-13 | 网络控制 | RESTful JSON API(GET /api/status, POST /api/command) | ✅ 已实现 |
| FR-14 | 网络控制 | 传统 HTTP 参数接口(/cmd?go=, /cmd?pose=) | ✅ 已实现 |
| FR-15 | 网络控制 | 动态参数配置(/getSettings, /setSettings) | ✅ 已实现 |
| FR-16 | 空闲行为 | 自动空闲动画(呼吸+随机眨眼) | ✅ 已实现 |
| FR-17 | 空闲行为 | WiFi信息滚动显示(30秒无输入后) | ✅ 已实现 |
| FR-18 | 动画创作 | Sesame Studio 可视化动作编排工具 | ✅ 已实现 |
| FR-19 | 动画创作 | C++ 代码自动生成(servo角度+delay) | ✅ 已实现 |
| FR-20 | 调试工具 | Motor Tester 电机测试固件 | ✅ 已实现 |
| FR-21 | 安全保护 | 舵机电流延迟保护(防VCC跌落) | ✅ 已实现 |
| FR-22 | 安全保护 | 非阻塞控制流(pressingCheck 即时中断) | ✅ 已实现 |
3.2 非功能需求(Non-Functional Requirements)
| ID | 需求类别 | 描述 | 当前状态 |
|---|
| NFR-01 | 实时性 | 舵机PWM 50Hz,帧延迟可配置 | ✅ 满足 |
| NFR-02 | 可用性 | 无需编程即可组装(仅需基础焊接) | ✅ 满足 |
| NFR-03 | 可移植性 | 支持3种MCU板型(S2 Mini / ESP32-DevKitC / ESP32-S3) | ✅ 满足 |
| NFR-04 | 可扩展性 | 模块化固件架构,支持添加新表情/动作 | ✅ 满足 |
| NFR-05 | 成本控制 | 硬件总成本 $50-60 | ✅ 满足 |
| NFR-06 | 安全性 | AP密码可配置,无HTTPS(局域网环境) | ⚠️ 基本满足 |
| NFR-07 | 低功耗 | 电池供电支持(2x10440 Li-ion) | ⚠️ V2板电池不稳定 |
3.3 待实现需求(Backlog/Roadmap)
| ID | 需求 | 优先级 | 来源 |
|---|
| BL-01 | 运动学算法改进(逆运动学IK) | 高 | README社区贡献方向 |
| BL-02 | 传感器集成(超声波、陀螺仪) | 中 | README社区贡献方向 |
| BL-03 | Web UI/UX 改进 | 中 | README社区贡献方向 |
| BL-04 | Distro Board V3(修复V2电池问题) | 高 | 文档提及(免费发送给V2 Kit买家) |
| BL-05 | 更多用户自定义动画 | 低 | 社区贡献 |
| BL-06 | 身份认证机制(生产环境部署) | 低 | 固件文档安全考虑 |
| BL-07 | WebSocket 实时控制(低延迟) | 中 | 文档Advanced章节提及 |
4. 系统架构设计
4.1 总体架构图
┌──────────────────────────────────────────────────────────────────┐ │ Sesame Robot 系统架构 │ ├──────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ │ │ │ Sesame Studio │ │ Companion App │ │ Web Browser │ │ │ │ (Python/Tkinter)│ │ (Python/Voice) │ │ (Captive Portal)│ │ │ └────────┬─────────┘ └────────┬─────────┘ └────────┬────────┘ │ │ │ │ │ │ │ │ Code Export │ JSON API │ HTTP │ │ ▼ ▼ ▼ │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ ESP32 固件层 (Arduino C++) │ │ │ │ ┌───────────────┐ ┌──────────────┐ ┌──────────────────┐ │ │ │ │ │ Web Server │ │ Command │ │ Face Engine │ │ │ │ │ │ /, /cmd, │ │ Dispatcher │ │ updateAnimated- │ │ │ │ │ │ /api/status, │ │ (forward/ │ │ Face() │ │ │ │ │ │ /api/command │ │ backward/ │ │ setFace() │ │ │ │ │ │ /getSettings │ │ wave/dance…) │ │ idle/blink │ │ │ │ │ └───────────────┘ └──────┬───────┘ └────────┬─────────┘ │ │ │ │ │ │ │ │ │ │ ┌─────────────────────┐ │ ┌─────────────────┴──────────┐ │ │ │ │ │ WiFi Stack │ │ │ Servo HAL │ │ │ │ │ │ - SoftAP + Station │ │ │ - ESP32PWM (4 timers) │ │ │ │ │ │ - DNSServer(Captive)│ │ │ - setServoAngle(ch,deg) │ │ │ │ │ │ - mDNS responder │ │ │ - motorCurrentDelay │ │ │ │ │ └─────────────────────┘ │ │ - subtrim calibration │ │ │ │ │ │ └────────────────────────────┘ │ │ │ └───────────────────────────┘ │ │ │ │ │ │ │ │ ▼ ▼ │ │ │ ┌──────────────────┐ ┌───────────────────┐ │ │ │ │ SSD1306 OLED │ │ 8x MG90S Servos │ │ │ │ │ (I2C, 128x64) │ │ (PWM, 50Hz, 180°) │ │ │ │ └──────────────────┘ └───────────────────┘ │ │ └──────────────────────────────────────────────────────────────────┘
4.2 固件模块结构
sesame-firmware-main.ino (854行) ← 主入口 ├── setup() - 系统初始化(WiFi/OLED/Servo/WebServer) ├── loop() - 主事件循环 + Serial CLI ├── handleRoot() - Captive Portal HTML ├── handleCommandWeb() - Web命令处理 ├── handleApiCommand() - JSON API命令处理 ├── handleGetStatus() - 状态查询 ├── handleGetSettings/setSettings() - 参数配置 ├── updateAnimatedFace()- 表情动画引擎 ├── updateIdleBlink() - 空闲眨眼系统 ├── updateWifiInfoScroll()- WiFi信息滚动 │ ├── face-bitmaps.h (3,158行) │ ├── FACE_LIST 宏(X-Macro注册系统) │ ├── 40+ 表情位图数据(PROGMEM存储) │ └── talk_* 对话表情变体 │ ├── movement-sequences.h (429行) │ ├── ServoName 枚举(R1-R4, L1-L4) │ ├── FaceAnimMode 枚举(LOOP/ONCE/BOOMERANG) │ ├── 17个动作函数(runWalkPose/runWavePose等) │ └── pressingCheck() 中断检测 │ ├── captive-portal.h (851行) │ ├── index_html PROGMEM 常量 │ ├── 完整 Web UI(HTML+CSS+JS) │ └── 深色主题 + 橙色调 │ └── debugging-firmware/ └── sesame-motor-tester.ino (137行) └── 独立电机测试工具(Serial CLI)
4.3 控制流程
用户输入 → WiFi(HTTP)或Serial(CLI) │ ▼ Command Dispatcher (loop()) │ ├── "forward"/"backward"/... → runWalkPose() 等持续动作 │ └── 循环调用 setServoAngle() + delayWithFace() │ ├── "wave"/"dance"/... → runWavePose() 等一次性动作 │ └── 动作序列 + 自动进入 idle │ └── "face": "happy" → setFace("happy") → updateFaceBitmap() │ ▼ Idle System (updateIdleBlink()) └── 3-7秒随机间隔 → 眨眼 (30%概率双眨眼)
4.4 硬件抽象层(HAL)
项目通过servoPins[]数组和I2C_SDA/I2C_SCL宏实现硬件抽象,支持三种MCU板型:
// 只需修改这两个配置即可移植到不同ESP32板型constintservoPins[8]={1,2,4,6,8,10,13,14};// S2 Mini#defineI2C_SDA33#defineI2C_SCL35
5. 代码规模统计
5.1 概览
| 维度 | 数值 |
|---|
| 文件总数 | 118 |
| 源代码文件 | 7(3个.ino, 3个.h, 1个.py) |
| 文档文件 | 14个 .md |
| 图片资源 | 74个 .png |
| 3D打印文件 | 15个 .stl |
| PCB设计文件 | 2个 .zip (Gerber) + 2个 .csv + 1个 .json |
| CAD文件 | 1个 .f3z + 1个 .step |
5.2 源代码行数明细
| 文件 | 行数 | 用途 | 复杂度 |
|---|
firmware/face-bitmaps.h | 3,158 | 表情位图数据(含40+表情) | 低(数据) |
firmware/sesame-firmware-main.ino | 854 | 主固件(系统核心逻辑) | 高 |
firmware/captive-portal.h | 851 | Web UI(HTML+CSS+JS) | 中 |
firmware/movement-sequences.h | 429 | 运动序列定义 | 中 |
software/sesame-studio/sesame_studio.py | 282 | 动画创作工具GUI | 中 |
firmware/debugging-firmware/sesame-motor-tester.ino | 137 | 调试工具固件 | 低 |
总计:~5,711 行源代码(含位图数据3,158行,实际逻辑代码 ~2,553 行)
5.3 文档行数明细
| 文档 | 行数 | 内容 |
|---|
firmware/README.md | 830 | 固件完整技术文档 + API参考 |
docs/build-guide/README.md | 268 | 5阶段建造指南 |
docs/wiring-guide/README.md | 148 | 接线指南 |
README.md(根) | 134 | 项目总览 |
hardware/pcb/README.md | 110 | PCB设计文档 |
hardware/bom/README.md | 95 | 物料清单 |
hardware/printing/README.md | 49 | 3D打印设置 |
software/sesame-studio/README.md | 48 | Studio工具文档 |
| 其他6个README | 104 | 各模块简要说明 |
文档总计:~1,786 行
5.4 规模评估
| 评估维度 | 评级 | 说明 |
|---|
| 代码总量 | 小型 | 实际逻辑代码 ~2,500 行,适合单人维护 |
| 模块化程度 | 良好 | 固件拆分为4个文件 + 1个独立调试工具 |
| 文档完善度 | 优秀 | 建造指南、接线图、API文档、PCB文档齐全 |
| 测试覆盖 | 缺失 | 无自动化测试框架 |
| CI/CD | 无 | 无持续集成配置 |
6. 技术栈评估
6.1 技术选型
| 层级 | 技术 | 版本/型号 | 评价 |
|---|
| MCU | ESP32 (S2/S3/WROOM32) | - | ⭐⭐⭐⭐ 成熟稳定,WiFi+BLE |
| 固件语言 | C++ (Arduino框架) | - | ⭐⭐⭐ 入门友好,但有局限性 |
| IDE | Arduino IDE | 2.0+ | ⭐⭐⭐ 简单易用 |
| 伺服库 | ESP32Servo | v3.0.9 | ⭐⭐⭐ 有已知bug(多通道泄漏) |
| 显示库 | Adafruit GFX + SSD1306 | - | ⭐⭐⭐⭐⭐ 成熟稳定 |
| 网络 | WiFi.h + WebServer + DNSServer | ESP32内置 | ⭐⭐⭐⭐ |
| 桌面工具 | Python + Tkinter + Pillow | 3.x | ⭐⭐⭐ Tkinter较陈旧 |
| 3D打印 | PLA | - | ⭐⭐⭐⭐⭐ 通用低成本 |
| PCB设计 | EasyEDA (v2) | SCH JSON格式 | ⭐⭐⭐⭐ 开源友好 |
6.2 技术债务
| 问题 | 严重性 | 影响 |
|---|
| ESP32Servo v3.0.9 固定版本(新版有多通道泄漏bug) | 中 | 阻止库升级 |
| 无持久化存储(设置无法断电保存) | 中 | 每次重启需重新配置 |
| 手动JSON解析(未使用ArduinoJSON) | 低 | 健壮性风险 |
| 单核事件循环(无RTOS) | 低 | 网络+运动并发受限 |
| WIFI密码硬编码(未使用Preference存储) | 低 | 便捷性不足 |
| Tkinter GUI(非跨平台最优方案) | 低 | UI现代化不足 |
7. 组件依赖分析
7.1 固件依赖
Arduino 核心库: ├── WiFi.h - ESP32 WiFi (STA + AP) ├── WebServer.h - HTTP 服务器 ├── DNSServer.h - DNS 劫持(Captive Portal) ├── ESPmDNS.h - mDNS 服务发现 ├── Wire.h - I2C 通信 └── Arduino.h - 基础框架 第三方库: ├── ESP32Servo v3.0.9 - PWM伺服控制(⚠️ 锁定版本) ├── Adafruit_SSD1306 - OLED显示驱动 └── Adafruit_GFX Library - 图形库 ESP32 板级支持: └── esp32 by Espressif Systems (v2.0.0+)
7.2 软件依赖
Python: ├── Pillow - 图像缩放 └── tkinter - GUI框架(系统自带) 外部服务: ├── DNS Server (UDP 53) - Captive Portal ├── mDNS (5353) - 服务发现 └── HTTP (80) - Web/API 服务
7.3 硬件依赖
| 组件 | 型号 | 数量 | 单价估算 |
|---|
| MCU | Lolin S2 Mini / ESP32-DevKitC / Distro Board V2 | 1 | $3-15 |
| 舵机 | MG90S 全金属微型舵机 | 8 (+2备用) | ~$2/个 |
| 显示屏 | 0.96" SSD1306 I2C OLED | 1 | ~$3 |
| 电源 | USB-C PD 5V 3A 或 2x10440 Li-ion | 1 | ~$10 |
| 3D打印耗材 | PLA (11个部件) | ~150g | ~$5 |
| 其他 | 电线、开关、螺丝、热缩管等 | 若干 | ~$15 |
| 总计 | $50-60 |
8. API 接口清单
8.1 传统 HTTP API(Legacy)
| 方法 | 路径 | 参数 | 说明 |
|---|
| GET | / | - | Captive Portal Web UI |
| GET | /cmd | ?go=forward|backward|left|right | 持续运动 |
| GET | /cmd | ?pose=wave|dance|rest|... | 单次动作 |
| GET | /cmd | ?motor=1&value=90 | 单舵机控制 |
| GET | /cmd | ?stop | 停止运动 |
| GET | /getSettings | - | 获取配置 |
| GET | /setSettings | ?frameDelay=100&walkCycles=10&motorCurrentDelay=20&faceFps=8 | 设置参数 |
8.2 JSON REST API(推荐)
GET /api/status
{"currentCommand":"forward","currentFace":"walk","networkConnected":true,"apIP":"192.168.4.1","networkIP":"192.168.1.100"}
POST /api/command
// 运动+表情{"command":"wave","face":"happy"}→{"status":"ok","message":"Command executed"}// 纯表情更新(无运动){"face":"excited"}→{"status":"ok","message":"Face updated"}// 停止{"command":"stop"}→{"status":"ok","message":"Command stopped"}
8.3 Serial CLI 命令
| 命令 | 简称 | 说明 |
|---|
run walk | rn wf | 前进 |
run walk backward | rn wb | 后退 |
run left | rn tl | 左转 |
run right | rn tr | 右转 |
run rest | rn rs | 休息 |
run stand | rn st | 站立 |
rn wv/dn/sw/pt/pu/bw/ct/fk/wm/sk/sg/dd/cb | - | 各种姿势 |
subtrim [motor] [value] | st [m] [v] | 设置微调 |
subtrim save | st save | 导出微调值 |
all [angle] | - | 所有舵机统一角度 |
[motor] [angle] | - | 单舵机控制 |
9. 数据模型
9.1 表情(Face)数据模型
FACE_LIST (X-Macro): ├── walk, rest, swim, dance, wave, point, stand ├── cute, pushup, freaky, bow, worm, shake, shrug ├── dead, crab, defualt, idle, idle_blink ├── happy, sad, angry, surprised, sleepy, love, excited, confused, thinking └── talk_happy, talk_sad, talk_angry, talk_surprised, talk_sleepy, talk_love, talk_excited, talk_confused, talk_thinking
每个表情 =const unsigned char bitmap[1024](128x64 像素单色位图)
动画表情 = 多帧位图序列(最多6帧),支持 LOOP/ONCE/BOOMERANG
9.2 舵机(Servo)数据模型
ServoName 枚举: ├── R1=0, R2=1, L1=2, L2=3 (髋关节) └── R4=4, R3=5, L3=6, L4=7 (膝关节) servoPins[8]: GPIO引脚映射 servoSubtrim[8]: 微调偏移 (-90 ~ +90)
9.3 全局状态
currentCommand:String// 当前执行的动作currentFaceName:String// 当前表情名称currentFaceFrames:bitmap[]// 当前表情帧数组idleActive:bool// 空闲状态networkConnected:bool// 网络连接状态frameDelay:int// 帧延迟 (ms)walkCycles:int// 步行周期数motorCurrentDelay:int// 舵机电流延迟 (ms)faceFps:int// 表情帧率
10. 硬件架构
![]()
10.1 物理结构
Sesame 机器人(四足 8自由度): ┌──────────────────────────────────────┐ │ Top Cover (顶盖) │ │ ┌──────────────────────────────┐ │ │ │ SSD1306 OLED (128x64) │ │ │ │ Rocker Power Switch │ │ │ └──────────────────────────────┘ │ │ Internal Frame (内框架) │ │ ┌──┐ ┌──┐ │ │ L1│ │ R1 (髋关节x4) │ │R1 │ │ L2│ │ R2 │ │R2 │ │ ├──┤ ├──┤ │ │ L3│ │ R3 (膝关节x4) │ │R3 │ │ L4│ │ R4 │ │R4 │ │ └──┘ └──┘ │ │ Battery Slot (电池槽) │ │ Bottom Cover (底盖) │ └──────────────────────────────────────┘
![]()
10.2 三套硬件方案对比
| 特性 | S2 Mini 手焊 | Distro Board V2 | Distro Board V1 (Legacy) |
|---|
| MCU | ESP32-S2 | ESP32-S3 | ESP32-WROOM32 |
| USB-C PD | ✅ | ✅ | ❌ |
| 电池供电 | ✅ | ⚠️ 不稳定 | ✅ |
| 组装难度 | 中 | 低(预组装) | 高 |
| 成本 | ~$50 | 含Kit | ~$60 |
| 状态 | 推荐DIY | Kit标配 | 已淘汰 |
10.3 3D打印部件清单
| 部件 | STL文件 | 支撑 |
|---|
| Internal Frame | Internal-Frame-v117.stl | 无 |
| Bottom Cover | Bottom-Cover-v117.stl | 无 |
| Top Cover (Cat/Enclosed/NoEars) | Top-Cover-*.stl | 有 |
| Joint R1/R2/R3/R4 | R1-R4-v117.stl | 无 |
| Joint L1/L2/L3/L4 | L1-L4-v117.stl | 无 |
| 配件帽子 | magnetic-*.stl | 可选 |
11. 迭代优化建议
11.1 短期优化(立即可做)
| 序号 | 优化项 | 描述 | 工作量 | 影响 |
|---|
| 1 | 引入 ArduinoJSON | 替代手动字符串拼接JSON,提升健壮性 | 半日 | API稳定性+ |
| 2 | WiFi凭据持久化 | 使用 ESP32 Preferences/NVS 存储SSID/密码 | 半日 | 用户体验++ |
| 3 | 设置持久化 | 将 frameDelay/motorCurrentDelay 等存入NVS | 半日 | 用户体验++ |
| 4 | OTA固件升级 | 通过WiFi远程更新固件无需USB | 1日 | 运维便利性++ |
| 5 | Sesame Studio 升级 | 从 Tkinter 迁移到 PyQt6 / web 版 | 3-5日 | 跨平台UI+ |
11.2 中期架构改进
| 序号 | 改进项 | 描述 | 工作量 |
|---|
| 1 | FreeRTOS 多任务 | 将运动控制/表情渲染/网络服务分到独立任务 | 3-5日 |
| 2 | 逆运动学(IK) | 实现基于目标位置的腿部IK算法 | 5-10日 |
| 3 | 传感器驱动层 | 抽象超声波/陀螺仪/IMU传感器接口 | 3-5日 |
| 4 | 固件测试框架 | 引入单元测试(Unity test framework for Arduino) | 2-3日 |
| 5 | WebSocket支持 | 添加 WebSocket 端点实现低延迟实时控制 | 2-3日 |
11.3 长期演进方向
| 序号 | 方向 | 描述 |
|---|
| 1 | AI集成 | 集成 ESP-SR 语音识别模块,本地离线语音控制 |
| 2 | 多机器人协作 | Mesh网络多机同步舞蹈/编队 |
| 3 | 云后台 | 云端表情/动作市场,社区共享 |
| 4 | ROS2支持 | micro-ROS 集成,进入ROS生态 |
| 5 | 教育课程体系 | 配套STEM课程包、编程教学 |
11.4 可复用价值分析
Sesame 项目具有以下可复用组件,可提取为独立能力:
| 组件 | 复用场景 | 提取方式 |
|---|
| X-Macro 表情注册系统 | 任何需要管理大量位图资源的嵌入式项目 | 独立模板库 |
| Captive Portal HTML 界面 | ESP32 Web控制面板 | 通用模板 |
| 双模WiFi(AP+STA)框架 | IoT设备联网 | 独立库 |
| 非阻塞动画引擎 | OLED/电机动画控制 | 独立模块 |
| JSON API 架构模式 | 机器人/IoT设备远程控制 | 参考模式 |
附录A:文件目录完整结构
sesame-robot-main/ ├── .gitignore ├── LICENSE (Apache 2.0) ├── README.md │ ├── docs/ │ ├── README.md │ ├── build-guide/ │ │ ├── README.md │ │ └── assets/ (39个建造流程PNG图) │ ├── images/ │ │ ├── README.md │ │ ├── sesame-topdown.png │ │ └── sesamefaces/ (20个表情PNG) │ └── wiring-guide/ │ ├── README.md │ ├── distro-board-wiring-guide.png │ ├── s2-mini-wiring-guide-new.png │ └── assets/ (5个接线流程PNG) │ ├── firmware/ │ ├── README.md (830行 - 完整技术文档) │ ├── sesame-firmware-main.ino (854行 - 主固件) │ ├── face-bitmaps.h (3,158行 - 表情位图) │ ├── movement-sequences.h (429行 - 运动序列) │ ├── captive-portal.h (851行 - Web UI) │ └── debugging-firmware/ │ └── sesame-motor-tester.ino (137行) │ ├── hardware/ │ ├── README.md │ ├── bom/README.md - 物料清单 │ ├── cad/ │ │ ├── README.md │ │ ├── Sesame-v117.f3z (Fusion 360) │ │ └── Sesame-v117.step (通用CAD) │ ├── pcb/ │ │ ├── README.md │ │ ├── pcbs.png │ │ ├── SDB-layout.png │ │ ├── distro-v1/ (V1 Gerber + 原理图) │ │ └── distro-v2/ (V2 Gerber + BOM + PickAndPlace + SCH) │ └── printing/ │ ├── README.md │ ├── assets/ (4个打印设置PNG) │ └── stl/ (11个基本部件 + 3个顶盖 + 2个配件) │ └── software/ ├── README.md └── sesame-studio/ ├── README.md ├── sesame_studio.py (282行) └── assets/ (4个图标/预览PNG)
附录B:关键设计亮点
- X-Macro 表情注册系统:通过
FACE_LIST宏实现表情的一处注册、多处自动生成引用,极大降低添加新表情的维护成本 - 非阻塞 pressingCheck():在动画帧间持续轮询网络请求,实现即时中断响应,避免传统 delay() 导致的控制延迟
- WiFi信息智能滚动:30秒无人操作后自动显示WiFi连接信息,新手友好设计
- 三板支持抽象层:仅修改
servoPins[]和I2C_定义即可在不同ESP32板型间移植 - 空闲眨眼系统:30%概率双眨眼,3-7秒随机间隔,提升机器人"生命力"的真实感
参见:
https://www.pcbway.com/project/shareproject/The_Sesame_Robot_Project_3a0ba90f.html
Code
Firmware & Code
https://github.com/dorianborian/sesame-robot/tree/main/firmware
Schematic and Layout
PCB Schematic & Layout
https://github.com/dorianborian/sesame-robot/tree/main/hardware/pcb
CAD-Custom parts and enclosures
3D Printing Files & CAD
https://github.com/dorianborian/sesame-robot/tree/main/hardware/printing