【花雕学编程】Arduino动手做(185)---MAX4466模块13个项目

2021-08-076.5万
精华项目
AI 快速预览详细 收起
本文介绍了使用MAX4466声音传感器模块的13个Arduino实验项目。这些项目从基础连接到高级应用,涵盖了声音检测与处理的各种场景。通过这些实验,读者可以逐步掌握声音传感器的应用,并解决实际问题。


37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百八十五:MAX4466声音传感器 驻极体话筒放大器 麦克风可调功放模块 microphone


【花雕学编程】Arduino动手做(185)---MAX4466模块13个项目图2

【花雕学编程】Arduino动手做(185)---MAX4466模块13个项目图1

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(57)
驴友花雕
驴友花雕
作者

Wing_of_Wind
Wing_of_Wind
我打算自己做一个PCB,请问原理图上的铁氧体应该选什么规格的?
驴友花雕
驴友花雕
作者
回复Wing_of_Wind
具体资料请见:Arduino动手做(190)---MAX4466声音模块 http://t.csdnimg.cn/hq7kx
驴友花雕
驴友花雕
作者
[align=left][font="]RGB LED 灯带的声学频谱控制[/font][/align]
[align=left][font="] 如何使用 Arduino 为 RGB LED 灯条构建您自己的音乐可视化器[/font][/align][align=left][font="] 这是一个教你如何改变 LED 灯条颜色的视频[/font][/align][align=left][font="] 基于从声音传感器获得的值,信号为[/font][/align][align=left][font="] 使用具有截止值的一阶低通 IIR 数字滤波器过滤[/font][/align][align=left][font="] 频率为 900Hz 的滤波信号与多个阈值进行比较[/font][/align][align=left][font="] 用于确定将基于哪种颜色显示的值[/font][/align][align=left][font="] 传感器感应到的声音频率,低频声音[/font][/align][align=left][font="] (几乎听不见)在 LED 灯条中显示为蓝色,一直到[/font][/align][align=left][font="] 高频声音(高度可听)在条带中显示为红色。[/font][/align]
[align=left][font="] MainFunction() [/font][/align][align=left][font="] 主功能[/font][/align][align=left][font="] 此方法使用“sensorValue”读取声音传感器的输出值[/font][/align][align=left][font="] 作为浮点数并减去 1023,因为声音传感器提供 1023 或 5V 的输出[/font][/align][align=left][font="] 当没有感应到任何声音时,这样我们在没有感应到声音时的值为 0[/font][/align][align=left][font="] & 值高达 1023 当它感知声音(空气中的振动)时,我们转换信号[/font][/align][align=left][font="] 到伏特。[/font][/align]
[align=left][font="] FilterSignal()[/font][/align][align=left][font="] 过滤信号[/font][/align][align=left][font="] 使用在 Matlab 中创建的一阶 IIR 低通数字滤波器过滤信号[/font][/align][align=left][font="] 并将值赋给变量“filteredSignal”[/font][/align]
[align=left][font="] CompareSignalFiltered()[/font][/align][align=left][font="] 比较信号过滤[/font][/align][align=left][font="] 比较“filteredSignal”变量和“filteredSignalValues”数组[/font][/align][align=left][font="] 确定我们比较的变量值在哪里小于、大于或介于两者之间,我们的[/font][/align][align=left][font="] 阈值为 LED 灯条分配颜色并打印代表的颜色[/font][/align][align=left][font="] 我们设置的。[/font][/align]
[align=left][font="] RGBColor()[/font][/align][align=left][font="] RGB颜色()[/font][/align][align=left][font="] 将代表颜色的 0 到 255 之间的值发送到为每个 RGB 颜色定义的引脚,[/font][/align][align=left][font="] 我们想要的;在 Google RGB 色轮上搜索以帮助您了解颜色是如何创建的。[/font][/align]
[align=left][font="] 版本 1.2[/font][/align][align=left][font="] 将“filteredSignalValues”数组中的数字顺序从高到低,颠倒并更改[/font][/align][align=left][font="] 来自“sensorValue”变量的方程,从 1023 - “analogRead(A0)” 到“analogRead(A0)”,以使其成为[/font][/align][align=left][font="] 更容易阅读。[/font][/align][align=left][font="] 声音传感器输出 5V 或 1023,当没有声音时从 Arduino 读取为输入,并且声音高,输出 0v[/font][/align][align=left][font="] 传感器具有反向输出逻辑。[/font][/align]
驴友花雕
驴友花雕
作者
实验场景图 动态图

驴友花雕
驴友花雕
作者
实验串口返回情况

驴友花雕
驴友花雕
作者
【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十五:MAX4466声音传感器 低功耗驻极体话筒放大器 麦克风可调功放模块
项目十三:RGB LED 灯的声学频谱控制
实验开源代码
[code]/*
【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十五:MAX4466声音传感器 低功耗驻极体话筒放大器 麦克风可调功放模块
项目十三:RGB LED 灯的声学频谱控制
实验接线:MAX4466咪头模块OUT接Uno的A0
Rpin 11
Gpin 10
Bpin 9
*/
#define Rpin 11
#define Gpin 10
#define Bpin 9
#define delayLEDS 3
#define sensorPin A0
float sensorValue = 0, filteredSignal = 0,
filteredSignalValues[] = {3.4, 3.1, 2.7, 2.4, 2.1, 1.7, 1.3, 0.9, 0.4};
void setup () {
Serial.begin (9600);
}
void loop () {
MainFunction();
delay(6);
}
void MainFunction() {
sensorValue = (float) analogRead(sensorPin) * (5.0 / 1024.0);
FilterSignal(sensorValue);
Serial.print(sensorValue);
Serial.print(" ");
Serial.println(filteredSignal);
CompareSignalFiltered(filteredSignal);
}
void FilterSignal(float sensorSignal) {
filteredSignal = (0.945 * filteredSignal) + (0.0549 * sensorSignal);
}
void CompareSignalFiltered(float filteredSignal) {
if (filteredSignal > filteredSignalValues[0]) {
RGBColor(0, 127, 255);
Serial.println("Blue");
} else if (filteredSignal <= filteredSignalValues[0] && filteredSignal > filteredSignalValues[1]) {
Serial.println("Azure");
RGBColor(0, 255, 255);
} else if (filteredSignal <= filteredSignalValues[1] && filteredSignal > filteredSignalValues[2]) {
RGBColor(255, 0, 0);
Serial.println("Cyan");
} else if (filteredSignal <= filteredSignalValues[2] && filteredSignal > filteredSignalValues[3]) {
RGBColor(0, 255, 127);
Serial.println("Aqua marine");
} else if (filteredSignal <= filteredSignalValues[3] && filteredSignal > filteredSignalValues[4]) {
RGBColor(0, 255, 0);
Serial.println("Green");
} else if (filteredSignal <= filteredSignalValues[4] && filteredSignal > filteredSignalValues[5]) {
RGBColor(255, 255, 0);
Serial.println("Yellow");
} else if (filteredSignal <= filteredSignalValues[5] && filteredSignal > filteredSignalValues[6]) {
RGBColor(0, 0, 255);
Serial.println("Magenta");
} else if (filteredSignal <= filteredSignalValues[6] && filteredSignal > filteredSignalValues[7]) {
RGBColor(255, 0, 127);
Serial.println("Rose");
} else if (filteredSignal <= filteredSignalValues[7] && filteredSignal > filteredSignalValues[8]) {
RGBColor(255, 127, 0);
Serial.println("Orange");
} else if (filteredSignal <= filteredSignalValues[8]) {
RGBColor(0, 127, 255);
Serial.println("Red");
} else {
RGBColor(255, 50 , 0);
Serial.println("Default: Blue");
}
}
void RGBColor(int Rcolor, int Gcolor, int Bcolor) {
analogWrite(Rpin, Rcolor);
analogWrite(Gpin, Gcolor);
analogWrite(Bpin, Bcolor);
delay(delayLEDS);
}[/code]
驴友花雕
驴友花雕
作者
实验场景图

驴友花雕
驴友花雕
作者
实验串口绘图器返回情况

驴友花雕
驴友花雕
作者
【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十五:MAX4466声音传感器 低功耗驻极体话筒放大器 麦克风可调功放模块
项目十二:测量环境声级的波形
实验接线:MAX4466咪头模块OUT接Uno的A0
实验开源代码
[code]/*
【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十五:MAX4466声音传感器 低功耗驻极体话筒放大器 麦克风可调功放模块
项目十二:测量环境声级的波形
实验接线:MAX4466咪头模块OUT接Uno的A0
*/
const int sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz)
unsigned int sample;
void setup() {
Serial.begin(9600);
}
void loop() {
unsigned long startMillis = millis(); // Start of sample window
unsigned int peakToPeak = 0; // peak-to-peak level
unsigned int signalMax = 0;
unsigned int signalMin = 1024;
// collect data for 50 mS
while (millis() - startMillis < sampleWindow)
{
sample = analogRead(0);
if (sample < 1024) // toss out spurious readings
{
if (sample > signalMax)
{
signalMax = sample; // save just the max levels
}
else if (sample < signalMin)
{
signalMin = sample; // save just the min levels
}
}
}
peakToPeak = signalMax - signalMin; // max - min = peak-peak amplitude
double volts = (peakToPeak * 5.0) / 256; // convert to volts
Serial.println(volts);
}[/code]
驴友花雕
驴友花雕
作者
Arduino 系列传感器和执行器模块实验目录清单:
一块扩展板完成Arduino的10类37项实验(代码+图形+仿真)
https://mc.dfrobot.com.cn/thread-280845-1-1.html
连杆形式的腿机构十一种:盘点机器人行走背后的机械原理
https://mc.dfrobot.com.cn/thread-308097-1-1.html
【花雕动手做】超低成本,尝试五十元的麦克纳姆轮小车!
https://mc.dfrobot.com.cn/thread-307863-1-1.html
【花雕动手做】超迷你哦,用徽商香烟盒做个智能小车!
https://mc.dfrobot.com.cn/thread-307907-1-1.html
【花雕动手做】太搞笑啦,一支胶管制成二只蠕动机器人
https://mc.dfrobot.com.cn/thread-308046-1-1.html
【花雕动手做】快餐盒盖,极低成本搭建机器人实验平台
https://mc.dfrobot.com.cn/thread-308063-1-1.html
【花雕动手做】特别苗条,使用微波传感器控制的纤细小车
https://mc.dfrobot.com.cn/thread-308866-1-1.html
【花雕动手做】脑洞大开、五花八门的简易机器人66种
https://mc.dfrobot.com.cn/thread-307900-1-1.html
实验一百五十八:QMC5883L电子指南针罗盘模块 三轴磁场传感器GY-271
https://mc.dfrobot.com.cn/thread-308195-1-1.html
实验一百六十三:BMI160 6轴惯性运动传感器 16位3轴加速度+超低功耗3轴陀螺仪 I2C/SPI 14LGA
https://mc.dfrobot.com.cn/thread-310371-1-1.html
实验一百六十五:2.4 英寸 TFT LCD 触摸屏模块 XPT2046 PCB ILI9341 240x320 像素 8 位 SPI 串口显示器
https://mc.dfrobot.com.cn/thread-309803-1-1.html
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
https://mc.dfrobot.com.cn/thread-309845-1-1.html
实验一百八十三:GY-530 VL53L0X 激光测距 ToF测距 飞行时间测距传感器模块 IIC通信协议
https://mc.dfrobot.com.cn/thread-310273-1-1.html
实验一百八十五:MAX4466声音传感器 驻极体话筒放大器 麦克风可调功放模块 microphone
https://mc.dfrobot.com.cn/thread-310193-1-1.html
实验一百八十九:TDA1308 硅麦克风 数字咪头放大模块 拾音器放大板 楼氏SUNLEPHANT
https://mc.dfrobot.com.cn/thread-310246-1-1.html
实验一百九十三:TCS34725颜色识别传感器 RGB IIC明光感应模块 ColorSensor
https://mc.dfrobot.com.cn/thread-310209-1-1.html
实验二百:RCWL-0515微波雷达感应开关 人体感应 智能感应探测传感器 12-15米远距离2.7G微波检测模块
https://mc.dfrobot.com.cn/thread-310313-1-1.html
实验二百零三:Air724UG合宙 Cat14G模块 DTU物联网UART串口通信数据TCP透传 核心板组合套餐
https://mc.dfrobot.com.cn/thread-310342-1-1.html
实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块 NB-IoT广域低功耗无线通信 GPS/北斗精准定位
https://mc.dfrobot.com.cn/thread-310433-1-1.html
驴友花雕
驴友花雕
作者
实验场景图 动态图

驴友花雕
驴友花雕
作者

【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十五:MAX4466声音传感器 低功耗驻极体话筒放大器 麦克风可调功放模块
项目十一:超简单的音乐反应 LED 灯条
实验开源代码
[code]/*
【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十五:MAX4466声音传感器 低功耗驻极体话筒放大器 麦克风可调功放模块
项目十一:超简单的音乐反应 LED 灯条
实验接线:MAX4466咪头模块OUT接Uno的A0,电平模块接D13
*/
int soundSensor = A0;
int LED = 13;
void setup() {
pinMode(soundSensor, INPUT);
pinMode(LED, OUTPUT);
}
void loop() {
int statusSensor = digitalRead (soundSensor);
if (statusSensor == 1) {
digitalWrite(LED, HIGH);
}
else {
digitalWrite(LED, LOW);
}
}[/code]
驴友花雕
驴友花雕
作者
实验场景图

驴友花雕
驴友花雕
作者
【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十五:MAX4466声音传感器 低功耗驻极体话筒放大器 麦克风可调功放模块
项目之十:使用KA2284电平指示模块的简易音乐节奏灯
实验接线:MAX4466咪头模块OUT接Uno的A0,电平模块接D6(pwm)
实验开源代码
[code]/*
【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
实验一百八十五:MAX4466声音传感器 低功耗驻极体话筒放大器 麦克风可调功放模块
项目之十:使用KA2284电平指示模块的简易音乐节奏灯
实验接线:MAX4466咪头模块OUT接Uno的A0,电平模块接D6(pwm)
*/
int levelModule = 6;
int readValue = 0; //保存读到的模拟值
int ledValue = 0; //保存占空比
void setup() {
pinMode(levelModule, OUTPUT); //数字口要选择带~号的具有pwm功能的输出口
}
void loop() {
readValue = analogRead(A0); //读取A0模拟口的数值(0-5V 对应 0-1024取值)
ledValue = map(readValue, 0, 1023, -1, 7);
// 将0到1024之间的数据映射成-1到7之间的数据
analogWrite(levelModule, ledValue); //PWM最大取值6
}[/code]
驴友花雕
驴友花雕
作者
[backcolor=rgb(255, 255, 255)][font="]实验串口绘图器返回情况(一段歌曲的波形)[/font][/backcolor]
[backcolor=rgb(255, 255, 255)][font="]
[/font][/backcolor]

驴友花雕
驴友花雕
作者
[font="]实验一百八十五:MAX4466声音传感器 低功耗驻极体话筒放大器 麦克风可调功放模块 microphone[/font]
[backcolor=rgb(255, 255, 255)][font="]实验开源仿真编程(Linkboy V4.62)[/font][/backcolor][font="]项目之九:显示动态声音波形[/font]
[font="]

[/font]
驴友花雕
驴友花雕
作者

[font="][size=15px]实验串口绘图器返回情况之三[/size][/font]
[font="][size=15px]播放背景音乐的波形[/size][/font]
[font="][size=15px]
[/size][/font]

驴友花雕
驴友花雕
作者

实验串口绘图器返回情况之二
断续讲话声波形

驴友花雕
驴友花雕
作者

实验串口绘图器返回情况之一
实测环境噪音波形

驴友花雕
驴友花雕
作者
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验一百八十五:MAX4466声音传感器 低功耗驻极体话筒放大器 麦克风可调功放模块 microphone
项目之八:打开串行绘图仪窗口以观察平均音频幅度(简化版本)
程序说明:将 3.3V 连接到 AREF 输入以使用 3.3V 进行 ADC 操作
实验开源代码
[code]/*
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验一百八十五:MAX4466声音传感器 低功耗驻极体话筒放大器 麦克风可调功放模块 microphone
项目之八:打开串行绘图仪窗口以观察平均音频幅度(简化版本)
程序说明:将 3.3V 连接到 AREF 输入以使用 3.3V 进行 ADC 操作
模块接线:
MAX4466 Arduino
VCC 5V
GND GND
OUT A0
*/
int const SAMPLE_WINDOW = 50; // 以毫秒为单位的采样窗口宽度(50 毫秒 = 20Hz)
int const PREAMP_PIN = A0; // 前置放大器输出引脚连接到A0
unsigned int sample;
void setup() {
analogReference(EXTERNAL); // 将 3.3V 连接到 AREF 以提供参考电压
Serial.begin(9600);
}
void loop() {
unsigned long startMillis = millis(); // 示例窗口的开始
unsigned int amplitude = 0; // 峰峰值
unsigned int soundMax = 0;
unsigned int soundMin = 1024;
// 收集 50 毫秒的数据,然后绘制数据
while (millis() - startMillis < SAMPLE_WINDOW) {
sample = analogRead(PREAMP_PIN);
if (sample > soundMax) {
soundMax = sample; // 保存最大级别
}
else if (sample < soundMin) {
soundMin = sample; // 保存最低级别
}
}
amplitude = soundMax - soundMin; // 最大值 - 最小值 = 峰峰值幅度
Serial.println(amplitude);
}[/code]