跟着 Sesame Robot 项目学习

Sesame Robot 项目深度分析报告

项目名称 : Sesame Robot
作者 : Dorian Todd(starphee)
开源协议 : Apache License 2.0
仓库地址: https://github.com/dorianborian/sesame-robot


目录

  1. 项目概述
  2. 业务模型分析
  3. 需求清单
  4. 系统架构设计
  5. 代码规模统计
  6. 技术栈评估
  7. 组件依赖分析
  8. [API 接口清单](#API 接口清单)
  9. 数据模型
  10. 硬件架构
  11. 迭代优化建议

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 收入渠道推断

  1. Sesame Build Kit 销售(含预烧录 Distro Board V2)
  2. PCBway 赞助合作(PCB制造)
  3. YouTube 内容变现(教程视频)
  4. 社区捐赠 / 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板型:

cpp 复制代码
// 只需修改这两个配置即可移植到不同ESP32板型
const int servoPins[8] = {1, 2, 4, 6, 8, 10, 13, 14}; // S2 Mini
#define I2C_SDA 33
#define I2C_SCL 35

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
GET /cmd `?pose=wave dance
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
json 复制代码
{
  "currentCommand": "forward",
  "currentFace": "walk",
  "networkConnected": true,
  "apIP": "192.168.4.1",
  "networkIP": "192.168.1.100"
}
POST /api/command
json 复制代码
// 运动+表情
{"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 全局状态

cpp 复制代码
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:关键设计亮点

  1. X-Macro 表情注册系统 :通过 FACE_LIST 宏实现表情的一处注册、多处自动生成引用,极大降低添加新表情的维护成本
  2. 非阻塞 pressingCheck():在动画帧间持续轮询网络请求,实现即时中断响应,避免传统 delay() 导致的控制延迟
  3. WiFi信息智能滚动:30秒无人操作后自动显示WiFi连接信息,新手友好设计
  4. 三板支持抽象层 :仅修改 servoPins[]I2C_ 定义即可在不同ESP32板型间移植
  5. 空闲眨眼系统: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

相关推荐
AI算法沐枫3 小时前
机器学习到底是什么?
人工智能·python·深度学习·机器学习·数据挖掘·大模型·#ai
ai产品老杨4 小时前
解耦异构算力:基于 Docker 与边缘计算的企业级 AI 视频管理平台架构演进(支持 GB28181/RTSP 与源码交付)
人工智能·docker·边缘计算
无极低码4 小时前
# 认知错位与能力边界:AI在编程与现实落地中的真实困境
人工智能
甲维斯4 小时前
骚操作2 !把DeepSeek接入Claude桌面版!
人工智能
高洁014 小时前
知识图谱:AI的超级大脑
人工智能·python·数据挖掘·知识图谱
Raink老师4 小时前
【AI面试临阵磨枪-62】设计基于 RAG 的内部知识库问答平台(多租户、权限、文件上传、实时更新)
人工智能·面试·职场和发展
小丶舟4 小时前
AI Agent的“localhost终结“:云端开发环境大革命
人工智能·ai编程
wechat_Neal4 小时前
座舱域控-架构基础1.1
人工智能·汽车
FserSuN4 小时前
AI时代的组织单元重构
人工智能