前言做机器人开发的朋友一定都遇到过这个痛点想给机器人加个 “闻声转头” 的功能提升交互体验但一查资料就头大 —— 传统 4-6 麦阵列方案需要懂波束成形、时延估计算法还要调几个月的参数小团队根本耗不起买现成的模块又贵得离谱动辄几百块批量生产直接劝退。最近我发现了一款堪称 “开发者福音” 的声源定位模组 —— 德宇科创 AR1105。它把所有算法都固化在了 DSP 芯片里对外只输出简单的 IO 电平信号不用写一行音频算法不用 SDK只要会读 GPIO1 天就能做出能跑的 Demo。这篇文章就从硬件准备、接线、代码编写到测试手把手教你用 AR1105 给机器人加上 360° 六向声源定位能力。一、模组核心特性为什么选它AR1105 最核心的优势就是把复杂的问题简单化。它没有追求极致的角度分辨率而是在实用性、成本和开发难度之间找到了完美的平衡点。图 1AR1105 全套硬件左上核心定位板左下3DMIC-291 三麦阵列板右AR-6LED 测试底板核心参数速览表格参数数值说明麦克风数量3 颗等边三角形布局间距 10mm定位方向6 个0°/60°/120°/180°/240°/300°每 60° 一个区间满足绝大多数机器人需求输出方式6 路 IO 高电平有效3.3V 逻辑电平直接接主控音频输出模拟 I2S 数字同步输出16kHz/16 位标准 I2S直连语音识别模块供电电压4V-6.5V兼容机器人常用 5V 电源工作电流28-31mA极低功耗不影响电池续航模组尺寸37mm×26mm半孔焊盘 排针可直接贴片工作温度-20℃~85℃工业级设计适配各种恶劣环境最适合的开发者机器人厂商想快速给产品加声源定位功能创客 / 学生做电子竞赛或课程设计不想碰复杂音频算法的嵌入式工程师二、硬件准备与接线2.1 所需材料AR1105 核心定位板 ×13DMIC-291 三麦克风阵列板 ×1官方推荐已按 10mm 间距布局好AR-6LED 测试底板 ×1可选用于快速验证功能主控板 ×1本文以 ESP32 为例STM32/Arduino 通用杜邦线若干SG90 舵机 ×1用于演示转头功能5V 电源适配器 ×12.2 核心接线说明AR1105 的接线非常简单总共只需要接电源、6 路方向 IO 和音频输出可选。AR1105 ↔ ESP32 接线表表格AR1105 引脚功能ESP32 引脚说明15V5V电源输入2GNDGND电源地30° 方向输出GPIO2正前方460° 方向输出GPIO4右前方5120° 方向输出GPIO16右后方6180° 方向输出GPIO17正后方7240° 方向输出GPIO5左后方8300° 方向输出GPIO18左前方12MIC_OUT模拟音频GPIO36可选接语音识别模块舵机 ↔ ESP32 接线表表格舵机引脚ESP32 引脚VCC5VGNDGNDSIGNALGPIO13注意如果使用官方 AR-6LED 测试底板只需将 AR1105 和 3DMIC-291 插到底板对应的针座上然后通过 USB 供电即可直接测试方向指示功能无需额外接线。三、ESP32 代码实现闻声转头代码逻辑非常简单循环读取 6 个方向 IO 的电平当检测到某一路为高电平时驱动舵机转到对应的角度。cpp运行#include Servo.h // 定义方向IO引脚 const int DIR_0 2; // 0° 正前方 const int DIR_60 4; // 60° 右前方 const int DIR_120 16; // 120° 右后方 const int DIR_180 17; // 180° 正后方 const int DIR_240 5; // 240° 左后方 const int DIR_300 18; // 300° 左前方 // 定义舵机对象和引脚 Servo headServo; const int SERVO_PIN 13; // 舵机对应角度可根据实际安装调整 const int ANGLE_0 90; // 正前方 const int ANGLE_60 150; // 右前方 const int ANGLE_120 120; // 右后方 const int ANGLE_180 0; // 正后方 const int ANGLE_240 60; // 左后方 const int ANGLE_300 30; // 左前方 void setup() { Serial.begin(115200); // 初始化方向IO为输入模式 pinMode(DIR_0, INPUT); pinMode(DIR_60, INPUT); pinMode(DIR_120, INPUT); pinMode(DIR_180, INPUT); pinMode(DIR_240, INPUT); pinMode(DIR_300, INPUT); // 初始化舵机 headServo.attach(SERVO_PIN); headServo.write(ANGLE_0); // 初始位置正前方 Serial.println(AR1105声源定位系统启动中...); delay(9000); // 等待AR1105模组启动7-9秒 Serial.println(系统启动完成等待声源...); } void loop() { int currentAngle ANGLE_0; // 检测哪个方向有声音 if (digitalRead(DIR_0) HIGH) { currentAngle ANGLE_0; Serial.println(检测到声源正前方 (0°)); } else if (digitalRead(DIR_60) HIGH) { currentAngle ANGLE_60; Serial.println(检测到声源右前方 (60°)); } else if (digitalRead(DIR_120) HIGH) { currentAngle ANGLE_120; Serial.println(检测到声源右后方 (120°)); } else if (digitalRead(DIR_180) HIGH) { currentAngle ANGLE_180; Serial.println(检测到声源正后方 (180°)); } else if (digitalRead(DIR_240) HIGH) { currentAngle ANGLE_240; Serial.println(检测到声源左后方 (240°)); } else if (digitalRead(DIR_300) HIGH) { currentAngle ANGLE_300; Serial.println(检测到声源左前方 (300°)); } // 驱动舵机转到对应角度 headServo.write(currentAngle); delay(100); // 防抖延时 }代码说明启动时必须等待 7-9 秒让 AR1105 模组完成初始化初始化时 IO1 为高电平完成后变为低电平6 个方向 IO 都是高电平有效同一时间只会有一个 IO 输出高电平舵机角度需要根据你的实际安装位置进行调整代码中加入了 100ms 的防抖延时避免频繁转动舵机四、测试与调试通电测试接好所有线路给 ESP32 和 AR1105 供电。等待约 9 秒后打开串口监视器看到 “系统启动完成” 的提示。方向测试在模组周围不同方向说话或拍手观察串口输出的方向信息同时舵机会自动转到对应的角度。常见问题排查所有方向都没反应检查电源是否接对AR1105 是否正常启动等待 9 秒以上方向不准检查麦克风是否按等边三角形布局间距是否为 10mm调整代码中的舵机角度映射误判频繁检查环境是否有强烈的混响或反射声选用误差 ±1dBFS 的数字麦克风五、不同机器人场景的扩展应用5.1 循声智能小车将舵机替换为电机驱动模块根据方向信号控制小车的左右电机转速实现 “朝声音方向行驶” 的功能。例如0°左右电机同速前进60°左电机快右电机慢右转前进300°右电机快左电机慢左转前进5.2 安防巡检机器人将方向信号与摄像头云台联动当检测到异常声音如玻璃破碎、呼救声时云台自动转向声源方向并开始录像同时触发声光告警。5.3 服务机器人将 AR1105 的音频输出接入语音识别模块如百度 AI、科大讯飞实现 “定位→转向→语音识别→应答” 的完整交互闭环。当用户在侧面呼唤时机器人先转头面向用户再进行语音交互。六、总结与展望AR1105 这款模组最大的意义就是把声源定位从 “算法工程师的专利” 变成了 “所有嵌入式开发者都能上手的工具”。它用 3 麦 6 向的极简设计解决了 90% 以上机器人场景的方向感知需求开发周期从几个月缩短到几天成本也降低了一个数量级。当然它也有局限性60° 的角度分辨率对于需要精细定位的场景还不够也没有内置降噪和消回音功能。但对于大多数机器人产品来说这些都可以通过后端的音频处理模块来弥补。未来随着硬件级 AI 的发展我们会看到更多像 AR1105 这样的 “傻瓜式” 智能模组。它们将复杂的算法封装在芯片内部对外提供简单的硬件接口让开发者能够专注于应用逻辑的创新而不是重复造轮子。如果你也在做机器人开发不妨试试这款模组相信它会给你带来惊喜。
【实战教程】3 麦 6 向零算法开发:1 天搞定机器人声源定位(附接线 + ESP32 代码)
发布时间:2026/5/29 0:26:28
前言做机器人开发的朋友一定都遇到过这个痛点想给机器人加个 “闻声转头” 的功能提升交互体验但一查资料就头大 —— 传统 4-6 麦阵列方案需要懂波束成形、时延估计算法还要调几个月的参数小团队根本耗不起买现成的模块又贵得离谱动辄几百块批量生产直接劝退。最近我发现了一款堪称 “开发者福音” 的声源定位模组 —— 德宇科创 AR1105。它把所有算法都固化在了 DSP 芯片里对外只输出简单的 IO 电平信号不用写一行音频算法不用 SDK只要会读 GPIO1 天就能做出能跑的 Demo。这篇文章就从硬件准备、接线、代码编写到测试手把手教你用 AR1105 给机器人加上 360° 六向声源定位能力。一、模组核心特性为什么选它AR1105 最核心的优势就是把复杂的问题简单化。它没有追求极致的角度分辨率而是在实用性、成本和开发难度之间找到了完美的平衡点。图 1AR1105 全套硬件左上核心定位板左下3DMIC-291 三麦阵列板右AR-6LED 测试底板核心参数速览表格参数数值说明麦克风数量3 颗等边三角形布局间距 10mm定位方向6 个0°/60°/120°/180°/240°/300°每 60° 一个区间满足绝大多数机器人需求输出方式6 路 IO 高电平有效3.3V 逻辑电平直接接主控音频输出模拟 I2S 数字同步输出16kHz/16 位标准 I2S直连语音识别模块供电电压4V-6.5V兼容机器人常用 5V 电源工作电流28-31mA极低功耗不影响电池续航模组尺寸37mm×26mm半孔焊盘 排针可直接贴片工作温度-20℃~85℃工业级设计适配各种恶劣环境最适合的开发者机器人厂商想快速给产品加声源定位功能创客 / 学生做电子竞赛或课程设计不想碰复杂音频算法的嵌入式工程师二、硬件准备与接线2.1 所需材料AR1105 核心定位板 ×13DMIC-291 三麦克风阵列板 ×1官方推荐已按 10mm 间距布局好AR-6LED 测试底板 ×1可选用于快速验证功能主控板 ×1本文以 ESP32 为例STM32/Arduino 通用杜邦线若干SG90 舵机 ×1用于演示转头功能5V 电源适配器 ×12.2 核心接线说明AR1105 的接线非常简单总共只需要接电源、6 路方向 IO 和音频输出可选。AR1105 ↔ ESP32 接线表表格AR1105 引脚功能ESP32 引脚说明15V5V电源输入2GNDGND电源地30° 方向输出GPIO2正前方460° 方向输出GPIO4右前方5120° 方向输出GPIO16右后方6180° 方向输出GPIO17正后方7240° 方向输出GPIO5左后方8300° 方向输出GPIO18左前方12MIC_OUT模拟音频GPIO36可选接语音识别模块舵机 ↔ ESP32 接线表表格舵机引脚ESP32 引脚VCC5VGNDGNDSIGNALGPIO13注意如果使用官方 AR-6LED 测试底板只需将 AR1105 和 3DMIC-291 插到底板对应的针座上然后通过 USB 供电即可直接测试方向指示功能无需额外接线。三、ESP32 代码实现闻声转头代码逻辑非常简单循环读取 6 个方向 IO 的电平当检测到某一路为高电平时驱动舵机转到对应的角度。cpp运行#include Servo.h // 定义方向IO引脚 const int DIR_0 2; // 0° 正前方 const int DIR_60 4; // 60° 右前方 const int DIR_120 16; // 120° 右后方 const int DIR_180 17; // 180° 正后方 const int DIR_240 5; // 240° 左后方 const int DIR_300 18; // 300° 左前方 // 定义舵机对象和引脚 Servo headServo; const int SERVO_PIN 13; // 舵机对应角度可根据实际安装调整 const int ANGLE_0 90; // 正前方 const int ANGLE_60 150; // 右前方 const int ANGLE_120 120; // 右后方 const int ANGLE_180 0; // 正后方 const int ANGLE_240 60; // 左后方 const int ANGLE_300 30; // 左前方 void setup() { Serial.begin(115200); // 初始化方向IO为输入模式 pinMode(DIR_0, INPUT); pinMode(DIR_60, INPUT); pinMode(DIR_120, INPUT); pinMode(DIR_180, INPUT); pinMode(DIR_240, INPUT); pinMode(DIR_300, INPUT); // 初始化舵机 headServo.attach(SERVO_PIN); headServo.write(ANGLE_0); // 初始位置正前方 Serial.println(AR1105声源定位系统启动中...); delay(9000); // 等待AR1105模组启动7-9秒 Serial.println(系统启动完成等待声源...); } void loop() { int currentAngle ANGLE_0; // 检测哪个方向有声音 if (digitalRead(DIR_0) HIGH) { currentAngle ANGLE_0; Serial.println(检测到声源正前方 (0°)); } else if (digitalRead(DIR_60) HIGH) { currentAngle ANGLE_60; Serial.println(检测到声源右前方 (60°)); } else if (digitalRead(DIR_120) HIGH) { currentAngle ANGLE_120; Serial.println(检测到声源右后方 (120°)); } else if (digitalRead(DIR_180) HIGH) { currentAngle ANGLE_180; Serial.println(检测到声源正后方 (180°)); } else if (digitalRead(DIR_240) HIGH) { currentAngle ANGLE_240; Serial.println(检测到声源左后方 (240°)); } else if (digitalRead(DIR_300) HIGH) { currentAngle ANGLE_300; Serial.println(检测到声源左前方 (300°)); } // 驱动舵机转到对应角度 headServo.write(currentAngle); delay(100); // 防抖延时 }代码说明启动时必须等待 7-9 秒让 AR1105 模组完成初始化初始化时 IO1 为高电平完成后变为低电平6 个方向 IO 都是高电平有效同一时间只会有一个 IO 输出高电平舵机角度需要根据你的实际安装位置进行调整代码中加入了 100ms 的防抖延时避免频繁转动舵机四、测试与调试通电测试接好所有线路给 ESP32 和 AR1105 供电。等待约 9 秒后打开串口监视器看到 “系统启动完成” 的提示。方向测试在模组周围不同方向说话或拍手观察串口输出的方向信息同时舵机会自动转到对应的角度。常见问题排查所有方向都没反应检查电源是否接对AR1105 是否正常启动等待 9 秒以上方向不准检查麦克风是否按等边三角形布局间距是否为 10mm调整代码中的舵机角度映射误判频繁检查环境是否有强烈的混响或反射声选用误差 ±1dBFS 的数字麦克风五、不同机器人场景的扩展应用5.1 循声智能小车将舵机替换为电机驱动模块根据方向信号控制小车的左右电机转速实现 “朝声音方向行驶” 的功能。例如0°左右电机同速前进60°左电机快右电机慢右转前进300°右电机快左电机慢左转前进5.2 安防巡检机器人将方向信号与摄像头云台联动当检测到异常声音如玻璃破碎、呼救声时云台自动转向声源方向并开始录像同时触发声光告警。5.3 服务机器人将 AR1105 的音频输出接入语音识别模块如百度 AI、科大讯飞实现 “定位→转向→语音识别→应答” 的完整交互闭环。当用户在侧面呼唤时机器人先转头面向用户再进行语音交互。六、总结与展望AR1105 这款模组最大的意义就是把声源定位从 “算法工程师的专利” 变成了 “所有嵌入式开发者都能上手的工具”。它用 3 麦 6 向的极简设计解决了 90% 以上机器人场景的方向感知需求开发周期从几个月缩短到几天成本也降低了一个数量级。当然它也有局限性60° 的角度分辨率对于需要精细定位的场景还不够也没有内置降噪和消回音功能。但对于大多数机器人产品来说这些都可以通过后端的音频处理模块来弥补。未来随着硬件级 AI 的发展我们会看到更多像 AR1105 这样的 “傻瓜式” 智能模组。它们将复杂的算法封装在芯片内部对外提供简单的硬件接口让开发者能够专注于应用逻辑的创新而不是重复造轮子。如果你也在做机器人开发不妨试试这款模组相信它会给你带来惊喜。