这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » Arduino Nicla Vision 开发指南【板载麦克风使用】

共1条 1/1 1 跳转至

Arduino Nicla Vision 开发指南【板载麦克风使用】

菜鸟
2025-12-16 21:24:38     打赏

一、硬件介绍

1、产品特点

Arduino Nicla Vision 搭载STM32H747AII6 双核芯片(Cortex-M7_480MHz + Cortex-M4_240MHz),板载六轴智能运动传感器、集成麦克风和距离传感器、Wi-Fi和蓝牙模块、以及一个200万的彩色摄像头; image-20251201235158510.png


特性

image.png


系统框图


image-20251202202441525.png



功率


image-20251202204111527.png



二、数字麦克风 (MP34DT06JTR)

MP34DT06 数字MEMS全向麦克风,通过电容感测元件工作,信噪比高(64 dB),该感应元件能够检测声波,Nicla Vision 的内置高性能麦克风是MP34DT06JTR;

image-20251202212510282.png

特性


122.5dBSPL AOP

64dB SNR

全向灵敏度

–26dBFS±1dB灵敏度

PDM输出


原理图

image-20251211215252691.png





三、代码编写

通过板载PDM数字麦克风中实时采集音频数据,并通过串口将原始音频采样值输出;

采用 单声道 模式,采样率为 16 kHz


#include <PDM.h>

// 默认输出通道数 (单声道)
static const char channels = 1;
// 默认 PCM 输出采样率
static const int frequency = 16000;
// 用于存储采样数据的缓冲区,每个采样为 16位
short sampleBuffer[512];
// 已读取的音频采样数量
volatile int samplesRead;


void setup() {
  Serial.begin(115200);
  while (!Serial); 

  // 配置 PDM 数据接收完成时的回调函数
  PDM.onReceive(onPDMdata);

  // 初始化 PDM 麦克风:
  if (!PDM.begin(channels, frequency)) {
    Serial.println("启动 PDM 失败!");
    while (1); 
  }
}


void loop() {
  if (samplesRead) {
    for (int i = 0; i < samplesRead; i++) {
      Serial.println(sampleBuffer[i]);
    }
    // 清空已读采样计数,等待下一批数据
    samplesRead = 0;
  }
}


// PDM接收完成时的回调函数
void onPDMdata() {
  // 查询当前可用的字节数
  int bytesAvailable = PDM.available();
  // 从 PDM 接口读取数据到缓冲区
  PDM.read(sampleBuffer, bytesAvailable);
  // 每个采样占 2字节
  samplesRead = bytesAvailable / 2;
}


image-20251212210655876.png











关键词: Arduino Nicla Vision    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]