237|0

34

帖子

4

TA的资源

一粒金砂(中级)

楼主
 

【得捷电子Follow Me第二季第4期】Arduino Nano RP2040 Connect 进阶任务 [复制链接]

  本帖最后由 鲜de芒果 于 2024-12-29 13:34 编辑

1. 任务要求

        学习PDM麦克风技术知识,调试PDM麦克风,通过串口打印收音数据和音频波形。

 

2. 基础知识

        脉冲密度调制(Pulse Density Modulation,简称PDM)是一种数字调制技术,它使用二进制数0和1来表示模拟信号的幅值。在PDM中,模拟信号的幅值通过输出脉冲对应区域的密度来表示,即1的密度越大,代表该区域对应的模拟信号幅值越大,反之亦然。

        麦克风是将物理声音转换为数字数据的部件。麦克风通常用于移动终端、语音识别系统甚至游戏和虚拟现实输入设备。 Arduino Nano RP2040 Connect 开发板上有一颗 MP34DT06JTR 传感器。如下图所示:

        MP34DT06JTR 传感器是一种超紧凑型麦克风,使用PDM(脉冲密度调制)用二进制信号表示模拟信号。MP34DT06JTR 传感器典型参数如下: 信噪比:64dB 灵敏度:-26dBFS ±3dB 温度范围:-40 ~ 85℃

 

3. 功能实现

3.1 原理

        使用PDM 采集数字音频数据,然后再通过串口将数字音频数据发送至上位机,上位机再通过串口接收数字音频数据,使用曲线图绘制音频曲线。

 

3.2 代码实现

  • /**
  • * FollowMe 2-4 任务3:
  • * 1. 学习PDM麦克风技术知识,调试PDM麦克风,通过串口打印收音数据和音频波形。
  • */
  • #include <Arduino.h>
  • #include <PDM.h>
  • static const char channels = 1; // 音频通道数,1:单通道,2:立体声
  • static const int frequency = 20000; // PCM 输出频率
  • short sampleBuffer[512]; // 音频采样缓存区
  • volatile uint32_t samplesRead; // 读取到的音频样本数
  • void setup() {
  • // 初始化串口
  • Serial.begin(115200);
  • delay(1500);
  • // 设置PDM接收回调函数
  • PDM.onReceive(onPDMdata);
  • // 增益设置,可选
  • // PDM.setGain(30);
  • // 初始化 PDM
  • while (!PDM.begin(channels, frequency)) {
  • Serial.println("PDM 初始化失败!");
  • PDM.end();
  • // 延时重试
  • delay(3000);
  • }
  • }
  • void loop() {
  • if (samplesRead) { // 读取到了音频数据
  • // 对音频数据进行处理,这里使用串口输出。上位机可通过串口展示音频波形
  • for (int i = 0; i < samplesRead; i++) {
  • Serial.println(sampleBuffer[i]);
  • }
  • // 处理完毕,清零读取到的音频样本数
  • samplesRead = 0;
  • }
  • }
  • /**
  • * 数据处理回调函数,用于接收PDM麦克风的数据
  • */
  • void onPDMdata() {
  • // Query the number of available bytes
  • int bytesAvailable = PDM.available();
  • // Read into the sample buffer
  • PDM.read(sampleBuffer, bytesAvailable);
  • // 16-bit, 2 bytes per sample
  • samplesRead = bytesAvailable / 2;
  • }

 

4. 效果展示

 

点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

猜你喜欢
随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
有奖直播报名| TI 面向楼宇和工厂自动化行业的毫米波雷达解决方案
【内容简介】TI 60GHz IWRL6432和 IWRL1432毫米波雷达传感器如何帮助解决楼宇和工厂自动化应用中的感应难题
【直播时间】5月28日(周三)上午10:00
【直播礼品】小米双肩包、contigo水杯、胶囊伞、安克充电器

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 3

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表