当前位置: 首页 > news >正文

从 0 到 1 教你用 AR1105 做声源跟随智能小车,3 天搞定毕设 / 创客项目

前言

每年到了毕设和创客大赛季,后台都会收到很多学生朋友的提问:“想做一个能跟着声音走的智能小车,有没有简单易上手的方案?”

说实话,声源跟随小车看似简单,但传统实现方式门槛极高:需要 4-6 颗麦克风组成阵列,移植复杂的 TDOA 算法,还要花大量时间调参校准。对于没有专业声学和算法基础的学生来说,光是搞定声源定位这一个功能,就要耗费半个月以上的时间,最后还可能因为效果太差影响整个项目。

直到我接触到了AR1105 3 麦六向定位模组,才发现原来声源跟随可以这么简单。不需要懂任何声学原理,不需要写一行算法代码,只需要会用单片机读写 IO 口,就能在 3 天内做出一个稳定可用的声源跟随小车。

本文将从硬件选型、电路连接、代码编写到调试优化,手把手教你从零开始制作一款声源跟随智能小车,全程无坑,所有代码可直接复制使用,特别适合毕设、课程设计和创客比赛项目。

一、方案选型:为什么 AR1105 是学生党的最佳选择?

在做这个项目之前,我也调研了市面上常见的几种声源定位方案,最终选择了 AR1105,核心原因就是它完美匹配了学生党 “低成本、易上手、开发快” 的需求:

表格

方案类型开发难度开发周期硬件成本定位效果
传统 4 麦 + 软件算法极高15-30 天100-200 元一般,量产一致性差
成品语音识别模块中等7-10 天50-80 元只能识别特定指令,无法定位方向
AR1105 3 麦模组极低1-3 天30-50 元六向定位,稳定可靠

AR1105 最香的地方在于,它把所有复杂的声学和算法问题都封装在了模组内部,对外只提供 6 个简单的 IO 口。哪个方向有声音,对应的 IO 口就会输出高电平。对于我们来说,使用它就像使用一个普通的按键传感器一样简单。

二、硬件准备清单

制作这款声源跟随小车,你只需要准备以下这些常见的硬件材料,总成本不到 150 元:

表格

器件名称型号 / 规格数量备注
主控板STM32F103C8T6 最小系统板1 块也可以用 51 单片机、Arduino 等
声源定位模组AR11051 个含 3 颗数字麦克风
电机驱动模块L298N 或 TB66121 块TB6612 体积更小,功耗更低
直流减速电机3V-6V,带编码器可选2 个普通减速电机即可
小车底盘两轮差速底盘1 套含轮子、电池盒
锂电池18650 锂电池 2 节(7.4V)2 节也可以用 3 节 AA 电池
杜邦线公对母、母对母若干
其他开关、螺丝、热熔胶若干

三、硬件连接教程

整个电路连接非常简单,只需要按照下表将各个模块对应连接起来即可,不需要任何复杂的外围电路。

1. 整体连接框图

plaintext

锂电池 → 开关 → 电机驱动模块电源输入 电机驱动模块5V输出 → STM32最小系统板5V引脚 电机驱动模块5V输出 → AR1105模组第1脚(+5V) STM32 PB0-PB5 → AR1105第3-8脚(方向IO) STM32 PA0-PA3 → 电机驱动模块IN1-IN4 电机驱动模块OUT1-OUT4 → 左右两个电机

2. AR1105 与 STM32 引脚对应表

这是最核心的连接部分,一定要接对:

表格

AR1105 引脚功能STM32 引脚
1+5V 电源输入5V
2GNDGND
30° 方向输出PB0
460° 方向输出PB1
5120° 方向输出PB2
6180° 方向输出PB3
7240° 方向输出PB4
8300° 方向输出PB5

重要提示

  • AR1105 的电源必须是稳定的 5V,电压低于 4V 会导致工作异常
  • 所有模块的 GND 必须连接在一起,否则会出现电平识别错误
  • 数字麦克风不需要额外供电,由 AR1105 第 19 脚自动供电

3. 麦克风安装注意事项

为了保证最好的定位效果,麦克风的安装一定要遵循以下规则:

  1. 三颗麦克风按等边三角形排列,拾音孔中心间距精确 10mm
  2. 麦克风拾音孔朝上,安装在小车顶部的前端位置
  3. 麦克风周围不要有任何遮挡物,远离电机和车轮的振动源
  4. 可以用热熔胶将麦克风固定在 PCB 板上,确保安装牢固

四、软件代码编写:50 行代码搞定声源跟随

AR1105 的软件开发极其简单,整个核心逻辑只需要 50 行代码就能实现。以下是基于 STM32F103 的完整代码,可直接复制使用。

1. 引脚定义与初始化

c

运行

