eagler8 发表于 2020-3-8 17:34:11

【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
实验一百五十九:MAX9814麦克风放大器模块 MIC话筒声音放大/咪头传感器

项目测试:串口输出人声波形
模块接线:
MAX9814Arduino
VCC      5V
GND      GND
OUT         A0

eagler8 发表于 2020-3-8 17:35:38

eagler8 发表于 2020-3-9 09:09:44

来自放大器输出的音频信号是变化的电压。要测量声级,我们需要进行多次测量以找到信号的最小和最大范围或“峰到峰幅度”。

在下面的实验中,我们选择50毫秒的示例窗口。这足以测量低至20 Hz(人类听觉的下限)频率的声音水平。

找到最小和最大样本后,我们计算差值并将其转换为伏特,然后将输出打印到串行监视器。

/*
【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
实验一百五十九:MAX9814麦克风放大器模块 MIC话筒声音放大/咪头传感器

项目测试之二:测量声级
模块接线:
MAX9814Arduino
VCC      5V
GND      GND
OUT         A0
*/

const int sampleWindow = 50; // 以mS为单位的采样窗口宽度(50 mS = 20Hz)   
unsigned int sample;

void setup()
{
   Serial.begin(9600);
   pinMode(A0,INPUT);
}


void loop()
{
   unsigned long startMillis= millis();// 样本窗口的开始
   unsigned int peakToPeak = 0;   // 峰峰值

   unsigned int signalMax = 0;
   unsigned int signalMin = 1024;

   // collect data for 50 mS
   while (millis() - startMillis < sampleWindow)
   {
      sample = analogRead(A0);
      if (sample < 1024)// 抛出错误的读数
      {
         if (sample > signalMax)
         {
            signalMax = sample;// 只保存最大级别
         }
         else if (sample < signalMin)
         {
            signalMin = sample;// 仅保存最低级别
         }
      }
   }
   peakToPeak = signalMax - signalMin;// max-min =峰峰值幅度
   double volts = (peakToPeak * 5.0) / 1024;// 转换为伏特

   Serial.println(volts);
}

eagler8 发表于 2020-3-9 09:45:09

【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
实验一百五十九:MAX9814麦克风放大器模块 MIC话筒声音放大/咪头传感器

项目测试之二:测量声级
模块接线:
MAX9814Arduino
VCC      5V
GND      GND
OUT         A0

eagler8 发表于 2020-3-9 09:52:36

eagler8 发表于 2020-3-9 10:04:51

修改为

double volts = (peakToPeak * 5.0) / 255;// 转换为1/4伏特值

eagler8 发表于 2020-3-9 16:54:03

/*
【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
实验一百四十五:MT8870 DTMF语音解码板模块 电话拨号控制音频解码处理电路

第三项实验:用合成DTMF双音多频信号测试咪头传感器和DTMF解码模块
1、安装 "dtmf"库: 下载https://codeload.github.com/DFRobot/DTMF/zip/master
2、需要材料:喇叭1个,68Ω电阻两个,咪头传感器和DTMF解码模块,两块UNO板
3、合成信号硬件连接:在D11,D12引脚各接一个68Ω电阻一端,68Ω电阻另一端接喇叭,然后喇叭另一端接地。
4、咪头模块接线:
MAX9814Arduino
VCC      5V
GND      GND
OUT      IN(接到DTMF)
5、DTMF解码模块接线
DTMF   Arduino
VCC      5V
GND      GND
Q1         12
Q2         11
Q3         10
Q4         9
*/

#include "dtmf.h"

DTMF dtmf;

void setup()
{
Serial.begin(9600);
}

void loop()
{
// 读DTMF代码并且用串行输出
int myDtmf;
myDtmf = dtmf.getDTMF();
if (myDtmf != -1)
    Serial.println(myDtmf);
delay(100); // 以避免收到重复的输出。
}

eagler8 发表于 2020-3-9 16:56:13

DTMF解码识别模块实验视频
https://v.youku.com/v_show/id_XNDU3OTkzOTA4OA==.html

https://v.youku.com/v_show/id_XNDU3OTkzOTA4OA==.html




【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)
实验一百四十五:MT8870 DTMF语音解码板模块 电话拨号控制音频解码处理电路

第三项实验:用合成DTMF双音多频信号测试咪头传感器和DTMF解码模块
1、安装 "dtmf"库: 下载https://codeload.github.com/DFRobot/DTMF/zip/master
2、需要材料:喇叭1个,68Ω电阻两个,咪头传感器和DTMF解码模块,两块UNO板
3、合成信号硬件连接:在D11,D12引脚各接一个68Ω电阻一端,68Ω电阻另一端接喇叭,然后喇叭另一端接地。
4、咪头模块接线:
MAX9814Arduino
VCC      5V
GND      GND
OUT      IN(接到DTMF)
5、DTMF解码模块接线
DTMF   Arduino
VCC      5V
GND      GND
Q1         12
Q2         11
Q3         10
Q4         9

eagler8 发表于 2020-3-9 17:00:17

打开"dtmf.h"库文件查看,发现是针对不同硬件模块的(板上芯片都是MT8870),由于接脚对不上号,故串口输出的解码不对的

页: 1 [2]
查看完整版本: 【Arduino】168种传感器模块系列实验(159)---MAX9814咪头传感...