码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2016-04-29 18:03:12      阅读:392      评论:0      收藏:0      [点我收藏+]

标签:

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

标签:

原文地址:http://blog.csdn.net/zhang_z_qiang/article/details/51237026

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!