只用3个数字麦,如何做到360°六向无缝追踪?拆解AR1105的“三角定位“黑科技
德宇科创 AR1105 用 3 颗麦克风在等边三角形上合成三组心形指向,靠比能量高低实现 360° 六向定位。不需要 FFT、不需要矩阵求逆、不需要 SDK——方向信息通过 6 根 IO 直接输出。本文拆解这套"反直觉"方案背后的物理原理和工程取舍。
一、三颗麦凭什么 360°?
在声源定位(DOA)领域,主流方案都需要堆麦数:
方法 | 典型麦数 | 角分辨率 |
TDOA(到达时间差) | 4+ | 取决于阵元间距 |
波束成形(Beamforming) | 4~16 | 5°~15° |
子空间方法(MUSIC) | 6+ | 1°~5° |
所以看到"3 麦覆盖 360°",第一反应是质疑——如果用的是 TDOA 方法,这确实不行。在 10mm 间距、16kHz 采样率下,相邻麦最大 TDOA 仅 29μs,不到半个采样点,互相关根本不可靠。人声带宽窄、室内多径反射,更是雪上加霜。
AR1105 换了个赛道:不用 TDOA,用能量对比。
二、核心原理:心形指向性 + 三组判决
2.1 心形指向性
一个标准心形响应:R(θ) = 0.5 + 0.5·cos(θ − φ)
背向零点(θ − φ = 180° 时 R=0)赋予它天然的方向选择性——"正面能听到,背面听不到"。
2.2 三麦 = 三心形
3 颗麦放在等边三角形的三个顶点上(间距 10mm),每对麦合成一个心形指向。三组偶极子对 = 三个心形,主轴各差 120°:
心形 #0(M₀-M₁):主轴 90° 心形 #1(M₁-M₂):主轴 330° 心形 #2(M₂-M₀):主轴 210°
三心形交叠,响应交叉点恰好每 60° 一次,自然切出 6 个扇区:0°、60°、120°、180°、240°、300°。
2.3 判决 = 比大小
DSP 算出三通道能量 (E₀, E₁, E₂),直接 argmax——谁的能量大就输出哪个方向。不涉及 FFT、不涉及矩阵求逆、不涉及空间谱搜索。纯标量运算,最低端 DSP 都能跑。
为什么是离散 60° 而不是连续角度?
- 算力——比大小 vs 反三角函数,天差地别
- SNR——室内环境中连续角度的实际误差可达 ±20°,与其给一个"27.3°"的精确谎言,不如给一个"大概在右边"的诚实答案
- 应用——舵机转头、摄像头预置位切换,6 扇区 = 6 预置位,刚好够用
三、10mm 间距的"甜点"
规格书严格要求 10mm ±0.2mm,不是随便定的。在人声核心频段(500Hz~2kHz):
频率 | 波长 λ | d/λ | 判决可靠性 |
500Hz | 680mm | 0.0147 | 差信号强度足够(依赖幅度比而非相位比) |
2kHz | 170mm | 0.059 | 远低于空间混叠阈值 0.5 |
d/λ 始终在 0.014~0.06 之间——既有足够差信号强度,又不触发空间混叠。缩小到 5mm 则 SNR 降 6dB,拉大到 20mm 则高频混叠。10mm 是精心设计的甜点。
另一个关键细节:必须用底部进声孔(Bottom-Port)封装。底部进声孔通过 PCB 开孔进声,三颗麦的拾音面天然共面(误差 <0.1mm)。心形合成的零方向精度依赖严格的声学共面,这一点比看起来重要得多。
四、DSP 流水线(三级)
3×PDM(714kHz) → CIC×64↓ → 3路PCM(~11.1k) → Cardioid BF(3 pairs) │ ┌───────────────────────────────┤ ▼ ▼ Energy Compare Audio Mux → MIC_OUT(模拟) │ │ ▼ ▼ argmax{E₀,E₁,E₂} I2S TX(16k/16b) │ ▼ 6× Direction IO (3.3V)714kHz PDM 时钟的巧思:比标准 3.072MHz 低了 4.3 倍,单颗麦 PDM 功耗从 1.2mW 降到 0.3mW。64 倍降采样后约 11.1kHz,奈奎斯特 5.5kHz 覆盖人声核心信息——恰好够用,绝不多耗一毫瓦。
启动 7~9 秒远超 MEMS 麦的 300ms 稳定时间,说明内部做了大量校准:boot 加载、DC offset 自适应、三通道增益匹配、判决门限自适应。
五、对比传统方案:不是降级,是换维
维度 | 6 麦 UCA + MVDR | 3 麦心形判决(AR1105) |
核心运算 | FFT + 矩阵求逆 + 谱搜索 | 标量乘加 + 比大小 |
算力 | 5~10 MOPS/frame | < 0.5 MOPS/frame |
功耗 | 150~800mW | ~150mW |
角分辨率 | 5°~15° 连续 | 60° 离散 |
研发 | 算法 2~3 人月 | 零 |
生产标定 | 必须(消音室) | 不需要 |
关键在于:对于 60° 精度需求,3 麦方案是更优解。你去隔壁城市骑共享单车 15 分钟,不会因为自行车比飞机慢就说它是"降级方案"。
六、方案边界:能做什么 & 不能做什么
✅ 能做到:
- 单声源最强方向判定(安静~中等噪声,准确率 >95%)
- 实时方向刷新(延迟 10~30ms)
- 即插即用,零开发,上电 9 秒后 IO 直出方向
❌ 做不到:
限制 | 原因 |
多声源同时定位 | 只输出最强声源方向,两人同时说话会乱 |
≤15° 高精度 | 心形响应在扇区交接处变化平缓 |
声源距离估计 | 纯方向方案 |
远距离(>5m) | SNR 不足导致判决抖动 |
强混响环境 | 多径反射让能量对比失效 |
⚠️AR1105 永远只输出最强声源方向——这是心形能量对比方法的固有限制,不是 bug。
七、这套方案最值钱的东西
不是技术有多高深(心形波束是教科书第 3 章的内容),而是三个"做减法"的工程决策:
- 不做降噪/消回音/波束成形。专心做好一件事——告诉你声音从哪来。NS/AEC/BF 留给下游系统按需处理,反而更灵活,同时极大压缩了 BOM 和功耗。
- IO 直出,不走总线。不用 I2C/SPI/UART,6 根 IO 直接输出方向。不需要寄存器、不需要协议解析、示波器一量就知道对不对——从 Cortex-M0 到 Arduino 都能用。
- 60° 粗粒度,不追求精度。与其在真实环境中输出一个误差 ±20° 的"精确角度",不如老老实实给一个置信度高的扇区。实用主义压倒完美主义。
八、写在最后
做嵌入式产品,我们太容易被"参数焦虑"绑架——别人 6 麦我就要 8 麦,别人 10° 我就要 5°。但用户感知不到这些差异,他们只在乎舵机能不能及时转对方向。真正能被感知的差异——成本、功耗、开发周期——反而常被忽略。
用三颗麦、做心形对比、出六个扇区、走六根 IO——AR1105 把"好钢用在刀刃上"发挥到了极致。如果你的下一个项目恰好落在它的边界内,3 颗麦,真的就够用了。
📋 声明:本文基于德宇科创公开规格书撰写,部分 DSP 内部实现为基于接口参数和已知信号处理原理的合理推断,不代表厂商官方实现细节。具体产品信息以官方最新资料为准。详细咨询请私信公众号后台,期待与您交流。
