如何控制智能小车跑得特别直(如何通过声音控制小车)
小车的“声音导引系统”是运用声音传感器采集移动声源信息,再由单片机计算声音传感器的时间差,从而得出移动声源距离目标地点的误差。
再以蓝牙通信的方式,控制移动声源前往指定位置。
大概是这个效果:
本文将通过五个部分,讲解小车“声音引导系统”的设计原理,分别是——硬件原理分析、多种设计方案的选择与论证、电路设计分析、测试结果、代码展示。
硬件原理分析小车的声音导引系统由声音接收部分和移动声源控制部分组成,其系统硬件部分有:声源控制模块、声音传感器、误差距离分析模块、移动小车。
1.声音接受部分的原理
声源控制模块能控制声源发出指定频率的间歇声音信号。
图2 系统实际位置关系
ABC三个声音接收器摆放在边长为1m的正方形的三个顶点上。
三个声音传感器将捕获到的波形信息传递给单片机,单片机对声源当前位置进行计算,与设定值进行比较,再以蓝牙通信的方式将运动控制指令传给移动小车。移动小车根据接收到的指令实现前进转弯等运动,并实现对声源的控制。
其中,小车的串口屏用于显示、调试系统的参数……
2.移动声源控制部分的原理
本系统的整体移动声源是将声源放置在移动小车上实现的。
移动小车由9个部分构成,包含——主控TM4C123G、电机驱动车板、亚克力车架、单片机主控板、蓝牙接收器、两个步进电机、声源、声源控制模块。
——其中蓝牙装置接收到运动指令后,由蜂鸣器发出声响,声音传感器再接收信号,传输给单片机主控板和电机驱动板,共同实现电机的运行。
——三个声音传感器模块检测到声音后,经波形整形电路后传输给单片机。单片机两两比较三个通道信号时间差,经过数据拟合,得到各传感器时间差与移动声源位置信息的数学关系,从而准确判断小车的实时位置,从而精确发出指令控制小车的运动状态。
小车在规定时间内到达目标位置后由板载的RGB灯显示绿灯。
设计方案的选择与论证本章节讲解4个硬件部分的设计思路,包含——单片机的选择、声音传感器的设计、移动声源驱动电机的谁、声源的设计。
为什么这样设计?这样设计有什么好处?这个章节中,你会获得答案!
1.单片机
在本系统中,我们使用了两块单片机,分别控制小车的运动与声音信号的采集。在这之前,我的物料选择方案有3个。
方案一: 采用89C52RC
STC89C52RC是一种低功耗、高性能CMOS8位微控制器,STC89C52是一种带8K字节闪烁可编程可檫除只读存储器的低电压,高性能COMOS8的微处理器,俗称单片机。
该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
方案二: 采用STM32F407ZET6
32系列单片机具有高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核,且速度快,一次处理数据宽度达32位。
方案三:采用TM4C123GH6PMT7
TM4C123GH6PMT7是具有 80MHz 频率、256KB 闪存、32KB RAM、2 个 CAN、RTC 和 USB、采用 64 引脚 LQFP 封装、基于 Arm Cortex-M4F 的 32 位 MCU。
图4 TM4C123GH6PMT7开发板
综合对比,最后我还是选择了——STM32F407ZET6作为声音误差分析处理器。
因为它能满足高速的误差计算需求。
我还选择TM4C123GH6PMT7作为移动声源主控处理器。
因为其体积小巧、功能丰富而且性价比高。
2.声音传感器
方案一:设计制作一个咪头声音采集电路,如图5所示。将接收到的声音信号转为模拟电信号经过放大后传输给单片机,单片机通过判断模拟电信号的幅值大小来判断声源的位置。
图5 咪头声音采集电路实物图
方案二:设计制作咪头声音采集电路,输出的电信号经过LM386音频放大器放大后,通过LM567鉴频电路筛选声源频率的电信号触发低电平,根据两路输出的下降沿时间差来判断声源位置鉴频电路如图6所示。
图6 LM567鉴频电路实物图
方案三:利用现成的声音检测传感器,当声源音量高于设定阈值时,传感器输出高频数字脉冲。经过波形整形电路将密集脉冲整形为连续方波,通过两个传感器输出的两路上升沿时间差来判断声源的位置,整形电路如图7所示。
图7 波形整形电路实物图
上述三个方案中:
- 方案一无法准确通过传感器输出的模拟电信号幅值来判断声源位置,误差较大。
- 方案二实际制作的电路输出的下降沿抖动明显,不利于软件后期处理,在尝试中放弃了该方案。
- 方案三能精准地获得两路方波信号的上升沿时间差,从而实现较为精确地判断声源位置。
故最终选择方案三。
3.移动声源驱动电机
要求放置时移动声源正对目标线,行走过程中需要保持直线,这就要求驱动系统稳定、精准。
方案一:直流编码电机具有编码器,可以通过单片机的输入捕获获得编码器的数值后通过PID精准控制速度,就可以达到小车直线行走的效果,并且其拥有着更大的轴距,拥有较强的带负载能力。
方案二:步进电机通过脉冲数来控制器转速,在脉冲数相同的情况下,其所转角度也相同,这样在两个电机都给相同的脉冲数情况下,其便可以很简单的走出直线。
上述两种驱动中步进电机有着更好的稳定性,同时能提供足够的输出能力,运行性能和能耗方面也更具有优势。
所以选择方案二。
4.声源
方案一:
采用音频功放和扬声器发声
方案二:
采用高分贝蜂鸣器发声
方案一中的扬声器能够方便调试发出不同音调的声音,但其发声响度有限,且驱动电路复杂,发出的声音无法突破声音传感器的设置阈值。
方案二的高分贝蜂鸣器声音响亮,控制电路简单,功耗低,故选择方案二。
电路设计分析1.数字脉冲整形电路
本模块采用可重复触发的单稳态触发器74HC123AP数字芯片设计,其功能表如图10所示
图10 74HC123AP数字芯片功能表
声音传感器模块接收到高于设置阈值的声音时,输出低电平。
从示波器实际观测波形,发现其在接收到声音时输出高频的数字脉冲,其标志信息为下降沿。
因此,设计单稳态电路,使其工作在下降沿触发的模式下,故将CLR、B端接高电平,A端与声音传感器模块数字量输出脚相连接。
用示波器再次观测,得到高频数字脉冲相邻两个低电平的时间间隔为1ms左右。
根据暂稳态时间公式T=0.45RC计算出单稳态的电容和滑动变阻器的选值。
本电路选取电容C=1μf,电阻采用5.1kΩ定值电阻 500kΩ滑动变阻器。
图11 74HC123AP单稳态触发器电路
2.声源驱动电路
图12 声源驱动电路
声源驱动电路主要由升压模块和三极管组成。
如图所示,单片机IO口通过拉高拉低电平,使三极管饱和或者截止,从而控制蜂鸣器与电源之间的开通或关断,实现了蜂鸣器间歇性发声。
为使蜂鸣器声音响亮,使用升压模块提升供电电压至24V。
3.单片机拓展板
将TM4C123GH6PMT7的PWM、串口引出,方便连接。接线端子采用Sada konektor XH4 ,使接线更加稳定。
单片机拓展板将5V稳压和3.3V稳压集成,在拓展版上将蜂鸣器模块进行了集成,使线路稳定性更高 。
4.电机驱动板
图13电机驱动板
采用双电机驱动控制两个步进电机,将两个A4988的引脚向外引出方便连接,同时将蓝牙模块集成在驱动板上。
测试结果1.声源频率调试
声源频率(KHz) 参数 |
0.5KHz |
1KHz |
2KHz |
3KHz |
相邻脉冲时间差(ms) |
2~3.45 |
1.05~1.35 |
0.47~0.68 |
0.31~0.35 |
有效距离(m) |
0.8 |
1.5 |
1.2 |
0.6 |
表1 单稳态触发器波形整形测试
通过改变声源发生频率,观察传感器对其声源的有效接收距离,最终发现声源发生频率为1KHz左右时,传感器有效感应距离最远,故设置蜂鸣器发生频率为1KHz。
2.声源定位调试
传感器标号 |
A-B |
A-C |
OX线时间差(μs) |
-500~-1500 |
/ |
OY线时间差(μs) |
/ |
800~1300 |
表2 声源定位测试调试
由实际测试得到移动声源在OX、OY两条停止线上传感器之间的时间差,对其进行数据分析,建立控制指令阈值,以实现控制小车运动状态。图14为场地环境情况。
图14场地环境
- 3.完成度测试
到达成功率 |
定位误差 | |
基础部分 |
85% |
1~10cm |
发挥部分 |
85% |
1~6cm |
表3 在较为嘈杂的条件下测试方案
到达成功率 |
定位误差 | |
基础部分 |
90% |
1~8cm |
发挥部分 |
90% |
1~5cm |
表4 在安静的房间里进行测试
系统在嘈杂的环境容易受到干扰,其定位误差会进一步增大。
可通过改进声音传感器阈值和软件滤波算法,以最大程度减小测试环境对系统产生的影响。
实物图片
图15 移动声源展示
图16 单片机误差计算模块
图17 传感器布置与调试场地
代码展示
图18 声音检测代码
图19 蓝牙握手代码
如果你需要源码进一步学习,请自取,无偿分享的:https://oshwhub.com/kirine/ji-yu-xiao-ju-de-sheng-yin-dao-y
本文资料全部来源:立创开源硬件平台《基于小车的声音导引系统》作者:KirinE
如果你认为这篇文章还不错,欢迎点赞、关注、转发、收藏~
我会持续更新优质开源项目!
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com