#include "stm32f10x.h" #include "delay.h" // 方向IO定义 #define DIR_PORT GPIOB #define DIR_0 GPIO_Pin_0 #define DIR_60 GPIO_Pin_1 #define DIR_120 GPIO_Pin_2 #define DIR_180 GPIO_Pin_3 #define DIR_240 GPIO_Pin_4 #define DIR_300 GPIO_Pin_5 // 电机控制IO定义 #define MOTOR_PORT GPIOA #define IN1 GPIO_Pin_0 #define IN2 GPIO_Pin_1 #define IN3 GPIO_Pin_2 #define IN4 GPIO_Pin_3 // 初始化所有IO void Init_ALL(void) { GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE); // 方向IO初始化(浮空输入) GPIO_InitStruct.GPIO_Pin = DIR_0|DIR_60|DIR_120|DIR_180|DIR_240|DIR_300; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(DIR_PORT, &GPIO_InitStruct); // 电机IO初始化(推挽输出) GPIO_InitStruct.GPIO_Pin = IN1|IN2|IN3|IN4; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(MOTOR_PORT, &GPIO_InitStruct); Delay_Init(); }

2. 电机控制函数

c

运行

// 小车前进 void Car_Forward(void) { GPIO_SetBits(MOTOR_PORT, IN1); GPIO_ResetBits(MOTOR_PORT, IN2); GPIO_SetBits(MOTOR_PORT, IN3); GPIO_ResetBits(MOTOR_PORT, IN4); } // 小车左转 void Car_Left(void) { GPIO_ResetBits(MOTOR_PORT, IN1); GPIO_ResetBits(MOTOR_PORT, IN2); GPIO_SetBits(MOTOR_PORT, IN3); GPIO_ResetBits(MOTOR_PORT, IN4); } // 小车右转 void Car_Right(void) { GPIO_SetBits(MOTOR_PORT, IN1); GPIO_ResetBits(MOTOR_PORT, IN2); GPIO_ResetBits(MOTOR_PORT, IN3); GPIO_ResetBits(MOTOR_PORT, IN4); } // 小车停止 void Car_Stop(void) { GPIO_ResetBits(MOTOR_PORT, IN1|IN2|IN3|IN4); }

3. 主函数:声源跟随核心逻辑

c

运行

