今天分享一个好玩的东西: "基于TDOA算法的声源跟踪小车" 。 用于参加Altium2022声源跟踪小车设计挑战赛的作品。硬件电路的设计用的AltiumDesigner。软件基于RTThread嵌入式系统。官方赛程为时一个月,包括硬件电路的设计审核,PCB打板。回来焊接组装,然后调试程序,调试算法,实现最后的功能。小车纯手工打造的,属实有点丑,但粗糙的外表下却隐藏着一个有趣的灵魂,包括实现音频采样,DMA双FIFO缓存,WIFI数据传输,声音播放,以及最主要的TDOA算法,整体玩下来还是很好玩的哈,里面有意思的小细节很多,大家可以自己玩一下自己体会。不过满打满算,整个调程序的时间大概有两个星期,除去搭建底层的驱动,编写配套的QT软件等,真正调TDOA算法应该只有不到一星期的时间。而最后实现最终的功能的代码,调了不到一小时。最终的效果大家可以看一下后面的视频哈,也正如视频最后所说,还有很多地方可以继续优化,所以,我也已经把所有软硬件资料都开源出来了。如果有小伙伴喜欢,可以继续玩一玩哈,如有遇到任何问题,也可以给我留言,欢迎讨论。 另外如果有小伙伴继续玩,可以换一个好点的车底盘,噪声小一点的,应该就可以实现实时不间断解算声音位置了。而对于我自己而言,比赛过后应该就没有动力再继续以小车的形式玩这个功能了。但可能会把这个TDOA定位用在我的日常工作中,没有比赛功能的限制,也就可以考虑加入更多的措施来提高定位精度和稳定度了。总之,各人感觉,是一个挺好玩的东西,特别针对于还处于学生时代的朋友来说,真心推荐可以玩一玩的,即包括了硬件设计,也包括了软件编程,最核心的还涉及各种算法对数据的处理分析(当然,我这边处理数据用的Python代码并没有给出,不过都不复杂,相信你如果能到这一步,肯定就会自己搞了)。都是日后从事相关工作所需的各项技能哈。这个小车,可谓是麻雀虽小,五脏俱全,虽然都没有太深入,但各种技能涉及面还是很广的。可以作为一个小入门项目哈。 小车外观图片如下: 硬件电路演示图: 上位机调试工具截图“ 配套程序代码,直接以附件分享,大家可以直接下载,然后用RTThreadStudio导入即可: *附件:AudioMiniCarV2_20221209.rar 硬件电路原理图PCB图,也直接以附件分享,大家可以直接下载用AltiumDesinger软件打开。过几天官方也会在DigiPCBA平台进行开源。有DigiPCBA账号的同学也可以直接在那里查看。 *附件:基于TDOA算法的声源跟踪小车电路原理图图+PCB.rar 演示视频: 以下内容更新于20230118 前言官方最终的评审结果出来了,此作品最终获得了该比赛的一等奖。感谢投票支持的网友和各位评审专家的认可。所以想着既然获得了一等奖,还是再花一些精力,整理一下此项目,对想继续玩的小伙伴有点帮助。软件方面,整理起来比较麻烦,最终时间紧凑,代码比较乱,后面有时间重新整理一下再上传gitee。今天先来整理一下硬件设计的整体思路和相关问题。 如下是官方公布的评比结果,其他优秀作品,大家可以去硬声平台或Altium官方链接查看。 原理图方案介绍主控板原理图总框图简介如下是主控板原理图的总页面框图,总共分了10个原理图页。中间和所有原理图页都有连接的是“Power”图页。主要负责电池充放电管理以及给其它功能模块供电。左侧的是“USB转UART通信口”图页,主要为CH340E的电路。右侧从上到下依次为“CAN&RS485接口”图页,“SPI_Flash”图页,“MCU”图页,“WIFI”图页,“电机驱动”图页,“红外避障”图页,以及最后的“拾音模块接口”图页。 各模块介绍
由于现在TypeC接口的USB线最常见,所以这里选用了TypeC类型的USB座,而且要对电池充电,TypeC接口供电线路承载能力还是要比miniUSB接口要大一些的。 U转串方案,我采用的是我常用的CH340E芯片。由于不太想重新买器件,所以这个小车电路用料,很大一部分的选型考虑都是手头上现有的料,甚至在不会太影响性能的情况下,选择更普通廉价的料。 由于这个小车的硬件方案对我来说还是算简单的,所以并没有对340E做单独供电,如果大家感觉可能调试硬件的过程比较久,这里可以考虑别太偷工减料了,要不然每次开关小车电源的时候都要重新连一遍调试终端还是挺烦的。具体方案可以考虑要么单独给340E一个VBUS转3.3V的电源芯片,要么直接用VBUS给CH340的VCC引脚供电,都是可以的。因为虽然用了TypeC接口,但可以看到CC1和CC2端直接接地了,并没有走其它高压协议,所以就算接入了快充充电头VBUS肯定也是5V供电,另外把CH340E改成5V供电方案,无非就是串口变成5V的TTL电平了,STM32芯片串口可以容忍5V电平,所以问题也不大。
此部分电路比较简单,没什么好说的,主要是考虑我手上有一个FR-07型号的车底盘以及一下RS485接口的传感器,可以扩展一下功能,但最后由于时间原因,也并没有用到。大家可以根据自己情况选择是否保留此扩展接口。虽然最后没有做这部分功能,不过可以给大家看一下我的这个车底盘,性能方面还是这种纯手工打造的小车没法比的哈,如果在这个小车四个角架上四个MIC,做这个声源跟踪,应该效果要好很多哈(当然,目前还都是幻想而已)。
此部分电路没什么太多好说的,也没什么大问题。由于W25Q64支持4线SPI接口,所以这里接入了MCU的QSPI总线,数据传输速率要快一些。后面程序方面以FAT32类型的文件系统进行了挂载,目前只用于保存配置文件,保存一些小车的运行和标定参数,不用每次上电都重新标定了。大家有兴趣也可以用它来保存一些其他数据。
此部分电路完全借鉴了老师的方案。并没有用更加复杂的避障方案。只不过老师的方案,后面还要接入电压比较器,转换为数字信号接入单片机的IO口。而我这里是把光电接收管的输出,直接接入了MCU内部的滞回比较器,H7系列内部又两路比较器,可以设置滞回大小以及比较端的电压来源。所以不用加滑动变阻器进行调节了,可以直接用程序进行现场调整,更方便一些。当然,如此简单的方案,对于环境的适应能力肯定还是比较差的,没有比赛要求的话,如果大家想实现更好的避障效果,还是建议直接用一些现场的避障模块做要好一些,专业人做专业事嘛。
此部分电路,主要是给拾音模块供电以及接入音频信号的IPEX接口。为了减小电机对模拟信号的电磁干扰,还是选择用屏蔽线进行传输。具体的音频信号采集和放大电路,见后面的拾音模块电路介绍或者观看官方的直播课回放,有更详细的讲解。
最后的MCU图页,无非就是STM32H743的最小系统,然后再把上面介绍的各模块,接入到MCU即可。这款芯片目前不知道还能不能买到了,我的是国内刚能买到H7系列芯片的时候我买了几片测试用的,后来产品就一直在用BGA封装的了,所以这几片LQFP封装的芯片就一直没什么用,就正好在这个小车上用了一下。估计就算能买到可能也比较贵了,前段时间我们买了一些BGA封装的,已经涨到1000块一片了,所以也只能是应个急,我也在做换型工作了。而这款小车的话,大家也可以根据自己的能力考虑一下换型了,不过最后不要选择性能太弱的MCU哦,要不然算FFT太慢哈。各人推荐可以考虑一下全志的一些芯片,比如我最近在玩的D1S芯片,也是LQFP封装的,焊接起来也方便。内部集成64M字节的DDR2内存,不用自己做DDR电路,还是要方便很多的。 拾音模块电路此部分电路完全借鉴的老师的方案,只不过滤波参数有所调整,当然老师的课程上也只是给了一个大概的参数,也是说要在调试的时候根据实际情况自己调整。我用的也不是最好的参数,大家也可以根据自己情况更改哈,甚至也可以升级优化电路的。 那这里的方案,也算是能实现这个功能最简单廉价的方案了,电路方面的更多细节大家可以观看官方的直播课回放,我这里就不再推衍一遍放大公式了。 下图左侧是电路仿真的波特图,右侧为实际测试的波特图,结构基本一致。 好了,电路方面的介绍,今天就先整理到这,如果后面想到什么再过来整理哈,软件后面看情况,希望能对大家有点用哈。 最后给出官方的比赛结果链接,里面有相关直播课的视频链接: |
在互相关算法中能不能确定哪个麦更靠近声源? |
1333 浏览 0 评论
1364 浏览 0 评论
电磁脉冲:想做个大功率的电磁脉冲,请各位大神告诉我要买哪些设备?
2499 浏览 0 评论
11026 浏览 0 评论
9474 浏览 0 评论
电子发烧友网
电子发烧友开云(中国)官方