如何在Arduino中使用KY-037声音检测传感器

这个项目将教你如何在 arduino 中使用 ky-037 声音检测传感器,并且测量环境中声音强度的变化。
能够学到什么
ky-037声音检测传感器介绍
ky-037声音检测模块如何配合arduino使用
ky-037声音检测传感器
该模块由一个用于检测声音的灵敏电容麦克风和一个放大电路组成。该模块的输出是模拟和数字的。数字输出作为一个键,当声音强度达到一定阈值时激活。灵敏度阈值可以通过传感器上的电位器进行调整。
模拟输出电压随麦克风接收到的声音强度而变化。您可以将此输出连接到 arduino 模拟引脚并处理输出电压。
将 ky-037 声音检测模块与 arduino 连接
要将此模块与 arduino 一起使用,只需连接模块的电源电压,然后根据需要将其模拟或数字引脚连接到 arduino。
这里我们使用模拟输出。
电路
如下图将传感器连接到 arduino
代码
连接电路后,请执行以下步骤:
第 1 步:在您的 arduino 板上上传以下代码:
void setup() {
serial.begin(9600); // setup serial
}
void loop() {
serial.println(analogread(a0));
delay(100);

第 2 步:打开串行监视器窗口
现在转动电位器以关闭数字输出上的 led。在 led 熄灭后立即记下串行监视器中显示的数字。
在图表上显示传感器的模拟输出
将传感器的模拟输出连接到 arduino a0 引脚并在您的 arduino 板上上传以下代码。然后从工具菜单中选择串行绘图仪。
第 3 步:在以下代码中写下您之前记下的数字(作为阈值变量)并将代码上传到您的板上。
/*
ky-037 sound detection sensor + arduino
modified on 16 apr 2019
by mohammadreza akbari @ electropeak
https://electropeak.com/learn/
*/
int sensor_value = 0;
int threshold = 540; //enter your threshold value here
int abs_value = 0;
int ledcount = 10; //number of bargraph leds
int bargraph[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // bargraph pins
void setup() {
serial.begin(9600); // setup serial
for (int i = 0; i <= ledcount; i++) // define bargraph pins output
{
pinmode(bargraph[i], output);
}
for (int i = 0; i <= 9; i++)
{
digitalwrite(i, low);
}
}
void loop() {
sensor_value = analogread(a0);
abs_value = abs(sensor_value - threshold);
int ledlevel = map(abs_value, 0, (1024 - threshold), 0, ledcount);
for (int i = 0; i < ledcount; i++) {
// if the array element's index is less than ledlevel,
// turn the pin for this element on:
if (i < ledlevel) {
digitalwrite(bargraph[i], high);
serial.println(i);
}
// turn off all pins higher than the ledlevel:
else {
digitalwrite(bargraph[i], low);
}
}
}
未来可能的拓展
当声音达到特定阈值时,设备开始自动存储声音。(可以使用vs1053等模块来存储音频。)
传感器部分:
/*
ky-037 sound detection sensor + arduino
modified on 16 apr 2019
by mohammadreza akbari @ electropeak
https://electropeak.com/learn/
*/
int sensor_value = 0;
int threshold = 540; //enter your threshold value here
int abs_value = 0;
int ledcount = 10; //number of bargraph leds
int bargraph[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // bargraph pins
void setup() {
serial.begin(9600); // setup serial
for (int i = 0; i <= ledcount; i++) // define bargraph pins output
{
pinmode(bargraph[i], output);
}
for (int i = 0; i <= 9; i++)
{
digitalwrite(i, low);
}
}
void loop() {
sensor_value = analogread(a0);
abs_value = abs(sensor_value - threshold);
int ledlevel = map(abs_value, 0, (1024 - threshold), 0, ledcount);
for (int i = 0; i < ledcount; i++) {
// if the array element's index is less than ledlevel,
// turn the pin for this element on:
if (i < ledlevel) {
digitalwrite(bargraph[i], high);
serial.println(i);
}
// turn off all pins higher than the ledlevel:
else {
digitalwrite(bargraph[i], low);
}
}
}

工业互联网加速了制造业生产的集聚 夯实了产业基础高级化的根基
使用用户为 LPDDR4 和 x8 或 x16 DDR4 组件接口指定的 DQS 字节交换生成管脚分配时,其中可能包含错误且需更改
usb连接器一直断开又连接 m590怎么切换至usb连接器
锂电材料行业拐点何时显现
第五届进博会三星以尖端科技共享未来 全球首发中国首展集中亮相
如何在Arduino中使用KY-037声音检测传感器
MAC地址
LCD面板价格持续下滑 预估9、10月还会进一步下调
什么是磁滞损耗?为什么有磁滞损耗
销量增长急刹车,激光电视市场遇到了哪些发展瓶颈
关于尿片吸收速度测试仪的详细介绍
firefly Core-3288J介绍
韩企 3D NAND 闪存今年第三季有望占据全球过半份额
发光细菌生物毒性仪可以检测什么
虚拟现实技术正在不断地渗透到各行业各领域
诺基亚提供奥地利全面5G覆盖
互联网人工智能的核心技术
Windows10安装超6700万台 微软欲借免费牌进攻移动端
工业插座型号规格大全
网络分析仪滤波器测试软件NSAT-1000