我如何将数据从Arduino mkr zreo保存到Matlab?

时间:2018-07-06 13:35:40

标签: matlab arduino microphone zero

我正在使用Arduino mkr零通过记忆麦克风录制音频。现在,我想将Arduino中的数据输入到matlab中进行进一步评估。 Arduino支持包仅mkr1000不支持mkr零。是否有一种简单的方法可以将数据直接保存到matlab或至少保存到.txt并随后在matlab中读取?

1 个答案:

答案 0 :(得分:0)

因此,有两种方法可以进行选择,而选择可能仅取决于偏好/经验。

直接将数据发送到Matlab

Matlab已经建立了一个内置Serial Object,用于读写串行端口。以下是在Matlab中使用串行打开,读取,写入和关闭串行端口的示例(“ COM1”是基于Windows的设备,有关更多信息,请参见docs。)

s = serial('COM1','BaudRate',1200);
fopen(s)
fprintf(s,'*IDN?')
idn = fscanf(s);
fclose(s)

因此,您可以直接从Arduino的Serial.write()写入数据,如果Matlab以正确的 baudrate 进行监听,那么工作就很不错了。我建议尽可能高的 baudrate 可以处理您想要的实时内容,但似乎并不需要,因此您总是可以延迟发送数据并将其缓冲(如果需要,可能是文本文件或.mat文件)。

将数据发送到另一个程序

由于Matlab对用户来说(通常不包括工具箱)出现single threaded,因此编写另一个专门用于接收此串行数据的程序可能更有意义。使用另一种语言可能比Matlab运行起来快得多,并且可以帮助您在此过程中学习新技能。

您会发现许多使用多种语言读取串行数据的示例,其中包括我所附的一些以供参考;想法是将数据写入文本文件,并在Matlab准备就绪时从Matlab读取数据:C#JavaRustPython等... < / p>

如果想花哨的话,可以用另一种语言进行所有序列读,然后通过local network sockets将其发送到Matlab。甚至甚至可以将Java's native interface与Matlab结合使用,以同时处理多个Arduino的发送数据(可能是不必要的)。

摘要

如果您想要简单的设置并快速完成工作,我可能会选择第一种方法,但是也许会寻找一种更持久的解决方案。

额外的硬核方法(已被警告)

我假设您正在使用I2S进行录音?因此,例如,SPI可以自由地通过SPI将所有数据传输到PC。您可以使用breakout module将SPI消息转换为I2C,然后链接的I具有虚拟COM端口,因此可以再次用作串行端口。或者,您可以构建自定义驱动程序来读取通过I2C传入的消息。也许您可以将速度提高到高于当前的串行USB端口?比较它们会很酷。