手搓一台ESP32 AI智能语音小车(一):硬件架构与原理深度解析 | Datawhale组队学习

94 阅读5分钟

前言

在物联网(IoT)与人工智能(AI)飞速发展的今天,拥有一台属于自己的AI机器人是很多开发者的梦想。最近,我参加了 Datawhale AI + IOT 组队学习,开始着手制作 WhaleBot —— 一款基于 ESP32-S3 的 AI 智能语音小车。

这就好比从零开始打造钢铁侠的战衣,虽然不仅是敲代码,还需要拿烙铁、看电路,但这正是嵌入式开发的魅力所在。本文将作为系列的第一篇,结合 WhaleBot 的原理图,带大家深入了解这台小车的“五脏六腑”,并完成基础的硬件认知与搭建。

硬件介绍:WhaleBot 的“身体构造”

要让小车跑起来、听得懂话、看得见路,离不开强大的硬件支持。通过分析 WhaleBot原理图,我们可以将整个系统划分为以下几个核心模块:

1. 核心大脑:ESP32-S3-DevKitC

整个小车的控制中心是一块 ESP32-S3 开发板。

  • 为什么选它? ESP32-S3 不仅支持 Wi-Fi 和蓝牙 5 (LE),还针对 AI 加速进行了优化(支持向量指令),非常适合处理本地简单的神经网络运算(如图像识别)。
  • 引脚丰富: 原理图中可以看到,大量的 IO 口被引出用于控制电机、舵机和读取传感器数据。

2. 听觉系统:ASRPRO 语音模块

为了实现“动口不动手”,小车搭载了 ASRPRO 离线语音识别模块。

  • 工作原理: 它通过串口(UART)与主控 ESP32 通信。原理图中显示,ASRPRO 的 TXRX 分别连接到了 ESP32 的通信引脚。
  • 优势: 离线识别响应速度极快,不需要联网即可处理“前进”、“左转”、“跳舞”等指令,保护隐私且低延迟。
  • 音频输出: 原理图右下角展示了 +SPK-SPK 接口,这说明它支持外接扬声器,可以给小车一张“嘴巴”,进行语音播报。

3. 运动神经:TB6612 电机驱动

ESP32 的 GPIO 输出电流很小,带不动电机,所以需要驱动芯片。原理图中使用了 TB6612 (U3 等位置)。

  • 配置: 从原理图的 FL-A01, FR-B01 等标识可以看出,小车采用的是四轮驱动(通常配合麦克纳姆轮实现全向移动)。
  • 控制逻辑: ESP32 通过 PWM 引脚(如 PWMA)控制速度,通过逻辑引脚(AIN1, AIN2 等)控制方向。相比老旧的 L298N,TB6612 体积更小、效率更高、发热更低。

4. 能量中心:电源管理系统

电源是电路的血液。原理图左上角展示了完整的电源树:

  • 输入: DC-005 接口支持 12V 电压输入(通常来自锂电池组)。

  • 保护: 设有 F1 保险丝和 SW1 开关,以及防反接二极管 D2,防止电源接反烧毁电路。

  • 降压:

    • 12V -> 5V: 经过 U7B 稳压芯片,为舵机和部分传感器供电。
    • 5V -> 3.3V: 经过 H7B 稳压芯片,为 ESP32 主控供电(ESP32 是 3.3V 逻辑电平,切记不可直连 5V)。

5. 拓展外设

原理图还预留了丰富的接口:

  • 舵机接口 (S1-S5): 用于控制机械臂或云台。
  • I2C 接口: 可接 OLED 屏幕显示 IP 地址或表情。
  • 超声波/温湿度接口: 用于避障和环境感知。

功能

基于上述硬件,我们的 WhaleBot 最终将实现以下炫酷功能:

  1. 全向移动: 配合麦克纳姆轮,实现前后左右平移及旋转。
  2. 离线语音交互: 呼叫“小鲸小鲸”唤醒,通过语音指令控制小车运动或控制机械臂。
  3. 视觉巡线/避障: 利用 ESP32-S3 的摄像头进行简单的图像处理(后续章节实现)。
  4. 手机 APP/Web 控制: 通过 Wi-Fi 建立连接,实现远程图传与控制。

实现:点亮你的第一盏灯

万事开头难,硬件组装完成后,我们先进行一个最基础的测试,确保环境搭建成功且主控板正常工作。

1. 硬件组装

IMG_20260124_001410.jpg

按照 PCB 丝印,将 ESP32 开发板插到底板上,连接好电机线和电池。注意:上电前务必检查正负极,防止“炸机”!

2. 软件环境搭建

我们将使用 Arduino IDE 进行开发(也可以选择 PlatformIO):

  1. 下载并安装 Arduino IDE。
  2. 在“首选项”中添加 ESP32 开发板管理器地址:https://espressif.github.io/arduino-esp32/package_esp32_index.json
  3. 在“开发板管理器”中搜索并安装 esp32 by Espressif Systems。
  4. 选择开发板型号为 ESP32S3 Dev Module

3. Hello World (点灯测试)

ESP32-S3 开发板上通常板载了一颗 LED(通常是 GPIO 2 或 48,视具体板子而定,WhaleBot 核心板一般使用 GPIO 2)。

我们编写一个简单的 Blink 程序:

// 定义LED引脚,根据你的原理图或实物确认,WhaleBot常用IO2
#define LED_PIN 2 

void setup() {
  // 初始化串口,用于调试
  Serial.begin(115200);
  // 设置LED引脚为输出模式
  pinMode(LED_PIN, OUTPUT);
  Serial.println("WhaleBot Hardware Init Success!");
}

void loop() {
  digitalWrite(LED_PIN, HIGH);  // 点亮
  Serial.println("Light ON");
  delay(1000);                  // 等待1秒
  digitalWrite(LED_PIN, LOW);   // 熄灭
  Serial.println("Light OFF");
  delay(1000);                  // 等待1秒
}

4. 烧录与验证

  1. 用 Type-C 数据线将 ESP32 连接电脑。
  2. 选择对应的端口(Port)。
  3. 点击上传(Upload)。
  4. 观察开发板上的 LED 是否闪烁,并打开“串口监视器”查看是否打印 “Light ON/OFF”。

如果灯亮了,恭喜你,WhaleBot 的“心脏”已经开始跳动了!

总结

通过分析原理图,我们不仅搞清楚了 WhaleBot 的四肢(电机)、大脑(ESP32)和耳朵(ASRPRO)是如何连接的,还成功搭建了开发环境并完成了第一次下载。如下思维导图:

task1.png

硬件是软件的载体,只有充分理解了原理图中的电源分配和 IO 映射,后续编写电机驱动和语音控制代码时才能得心应手。

下一篇预告: 我们将让 WhaleBot 动起来,通过代码驱动 TB6612 控制电机,并尝试让它听懂我们的语音指令!


参考资料:
[1] Datawhale AI + IOT 开源学习资料