37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百四十九:MAX9814麦克风放大器模块 MIC话筒声音放大/咪头传感器
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百四十九:MAX9814麦克风放大器模块 MIC话筒声音放大/咪头传感器
第三项实验:用合成DTMF双音多频信号测试咪头传感器和DTMF解码模块
Arduino实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百四十九:MAX9814麦克风放大器模块 MIC话筒声音放大/咪头传感器
第三项实验:用合成DTMF双音多频信号测试咪头传感器和DTMF解码模块
1、安装 "dtmf"库: 下载https://codeload.github.com/DFRobot/DTMF/zip/master
2、需要材料:喇叭1个,68Ω电阻两个,咪头传感器和DTMF解码模块,两块UNO板
3、合成信号硬件连接:在D11,D12引脚各接一个68Ω电阻一端,68Ω电阻另一端接喇叭,然后喇叭另一端接地。
4、咪头模块接线:
MAX9814 Arduino
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); // 以避免收到重复的输出。
}
DTMF解码识别模块实验视频
https://v.youku.com/v_show/id_XNDU3OTkzOTA4OA==.html
打开"dtmf.h"库文件查看,发现是针对不同硬件模块的(板上芯片都是MT8870),由于接脚对不上号,故串口输出的解码不对的
制作简易录音机
1、下载安装TMRpcm库,地址https://github.com/TMRh20/TMRpcm
https://gitee.com/hu1023/TMRpcm
2、解压缩后,打开文件夹,用记事本打开pcmConfig.h
3、TMRpcm里面还有一个用于录音的方法,源码中是被注释掉的,在安装该库之后需要打开源码库中的pcmConfig.h文件将以下的行取消注释,否则会编译不通过:
#define buffSize 128 //must be an even number
#define ENABLE_RECORDING // Amount of space to pre-allocate for recording
#define BLOCK_COUNT 10000UL // 10000 = 500MB 2000 = 100MB
保存,然后手动添加该库。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百四十九:MAX9814麦克风放大器模块 MIC话筒声音放大/咪头传感器
项目:MAX9814简易录音机
接线:MAX9814接A0
MicroSD uno
CS-------------10
MOSI(DI)------11
MISO(DO)------12
CLK------------13
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百四十九:MAX9814麦克风放大器模块 MIC话筒声音放大/咪头传感器
项目:MAX9814简易录音机
接线:MAX9814接A0
MicroSD uno
CS-------------10
MOSI(DI)------11
MISO(DO)------12
CLK------------13
*/
#define buffSize 128 //must be an even number
#define ENABLE_RECORDING // Amount of space to pre-allocate for recording
#define BLOCK_COUNT 10000UL // 10000 = 500MB 2000 = 100MB
#include
#include
#include
#define SD_ChipSelectPin 10
TMRpcm audio; // 创建一个用于此程序的对象
void setup() {
audio.speakerPin = 4;
Serial.begin(115200);
if (!SD.begin(SD_ChipSelectPin)) {
Serial.println("SD Fail");
return;
} else {
Serial.println("SD OK");
}
// 音频库需要知道使用哪个 CS pin 进行录音
audio.CSPin = SD_ChipSelectPin;
}
void loop() {
if (Serial.available()) { //通过串行发送命令进行播放
char c = Serial.read();
Serial.println(c);
switch (c) {
case 'r': audio.startRecording("test.wav", 16000, A0); break; //在引脚 A0 上以 16khz 采样率记录
case 'R': audio.startRecording("test.wav", 16000, A0, 1); break; //录音,但要直通到扬声器
case 't': audio.startRecording("test.wav", 16000, A0, 2); break; //不记录, 直接输出到扬声器
//注意:如果样本在写入前被丢弃,则
//在直通模式下不会被听到
case 's': audio.stopRecording("test.wav"); break; //停止录音
case 'p': audio.play("test.wav"); break; //播放录音
case '=': audio.volume(1); break; //音量加1,不影响录音
case '-': audio.volume(0); break; //音量减1,不影响录音
case 'S': audio.stopPlayback(); break; //停止所有播放
}
}
}
Arduino实验场景图
实验中使用串口命令,返回情况截图
在电脑上打开TF卡,发现确有一个名为“test.wav”的录音文件,直接播放该文件,声音非常小,看来只是个简单的演示实验
直通小喇叭模式,声音小的听不到
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百四十九:MAX9814麦克风放大器模块 MIC话筒声音放大/咪头传感器
程序:通过读取MAX9814咪头模块输入的电压值来控制电平模块的亮灯数量(0-5)
实验接线:MAX9814咪头模块OUT接Uno的A0,电平模块接D6(pwm)
Arduino实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百四十九:MAX9814麦克风放大器模块 MIC话筒声音放大/咪头传感器
程序:通过读取MAX9814咪头模块输入的电压值来控制电平模块的亮灯数量(0-5)
实验接线:MAX9814咪头模块OUT接Uno的A0,电平模块接D6(pwm)
*/
int levelModule = 6;
int readValue = 0; //保存读到的模拟值
int ledValue = 0; //保存LED灯占空比
void setup() {
pinMode(levelModule, OUTPUT); //数字口要选择带~号的具有pwm功能的输出口
}
void loop() {
readValue = analogRead(A0); //读取A0模拟口的数值(0-5V 对应 0-1024取值)
ledValue = map(readValue, 0, 1023, -1, 6);
// 将0到1024之间的数据映射成-1到6之间的数据
analogWrite(levelModule, ledValue); //PWM最大取值6
}
动感节奏灯实验场景图
使用MAX9814咪头模块的动感节奏音乐旋律电平灯(测试视频40秒)
https://v.youku.com/v_show/id_XNTE2OTUyMzgwOA==.html?spm=a2hcb.playlsit.page.1