voice sensor
信号图:
原厂数据如下图:
6.5元的模块。
一 产品特点:
1 可以检测周围环境的声音强度,使用注意:此传感器只能识别声音的有无(根据震动原理)不能识别声音的大小或者特定频率的声音
2 灵敏度可调(图中蓝色数字电位器调节)
3 工作电压3.3V-5V
5 输出形式 数字开关量输出(0和1高低电平)
6 设有固定螺栓孔,方便安装
7 小板PCB尺寸:3.2cm * 1.7cm
二 模块接线说明
1 VCC 外接3.3V-5V电压(可以直接与5v单片机和3.3v单片机相连)
2 GND 外接GND
3 OUT 小板开关量输出接口(0和1)
三 使用说明
1声音模块对环境声音强度最敏感,一般用来检测周围环境的声音强度。
2 模块在环境声音强度达不到设定阈值时,OUT输出高电平,当外界环境声音强度超过设定阈值时,模块OUT输出低电平;
3 小板数字量输出OUT可以与单片机直接相连,通过单片机来检测高低电平,由此来检测环境的声音;
4 小板数字量输出OUT可以直接驱动本店继电器模块,由此可以组成一个声控开关;
调试方法跟这个视频差不多。只不过我的这个模块没有模拟信号输出口,只有数字输出口{TTL电平},不能检测声音强度,只能检测声音有无。
先提供一段调试声音灵敏度的代码,当你用螺丝刀调节变阻器的时候。
要将数据介于0,1之间。
当有声音时是0,
没有声音时是1.
要调节到刚好都输出的是1, 有一点声音的时候,立即输出0.
结合串口输出并调试代码。
int sensorVoice = 2; void setup() { pinMode(sensorVoice, INPUT); Serial.begin(9600); } void loop() { int temp = digitalRead(sensorVoice); Serial.println(temp); delay(200); }
图中有0输出,表示有声音。因为我在吹口哨,哈哈~
这样就能表示其比较灵敏了。TTL来说,美中不足没有analog
下面就可以写声控程序了。
下面做个例程。做个简单的声控灯。
功能:
有声音后,达到一定程度,激活继电器,打开电灯,亮30秒。然后熄灭。
做了一个简单的消除杂音处理,有点像消抖,其实都差不多。
就是加了个delay(若干毫秒) 函数。
//-----------voice-sensor------------ int sensorVoice = 2; int sensorJidianqi = 13; // void setup() { pinMode(sensorJidianqi, OUTPUT); pinMode(sensorVoice, INPUT); Serial.begin(9600); } void loop() { if (digitalRead(sensorVoice) ==0) { delay(100); if (digitalRead(sensorVoice) ==0) { digitalWrite(sensorJidianqi, HIGH); //LOW to power on JiDianQi delay(4000); digitalWrite(sensorJidianqi, LOW); // } } else { digitalWrite(sensorJidianqi, LOW); } }
这个是没有用继电器的。
用继电器的时候,注意是高电平激活,还是低电平激活继电器的。这个要留意。本人买的几个都是低电平导通的,不同继电器可能不同。
用的是arduino Uno pin13上默认自己带的那个LED灯。实验就是对着模块吹一声,而后,模块上的Pin13出默认的LED灯,就亮了4秒钟。而后自动熄灭。
代码就是这么简单
切记:一定要事先调整好模块,用螺丝刀调整好,到临界状态。
如果有声音,模块输出低电平 0 v
如果没有声音,模块输出高点平 5V
是在一个区间内的,一个高一个低。