int main(void) { uint8_t dir; Init_ALL(); while(1) { // 读取声源方向 if(GPIO_ReadInputDataBit(DIR_PORT, DIR_0)) dir = 0; else if(GPIO_ReadInputDataBit(DIR_PORT, DIR_60)) dir = 60; else if(GPIO_ReadInputDataBit(DIR_PORT, DIR_120)) dir = 120; else if(GPIO_ReadInputDataBit(DIR_PORT, DIR_180)) dir = 180; else if(GPIO_ReadInputDataBit(DIR_PORT, DIR_240)) dir = 240; else if(GPIO_ReadInputDataBit(DIR_PORT, DIR_300)) dir = 300; else dir = 0xFF; // 根据方向控制小车运动 switch(dir) { case 0: Car_Forward(); break; // 正前方有声音,前进 case 60: Car_Right(); break; // 右前方有声音,右转 case 120: Car_Right(); Delay_Ms(200); Car_Forward(); break; case 240: Car_Left(); Delay_Ms(200); Car_Forward(); break; case 300: Car_Left(); break; // 左前方有声音,左转 default: Car_Stop(); break; // 无声音,停止 } Delay_Ms(50); } }

4. 代码说明

  • 整个代码没有任何复杂的算法,只是简单地读取 IO 口电平,然后根据电平状态控制电机转动
  • 我只实现了最基础的跟随逻辑,你可以根据自己的需求进行扩展,比如增加调速功能、避障功能等
  • 代码中的延时时间可以根据实际情况调整,以获得最流畅的跟随效果

五、调试与优化指南

代码烧录完成后,你就可以开始调试你的声源跟随小车了。以下是我总结的几个调试技巧和常见问题的解决方法:

1. 基础功能测试

  • 先不要安装电机,只给 AR1105 和 STM32 供电
  • 分别在 6 个方向拍手,观察对应的 IO 口是否会输出高电平(可以用万用表测量)
  • 如果所有方向都能正常响应,说明 AR1105 工作正常,可以安装电机进行下一步调试

2. 跟随效果优化

  • 如果小车转向不灵敏,可以适当减小延时时间
  • 如果小车频繁抖动,可以增加一个简单的防抖逻辑:只有当同一个方向连续检测到 2-3 次声音时,才执行转向操作
  • 如果小车在某个方向的跟随效果不好,检查一下该方向的麦克风是否被遮挡,或者安装是否牢固

3. 常见问题解决

  • 问题 1:所有方向都没有反应解决方法:检查电源是否正常,GND 是否连接正确,AR1105 引脚是否接反

  • 问题 2:只有个别方向有反应解决方法:检查对应方向的麦克风是否损坏,焊接是否牢固,拾音孔是否被堵塞

  • 问题 3:定位不准确,频繁误判解决方法:检查麦克风间距是否严格为 10mm,是否有振动源靠近麦克风,电源是否有噪声

六、项目扩展思路

这个基础版的声源跟随小车已经可以满足毕设和创客比赛的基本要求了。如果你想让你的项目更出彩,可以尝试以下几个扩展方向:

  1. 增加语音识别功能:在后端加上一个 LD3320 语音识别模块,让小车不仅能跟着声音走,还能听懂你的指令
  2. 增加避障功能:加上一个超声波传感器,让小车在跟随声音的同时,能够自动避开障碍物
  3. 增加蓝牙遥控功能:加上一个 HC-05 蓝牙模块,用手机 APP 控制小车的运动
  4. 增加 LED 指示灯:在每个方向加上一个 LED 灯,当检测到该方向有声音时,对应的 LED 灯点亮
  5. 升级为全向移动小车:使用麦克纳姆轮底盘,实现更灵活的运动

结语

整个项目从硬件组装到代码调试,我只用了 3 天时间就完成了,最终的跟随效果非常好:在安静的室内,3 米内可以准确跟随声音来源,转向流畅自然。

AR1105 这款模组真的是学生党的福音,它把原本需要专业知识才能实现的声源定位功能,变成了一个像按键一样简单易用的传感器。它让我们不用再在复杂的算法上浪费时间,可以把更多的精力放在项目的创意和功能实现上。

如果你正在为毕设或创客项目发愁,不妨试试这个方案。相信我,它一定会让你事半功倍。如果在制作过程中遇到任何问题,欢迎在评论区留言,我会尽力为你解答。

http://www.jsqmd.com/news/995364/

相关文章:

  • 遥感图像污水处理设施识别分割数据集labelme格式1878张3类别
  • 2026年国内企业工控自动化推广服务商甄选指南:5家专业服务机构评测 - GEO优化
  • AP 与 BP:移动通信芯片架构深度解析
  • D3keyHelper:暗黑破坏神3终极技能自动化配置指南
  • 2026年中药材种植品牌全景测评:哪些企业值得关注? - 优质品牌商家
  • 2026年工程机械推广服务商真实测评排名 - GEO优化
  • 变分联合嵌入(VJE)框架:自监督学习中的概率建模与不确定性量化
  • ComfyUI-LTXVideo终极指南:零基础掌握AI视频生成黑科技
  • RouterOS 6.48.6 实战部署:从零构建多线负载均衡网关
  • PCA8538 LCD驱动芯片深度解析:从电荷泵到多路复用的实战配置
  • Python通达信数据接口终极指南:3分钟快速获取A股行情与财务数据
  • 从理论到实战:用Python解锁斯皮尔曼相关系数的完整指南
  • 工业物联网实战 | 用 AR1105 做低成本设备异响监测,成本仅传统方案 1%
  • STM32实战:用增量式PID和状态机搞定电赛级稳压限流源(附完整代码)
  • ReplayBook:5个关键功能解析与高效英雄联盟回放管理实践
  • 2026年新发布:湖南纸箱批发直销工厂综合实力与选择指南 - 品牌鉴赏官2026
  • 【定量遥感】从公式到地表:单窗算法温度反演全流程拆解
  • 专业认证|2026年全国四大正规婚姻财产分割 / 合同纠纷律师事务所推荐,四川陕西北京等地,升科律师事务所口碑与实力双优 - 十大品牌榜
  • 惠普OMEN笔记本终极性能控制指南:OmenSuperHub完全掌控你的游戏本
  • 从四色定理到算法实战:手把手教你用C++实现地图填色回溯法(附完整代码)
  • 2026年国内包装机械推广服务商榜单:5家口碑机构助力精准获客 - GEO优化
  • 2026年物美超市卡回收正规平台:2026用户亲测方式排行榜,鼎鼎收登顶! - 鼎鼎收礼品卡回收
  • 苹果 WWDC26 聚焦 Siri 人工智能,或为 2027 年智能眼镜等产品发展奠基
  • 2026食品机械推广代运营实力TOP榜,高口碑服务商深度解析 - GEO优化
  • Cocos2d-x C++与Lua互通实操包:5个VS2015可直接编译运行的交互Demo
  • 零成本解锁Wand专业版:3分钟掌握完整游戏修改体验终极指南
  • OSTrack 源码深度解析与实战调优指南
  • DDrawCompat架构深度解析:DirectDraw兼容性革命与性能突破
  • FPGA实战:用Platform Designer(Qsys)快速搭建SDRAM控制器(含Avalon-MM接口详解)
  • 2026年6月有实力的东莞气体配送源头厂家口碑推荐——高纯氮气、高纯氩气、工业氧气厂家选择指南 - 海棠依旧大