亲子 DIY 互动机器人 Little Timmy 制作全指南


JAYJAY
转载
发布时间: 2025-09-29 11:38:33 | 阅读数 0收藏数 0评论数 0
封面
我想给儿子做一个玩具,一个能轻松互动的玩具,所以我构思了一款具备面部追踪功能的机器人 —— 它既能通过触摸与儿子互动,还能表达情绪。我在 3D 设计方面的知识储备不多,因此我从 Thingiverse 平台上找到了一个设计方案,借助 Tinkercad(对应设计链接:https://www.tinkercad.com/things/1Qq7jjOXoHh,即 “Little Timmy 头部” 设计;https://www.tinkercad.com/things/hJjcvy2X9Oy,即 “Little Timmy 身体” 设计)对其进行适配,以满足我的需求。
1

硬件清单与准备指南

一、核心电子元件

  1. 树莓派 3(Raspberry Pi 3)
  2. 功能:主控单元,运行面部追踪算法和交互逻辑。
  3. 配置建议:安装最新版 Raspberry Pi OS(推荐 64 位版本),通过sudo raspi-config启用摄像头接口12
  4. 扩展:建议配备至少 16GB microSD 卡(Class 10 以上)和 5V/2.5A 电源适配器。
  5. 树莓派摄像头(Raspberry Pi Camera)
  6. 型号:官方 V2 摄像头(8MP)或 CSI 接口兼容摄像头。
  7. 连接:将柔性排线金属面朝 HDMI 接口插入树莓派 CSI 插槽,确保卡扣固定11
  8. 测试:在终端运行libcamera-hello验证摄像头工作状态11
  9. Arduino Nano V3.0(ATmega328P)
  10. 驱动安装:
  11. Windows:从WCH 官网下载 CH340G 驱动,安装后设备管理器中会识别为USB Serial Port (COMx)16
  12. macOS/Linux:系统自动识别,若权限不足可运行sudo chmod a+rw /dev/ttyUSB015
  13. 舵机(SG90 × 2)
  14. 控制原理:通过 PWM 信号调节角度(0.5ms-2.5ms 对应 0°-180°),周期 20ms5
  15. 接线:信号线接 Arduino 数字引脚(如 D9、D10),电源线(红色)接 5V 独立电源,地线(棕色)与 Arduino 共地23
  16. OLED 屏幕(128x64 像素 × 2)
  17. 驱动库:安装 Adafruit SSD1306 库(通过 Arduino 库管理器搜索 “Adafruit SSD1306”)26
  18. 接线(I2C 模式):


  1. 触摸传感器
  2. 型号:推荐 TTP223 电容式触摸模块。
  3. 接线:信号线接 Arduino 数字引脚(如 D2),电源线(VCC)接 5V,地线接 GND27
  4. 蜂鸣器
  5. 接线:正极接 Arduino 数字引脚(如 D8),负极接 GND,需串联 220Ω 电阻限流。


2

工具与耗材

  1. 杜邦线(F/F)
  2. 类型:公对公(Male-to-Male)用于连接开发板与传感器,建议准备至少 20 根(10cm/20cm 各 10 根)9
  3. 质量建议:选择带屏蔽层的线材以减少干扰,特别是舵机信号线9
  4. Arduino 扩展板(Shield)
  5. 功能:整合舵机、OLED、触摸传感器等接口,简化接线。
  6. 推荐型号:兼容 Arduino Nano 的 Stackable Shield 或自定义 3D 打印支架。
  7. 3D 打印部件
  8. 设计资源:
  9. 头部支架:在 Thingiverse 搜索 “Little Timmy Head Mount”22
  10. 身体框架:参考项目 “Otto DIY Robot” 的开源 STL 文件(Hackaday 链接2
  11. 打印参数:层高 0.2mm,填充率 20%,使用 PLA 材料。


3

组装步骤

首先,需将手臂、手部、腿部和脚部组装起来。我使用了家里现有的小螺丝进行固定,当然也可以用胶水替代。

第二步,安装舵机以实现头部的平移(pan)和倾斜(tilt)功能。其中一个舵机安装在身体内部,另一个则安装在颈部。

我用胶水固定了 LCD 眼睛、触摸传感器、摄像头和蜂鸣器。不过我的计划是,未来会修改设计,让这些部件无需胶水也能妥善安装。


4

电子连接说明

为方便接线,我使用了一块 Arduino Nano 扩展板(Shield)。

具体连接方案如下:

  1. D7 引脚 → 触摸传感器
  2. D4 引脚 → X 轴舵机
  3. D5 引脚 → Y 轴舵机
  4. D12 引脚 → 蜂鸣器

两个 OLED 屏幕共用以下引脚:

  1. SDA(串行数据)→ A4 引脚
  2. SCL(串行时钟)→ A5 引脚

Arduino 与树莓派通过 USB 线连接。

连接注意事项

  1. 接线顺序:建议先连接地线(GND),再连接电源线(VCC),最后连接信号线,避免静电损坏元件。
  2. OLED 共线:由于两个 OLED 共用 I2C 总线,需确保两者的 I2C 地址不同(可通过屏幕背面的跳帽调整,默认通常为 0x3C 和 0x3D),避免通信冲突。
  3. USB 连接:Arduino 与树莓派连接后,需在树莓派中确认串口设备(通常为/dev/ttyUSB0/dev/ttyACM0),并通过ls -l /dev/tty*命令验证连接状态。


5

代码实现说明

为实现面部追踪功能,我在树莓派上使用了 OpenCV 库。我修改了一个从 GitHub 上找到的示例程序,让树莓派能够向 Arduino 发送指令,再由 Arduino 控制舵机、传感器和眼睛(屏幕)。

编写这个玩具的代码需要准备以下工具:

  1. Arduino IDE(用于编写 Arduino 代码)
  2. 装有树莓派系统(Raspbian)、OpenCV 库和 Python 的树莓派

你可以在我的 GitHub 仓库(https://github.com/bhm93/littleTimmy)中找到 Arduino 代码和树莓派的 Python 代码。

若要激活面部追踪功能,需在树莓派上运行face-track-arduino.py程序。

INO
FGJHJJ1JPIO13DB.ino
7.78KB
PR...
FQUCXI6JPIO13DI.properties
158B
阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载
pdf下载 举报