前言
在物联网(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 的
TX和RX分别连接到了 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)。
- 12V -> 5V: 经过
5. 拓展外设
原理图还预留了丰富的接口:
- 舵机接口 (S1-S5): 用于控制机械臂或云台。
- I2C 接口: 可接 OLED 屏幕显示 IP 地址或表情。
- 超声波/温湿度接口: 用于避障和环境感知。
功能
基于上述硬件,我们的 WhaleBot 最终将实现以下炫酷功能:
- 全向移动: 配合麦克纳姆轮,实现前后左右平移及旋转。
- 离线语音交互: 呼叫“小鲸小鲸”唤醒,通过语音指令控制小车运动或控制机械臂。
- 视觉巡线/避障: 利用 ESP32-S3 的摄像头进行简单的图像处理(后续章节实现)。
- 手机 APP/Web 控制: 通过 Wi-Fi 建立连接,实现远程图传与控制。
实现:点亮你的第一盏灯
万事开头难,硬件组装完成后,我们先进行一个最基础的测试,确保环境搭建成功且主控板正常工作。
1. 硬件组装
按照 PCB 丝印,将 ESP32 开发板插到底板上,连接好电机线和电池。注意:上电前务必检查正负极,防止“炸机”!
2. 软件环境搭建
我们将使用 Arduino IDE 进行开发(也可以选择 PlatformIO):
- 下载并安装 Arduino IDE。
- 在“首选项”中添加 ESP32 开发板管理器地址:
https://espressif.github.io/arduino-esp32/package_esp32_index.json - 在“开发板管理器”中搜索并安装
esp32by Espressif Systems。 - 选择开发板型号为
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. 烧录与验证
- 用 Type-C 数据线将 ESP32 连接电脑。
- 选择对应的端口(Port)。
- 点击上传(Upload)。
- 观察开发板上的 LED 是否闪烁,并打开“串口监视器”查看是否打印 “Light ON/OFF”。
如果灯亮了,恭喜你,WhaleBot 的“心脏”已经开始跳动了!
总结
通过分析原理图,我们不仅搞清楚了 WhaleBot 的四肢(电机)、大脑(ESP32)和耳朵(ASRPRO)是如何连接的,还成功搭建了开发环境并完成了第一次下载。如下思维导图:
硬件是软件的载体,只有充分理解了原理图中的电源分配和 IO 映射,后续编写电机驱动和语音控制代码时才能得心应手。
下一篇预告: 我们将让 WhaleBot 动起来,通过代码驱动 TB6612 控制电机,并尝试让它听懂我们的语音指令!
参考资料:
[1] Datawhale AI + IOT 开源学习资料