树莓派3 声音传感器(win10)

Posted 楚弋川

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树莓派3 声音传感器(win10)相关的知识,希望对你有一定的参考价值。

        这段时间太忙了,项目收尾一直没有时间继续捣鼓树莓派,正好趁这个双休抽点时间来和我的小伙伴玩耍一把。上篇文章提到我想用Win10 Iot Core

和买来的一堆传感器摩擦出一些火花,虽然,已经有很多前辈做过,但是我没有做过啊,没做过又怎么能体会到实践的乐趣呢。先来一张传感器全家福吧!


       这么一大堆传感器,要先玩那个呢,啊!纠结症又犯了,挑挑拣拣了好久,最后决定先搞一个简单点的---声音检测传感器。那么,接下来就是看资料

了,还好店家提供相关技术文档,这里为避嫌,就不提供店家地址。其实原理很简单,以下是我摘录的:

模块描述

1.可以检测周围环境的声音强度 ,使用注意:此传感器只能识别声音的有无(根据震动原理)不能识别声音的大小或者特定频率的声音

2 .灵敏度可调(图中蓝色数字电位器调节)

3.工作电压3.3V-5V

4.输出形式数字开关量输出(01高低电平)

模块接口说明

1. VCC外接3.3V-5V电压(可以直接与 5v 单片机和3.3v单片机相连)

2. GND外接GND

3. DO小板数字量输出接口(0 1

使用说明

1.声音模块对环境声音强度最敏感,一般用来检测周围环境的声音强度。

2.模块在环境声音强度达不到设定阈值时,DO口输出高电平,当外界环境声音强度超过设定阈值时,模块 D0输出低电平

3.小板数字量输出 D0可以与单片机直接相连,通过单片机来检测高低电平,由此来检测环境的声音

四、原理图


 

        接下来,我们要做的就是检查声音传感器是否正常:在相对安静的环境中,将模块的VCC接到树莓派的3.3V PWR电源正极上,将模块的GND接到树莓派

GND上(我选了39),此时,模块的电源指示灯会亮,说明你的传感器OK。如果开关提示也亮了,说明传感器对当前环境声音太灵敏了,可以调节蓝色

数字电位器,使之灵敏度降低。附上测试接线图和树莓派GPIO引脚位置图:


 


 

        然后就是如何接线了,我使用了6根杜邦线(3根公对母,3根公对公),具体接线步骤:将第一根公对母杜邦线母端接到树莓派3.3V PWR电源引脚上,

公端接到面包板的正极上(红线);将第二根公对母杜邦线母端接到树莓派GND负极引脚上,公端接到面包板负极上(棕线);将第三根公对母杜邦线母

端接到树莓派GPIO 5引脚上,公端接到LED灯长脚上(灰线);将第一根公对公杜邦线的一端接到面包板电源正极上,另一端接到传感器VCC上(红线);

将第二根公对公杜邦线的一端接到面包板电源负极上,另一端接到传感器GND上(棕线);将最后一根公对公杜邦线的一端接到传感器的OutPut(DO)上,

另一端接到LED等的短脚上(紫线)。最后接线如图所示:

 


 

       见证奇迹的时刻到了,新建一个UWP空白应用(通用Windows),将以下代码粘到MainPage中,然后部署到树莓派中的Win10中即可。至于怎么安装

系统、部署应用和web远程控制,待我下次整理出一个文档,当然,你也可以自己在网上搜。另外:源码来源于网友汪宇杰Edi.Wang


public sealed partial class MainPage : Page
    
        //LED灯引脚
        public GpioPin LedPin  get; set; 

        //声音传感器引脚
        public GpioPin SoundPin  get; set; 

        //保存LED灯的开关状态
        public bool IsLightOn  get; set; 

        public MainPage()
        
            this.InitializeComponent();
            Loaded += OnLoaded;
        

        /// <summary>
        /// Loaded事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="routedEventArgs"></param>
        private void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
        
            //初始化GPIO控制器
            var controller = GpioController.GetDefault();
            if (null != controller)
            
                //LED是高电平输出表示开,所以第一次启动的时候要关灯,输出低电平
                LedPin = controller.OpenPin(5);
                LedPin.SetDriveMode(GpioPinDriveMode.Output);
                LedPin.Write(GpioPinValue.Low);

                //FC-04的GPIO 06端口是接受信号的,所以是输入
                SoundPin = controller.OpenPin(6);
                SoundPin.SetDriveMode(GpioPinDriveMode.Input);

                //监测声音传感器引脚值得变化
                SoundPin.ValueChanged += (pin, args) =>
                
                    //读取引脚值(FC-04传感器只有两个值0、1)
                    var pinValue = SoundPin.Read();
                    //FC-04检测到声音时候会在DO输出低电平
                    if (pinValue == GpioPinValue.Low)
                    
                        Debug.WriteLine("Sound Detected!");
                        //开关灯操作(设置LED引脚值)
                        LedPin.Write(IsLightOn ? GpioPinValue.Low : GpioPinValue.High);
                        IsLightOn = !IsLightOn;
                    
                ;
            
        
    


 
           总结:在实践过程中遇到了不少问题,毕竟是小白,有很多不懂不会的地方,但是,还是那句话,只要思想不倒退,办法总比困难多。最后,来看一
   
  
   下效果图吧! 
   


以上是关于树莓派3 声音传感器(win10)的主要内容,如果未能解决你的问题,请参考以下文章

树莓派3连接声音传感器声控

35 树莓派读取温湿度传感器

树莓派连接人体红外感应模块HC-SR501

30个Python物联网小实验5:光线感应灯

云中树莓派:利用声音传感器控制Led灯

《树莓派项目实战》第七节 使用声音传感器检测声音