树莓派3 声音传感器(win10)
Posted 楚弋川
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树莓派3 声音传感器(win10)相关的知识,希望对你有一定的参考价值。
这段时间太忙了,项目收尾一直没有时间继续捣鼓树莓派,正好趁这个双休抽点时间来和我的小伙伴玩耍一把。上篇文章提到我想用Win10 Iot Core
和买来的一堆传感器摩擦出一些火花,虽然,已经有很多前辈做过,但是我没有做过啊,没做过又怎么能体会到实践的乐趣呢。先来一张传感器全家福吧!
这么一大堆传感器,要先玩那个呢,啊!纠结症又犯了,挑挑拣拣了好久,最后决定先搞一个简单点的---声音检测传感器。那么,接下来就是看资料
了,还好店家提供相关技术文档,这里为避嫌,就不提供店家地址。其实原理很简单,以下是我摘录的:
一、模块描述
1.可以检测周围环境的声音强度 ,使用注意:此传感器只能识别声音的有无(根据震动原理)不能识别声音的大小或者特定频率的声音
2 .灵敏度可调(图中蓝色数字电位器调节)
3.工作电压3.3V-5V
4.输出形式数字开关量输出(0和1高低电平)
二、模块接口说明
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)的主要内容,如果未能解决你的问题,请参考以下文章