极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 58683|回复: 34

#声音罗盘Wave -- 频谱分析

[复制链接]
发表于 2016-2-24 22:54:35 | 显示全部楼层 |阅读模式
本帖最后由 pz_cloud 于 2016-2-25 13:26 编辑

事情是这样的,这个声音罗盘,其实是为我之后打算做的泛用型蚊子毁灭激光打击装置准备的一个先导项目…
前方画风转变注意


为了能快速准确捕获蚊子的方位,我们需要类似人类的一些感知能力如视觉和 听觉 -- 最终肯定会用上摄像头的,但是摄像头的视野没有360度,所以需要靠声源定位先获取大致方向。
而声源定位呢,其实也并不如大家想象的那么容易…最容易想到的就是:安装多个麦克风阵列,判断哪边声音大声源就在那边。这样原理上似乎好像是可以的,但实际上是无法实现的,原因有几点:
1.以麦克风的灵敏度是无法区分出微小的声音强度变化的
2.无法定量计算方位角
3.由于模块很小,事实上传感器挨的很近,所以进一步降低了声源由于距离带来的强度变化
4.最麻烦的是,元器件的特性并不是严格一致的,很可能你买到的几个麦克风各有各的灵敏度
5.噪声干扰无法消除


所以靠谱点的方法呢,就是利用声音的相位差来获取准确的方位。这里面原理就比较复杂了,基本思想就是,一束声波在被几个麦克风捕获的时候,由于到达时间不同,因此各个麦克风获得的信号是同一个波形在时域上相位平移后的样子,这样他们各自的相关函数就会存在一个或多个极值,由此可以求出相位差进而得到信号到达的时差。

处理过程需要用到离散傅里叶变换,所以正好也可以拿来当频谱显示器用,视频里便是显示波形和频谱的效果:
虽然模块上有3个麦克风,但是显示频谱只用到了其中一个






当然目前还没有完成声源定位的程序,完整版待更新

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2016-2-24 23:33:39 | 显示全部楼层
先看看效果,感觉有研究的意义
回复 支持 反对

使用道具 举报

发表于 2016-2-25 00:37:59 | 显示全部楼层
怎么知道哪种声音是蚊子呢?
另外距离多近才能测得到呢?
回复 支持 反对

使用道具 举报

发表于 2016-2-25 09:43:17 | 显示全部楼层
大赞!!楼主这个开源吗,可以带我玩一个吗(付费)?
回复 支持 反对

使用道具 举报

发表于 2016-2-25 09:54:53 | 显示全部楼层
用声音对蚊子定位的想法, 真的非常有趣. 但如何把周围的声音过滤?  可以针对蚊子拍翼的频率吗?
假定距离在 1 米内吧, 发射的角度偏差会有很大影响, 要射中不易.  太近的话, 要蚊子合作才可行.  
我想 1m 算是一个合理的距离吧, 实际运作可能要更短距离.
要分别出相距不足 5cm 的几个传感接收的时间差, 感认器的灵敏度有多高?  

尝试作简单推算, 假设蚊子在 1 米外, 两个传感距离 5cm.
以简单的蚊子在其中一个的垂直线上, 即距离为 1米, 而对另一个的距离便是, SQRT(100^2 + 5^2) = 100.
125.  即两点的距离相差 0.125cm.
以每秒约 340米 的音速推算, 接收时间的差距约 0.000004s.
当然, 如果蚊子再近一点, 时间差距会大一点, 最大差距是蚊字落在其中一个传感之上 (或在同一直线上), 时间差为 0.00015s.

以 arduino 的运算能力, 真的可以对几个传感进行分析, 过滤出相关声源, 并判断出 0.00015s 以内的变化?
耍对蚊未射击, 准确度应该要在 5mm 之内吧.  
调教角度也要在极短时间内精碓完成, 相信一般机械式的设计未必可以满足要求.

如果可以做出来, 相信是很不错的玩意.  非常期待你的设计.
回复 支持 反对

