硬件选型与搭建:主控芯片对比、麦克风阵列与手势传感器选型

好,咱们进入第二章。这一章我打算聊聊硬件的选型与搭建。说实话,很多做智能家居的朋友,软件写得飞起,一到硬件选型就懵了。我早期也踩过不少坑,比如选了个性能过剩的芯片,结果功耗压不住;或者麦克风阵列买回来,发现驱动搞不定。

这一章,我会把主控芯片、麦克风阵列、手势传感器这三块掰开揉碎了讲。你跟着我的思路走,基本不会跑偏。

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 传感器)
  • 电池供电的设备
注意:ESP32 的 ADC 精度一般,如果你需要采集高精度的模拟信号(比如高保真音频),建议外挂一个 ADC 芯片。我曾经因为直接用 ESP32 的 ADC 采集麦克风信号,结果底噪大得离谱,后来换了 I2S 接口的麦克风才解决。

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)
  • 需要图形界面的中控设备
我的建议:如果你只是做单个传感器控制,比如一个手势开关灯,用 ESP32 就够了。但如果你要做“融合”——比如语音说“打开客厅灯”同时用手势指定亮度——那 Raspberry Pi 更合适。说白了,看你的算法复杂度。

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 都有现成的。
避坑指南:红外传感器对光线敏感。我曾经在阳光直射的窗边测试 PAJ7620,结果误触发率高达 30%。后来我加了遮光罩,并且只在光线稳定的室内使用。如果你要做户外场景,建议用 ToF。

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 做离线唤醒词检测。到时候咱们再细聊。