硬件选型与搭建:主控芯片对比、麦克风阵列与手势传感器选型
好,咱们进入第二章。这一章我打算聊聊硬件的选型与搭建。说实话,很多做智能家居的朋友,软件写得飞起,一到硬件选型就懵了。我早期也踩过不少坑,比如选了个性能过剩的芯片,结果功耗压不住;或者麦克风阵列买回来,发现驱动搞不定。
这一章,我会把主控芯片、麦克风阵列、手势传感器这三块掰开揉碎了讲。你跟着我的思路走,基本不会跑偏。
2.1 主控芯片对比:ESP32 vs Raspberry Pi
主控芯片是整个系统的“大脑”。选错了,后面全白搭。我个人习惯把方案分成两类:轻量级和重量级。
2.1.1 ESP32:轻量级首选
ESP32 是我用得最多的芯片。为什么?便宜、功耗低、自带 Wi-Fi 和蓝牙。你想想看,一个智能家居设备,如果还要外挂一个 Wi-Fi 模块,那体积和成本都上去了。ESP32 一颗搞定。
我在项目中遇到过一个问题:用 ESP32 做语音唤醒,结果发现它的 RAM 只有 520KB。跑个 FreeRTOS 再加个轻量级的语音识别库,内存就快见底了。后来我换了个思路,把语音特征提取放在 ESP32 上,识别部分扔到云端,这才跑通。
ESP32 的典型参数:
| 参数 | ESP32 |
|---|---|
| CPU | 双核 Xtensa LX6,240MHz |
| RAM | 520KB SRAM |
| Flash | 4MB ~ 16MB |
| 无线 | Wi-Fi 802.11 b/g/n + BLE 4.2 |
| 功耗 | 活跃模式约 80mA,深度睡眠 5μA |
| 价格 | 约 15 ~ 30 元 |
适合场景:
- 简单的语音命令(开灯、关窗帘)
- 手势控制(配合 ToF 传感器)
- 电池供电的设备
2.1.2 Raspberry Pi:重量级选手
Raspberry Pi 就不一样了。它本质上是一台微型电脑。跑 Linux,有完整的文件系统,可以装 Python、TensorFlow Lite。如果你要做复杂的语音识别(比如离线 NLP)或者手势识别(比如用摄像头做 3D 手势),那 Pi 是更好的选择。
我记得有一次做一个智能中控屏的项目,需要同时处理语音、手势、还有 UI 渲染。ESP32 显然扛不住。我上了 Raspberry Pi 4,4GB 内存,跑个 Node.js 后端加一个轻量级的 Web 界面,稳得很。
Raspberry Pi 4 的典型参数:
| 参数 | Raspberry Pi 4 |
|---|---|
| CPU | 四核 Cortex-A72,1.5GHz |
| RAM | 1GB / 2GB / 4GB / 8GB LPDDR4 |
| 存储 | MicroSD 卡 / USB 硬盘 |
| 无线 | Wi-Fi 802.11ac + BLE 5.0 |
| 功耗 | 约 3W ~ 7W |
| 价格 | 约 200 ~ 500 元 |
适合场景:
- 复杂的语音交互(多轮对话)
- 摄像头手势识别(MediaPipe)
- 需要图形界面的中控设备
2.2 麦克风阵列选型
语音控制的核心是麦克风。单麦克风也能用,但效果嘛……你想想看,家里开着电视,你喊一声“小爱同学”,它可能根本听不见。麦克风阵列就是为了解决这个问题的。
2.2.1 为什么需要阵列?
单个麦克风只能采集声音的幅度,无法判断方向。阵列通过多个麦克风之间的时间差,可以计算出声音的来源方向。这就是波束成形技术。
我早期做过一个项目,用单麦克风做语音唤醒,结果用户必须站在设备正前方才能识别。后来换了 4 麦阵列,哪怕人在厨房,客厅的设备也能准确捕捉到指令。
2.2.2 常见麦克风阵列方案
| 类型 | 麦克风数量 | 特点 | 推荐型号 |
|---|---|---|---|
| 线性阵列 | 2 ~ 4 | 只能判断左右方向,适合电视、音箱 | ReSpeaker 2-Mic |
| 环形阵列 | 4 ~ 8 | 360° 拾音,适合中控设备 | ReSpeaker 4-Mic / 6-Mic |
| 球形阵列 | 8 以上 | 3D 空间定位,适合专业会议 | Amazon AVS 参考设计 |
我个人推荐:对于智能家居场景,4 麦环形阵列是最平衡的选择。价格适中(约 100 ~ 200 元),驱动成熟,支持波束成形和回声消除。
- 信噪比(SNR):最好大于 60dB。低于这个值,远场语音识别会很吃力。
- 采样率:至少 16kHz。语音识别的基本要求。
- 接口:I2S 是主流,部分阵列也支持 PDM。ESP32 和 Raspberry Pi 都支持 I2S。
2.3 红外 / ToF 手势传感器选型
手势控制是语音的绝佳补充。比如你在厨房炒菜,手上全是油,喊语音助手可能不太方便,这时候挥挥手就能控制灯光或油烟机,体验感直接拉满。
2.3.1 红外手势传感器
红外传感器原理很简单:发射红外光,检测反射回来的光强变化。常见的有 APDS-9960 和 PAJ7620。
- APDS-9960:可以检测上下左右四个方向,还能检测接近和颜色。我最早用这个做手势翻页,效果还行,但距离只有 10cm 左右。
- PAJ7620:支持 9 种手势(上、下、左、右、前、后、顺时针、逆时针、挥手)。距离可以到 20cm。我建议新手从 PAJ7620 开始,库很成熟,Arduino 和 ESP32 都有现成的。
2.3.2 ToF 手势传感器
ToF(Time of Flight)传感器通过测量光飞行时间来计算距离。精度高,抗干扰能力强。代表型号是 VL53L1X。
VL53L1X 可以测量 4 米以内的距离,精度达到毫米级。你可以用它做“滑动”手势——比如手从 10cm 移动到 30cm,传感器能精确捕捉到位置变化。
我记得有一次做智能灯控,用户希望用手势控制灯的亮度:手靠近灯变亮,手远离灯变暗。用 VL53L1X 实现这个功能,代码不超过 50 行。
VL53L1X 的典型参数:
| 参数 | VL53L1X |
|---|---|
| 测距范围 | 4cm ~ 400cm |
| 精度 | ±1mm(近距离) |
| 接口 | I2C |
| 功耗 | 活跃模式 20mA,待机 5μA |
| 价格 | 约 30 ~ 50 元 |
- 简单手势(左右挥动):用 PAJ7620,便宜且库丰富。
- 连续距离控制(调光、调音量):用 VL53L1X,精度高。
- 复杂 3D 手势(画圈、抓取):建议上摄像头方案(如 MediaPipe + Raspberry Pi)。
2.4 搭建实战:一个最小系统
说了这么多,咱们来搭一个最小系统。我选的是 ESP32 + ReSpeaker 4-Mic 阵列 + PAJ7620 手势传感器。这套组合成本不到 150 元,但已经可以实现“语音唤醒 + 手势控制”的融合。
接线示意:
ESP32 ReSpeaker 4-Mic
3.3V -----> VCC
GND -----> GND
GPIO32 -----> WS (I2S 帧时钟)
GPIO33 -----> BCK (I2S 位时钟)
GPIO25 -----> DIN (I2S 数据)
ESP32 PAJ7620
3.3V -----> VCC
GND -----> GND
GPIO21 -----> SDA (I2C 数据)
GPIO22 -----> SCL (I2C 时钟)
嗯,这里要注意:ReSpeaker 4-Mic 的 I2S 引脚是固定的,不同版本可能不一样。我建议你买之前先查一下官方文档,或者直接买带 ESP32 的集成板(比如 XIAO ESP32S3 Sense),省去接线的麻烦。
好了,硬件选型与搭建就聊到这里。下一章我会讲语音识别的具体实现,包括如何用 ESP32 做离线唤醒词检测。到时候咱们再细聊。