使用道具 举报

发表于 2016-2-25 10:15:06 | 显示全部楼层
Super169 发表于 2016-2-25 09:54
用声音对蚊子定位的想法, 真的非常有趣. 但如何把周围的声音过滤?  可以针对蚊子拍翼的频率吗?
假定距离在 ...

這個不是 Arduino 來的,芯片應是 ST 32bit 的 MCU。
回复 支持 反对

使用道具 举报

发表于 2016-2-25 10:16:01 | 显示全部楼层
不错,有创意!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-25 11:02:27 | 显示全部楼层
wing 发表于 2016-2-25 00:37
怎么知道哪种声音是蚊子呢?
另外距离多近才能测得到呢?

不同蚊子(公的母的)的特征频率是不一样的哦,距离得看麦克风的灵敏度了,前置放大和滤波做好的话一两米应该是可以的,因为是要用激光打掉所以太远了也没意义了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-25 11:13:45 | 显示全部楼层
本帖最后由 pz_cloud 于 2016-2-25 11:24 编辑
Super169 发表于 2016-2-25 09:54
用声音对蚊子定位的想法, 真的非常有趣. 但如何把周围的声音过滤?  可以针对蚊子拍翼的频率吗?
假定距离在 ...


这个当然不能直接计算时间差的,因为其实距离不同麦克风得到的波形是有差异的,不是简单平移就能对的上,这里需要用到数学里面相关函数的概念,所以其实最后是把两个波形做卷积运算啦,这样得到的函数极值就是相位差也就是你说的时间差。
精度是这样的,粗略来算可以由采样率确定,声速340m/s除以44.1kHz(没错就是一般mp3里面那个采样率,因为人耳听力极限是20k,采样定理乘以二),得到的精度大概是7mm,当然换算成角度的话还与传感器的布置有关,间隔越大精度越高(太大的话声音强度不够了),想要更高精度只要换更快的芯片提高采样率就行了,如果有DSP的话就更简单啦

还有非常重要的一点是,我并不是打算只用声音定位蚊子哦,帖子说是会用上摄像头做图像处理的,这样精度和可靠度才有保障的
回复 支持 反对

使用道具 举报

发表于 2016-2-25 11:33:23 | 显示全部楼层
eddiewwm 发表于 2016-2-25 10:15
這個不是 Arduino 來的,芯片應是 ST 32bit 的 MCU。

oh...因為放在 arduino 的版執中, 我以為都是用 arduino 添.
回复 支持 反对

使用道具 举报

发表于 2016-2-25 11:51:34 | 显示全部楼层
pz_cloud 发表于 2016-2-25 11:13
这个当然不能直接计算时间差的,因为其实距离不同麦克风得到的波形是有差异的,不是简单平移就能对的上 ...

大复杂的我真的不懂了, 只会用最简单的直线计算, 但真的很有兴趣想了解一下.
摄像镜头要辨认蚊子也不容易吧, 要用多少镜头作定位?
假设周围的环境完全不变, 直接比较变动的点, 也要用两个镜头才可以定位吧.
这样复杂的运算, 看来不是一般 arduino (或其他 mcu) 可应付.
一般镜头的解释度也有很大的影响, 不知你心目中的攻击范围有多大呢?
回复 支持 反对

使用道具 举报

发表于 2016-2-25 11:57:21 | 显示全部楼层
很棒的想法,参考美国、以色列的 狙击手 位置侦听器!



期待开源!大家一起玩!
回复 支持 反对

使用道具 举报

发表于 2016-2-25 14:12:10 | 显示全部楼层
感想敢做,厉害,加油吧
回复 支持 反对

使用道具 举报

发表于 2016-2-25 15:24:10 | 显示全部楼层
很好啊  加油!
回复 支持 反对

使用道具 举报

发表于 2016-2-25 18:59:40 | 显示全部楼层
这。。。。。。要是歪了那么一点点。。。。。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 05:10 , Processed in 0.045921 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表