×

如何制作一个传感器

消耗积分:0 | 格式:zip | 大小:1.61 MB | 2022-11-15

刘玉兰

分享资料个

描述

在这个项目中,我们将向您展示我们如何制作一个传感器,该传感器可以告诉您酒吧或酒馆是否挤满了人。

介绍

当您想去酒吧/酒馆但不知道酒吧/酒馆是否已满,是否有派对或空无一人时,您是否曾经遇到过这样的情况,您可以喝一杯聊天? 有了这个应用程序,您将来不会遇到任何此类问题。

描述

这个项目包括一个 Arduino Nano 板,它充当我们的传感器或麦克风,以及一个移动应用程序,它充当我们在我们所在地区寻找酒吧和酒吧的搜索引擎。

 

Arduino 板上的麦克风对酒吧/酒吧的客满程度进行采样。然后,它使用机器学习算法处理这些信息,以确定酒吧/酒吧是否挤满了人。然后,信息通过蓝牙低功耗 (BLE) 发送到连接的手机,我们可以在其中检查我们想去的任何酒吧/酒吧的信息。

机器学习

Edge Impulse 是一个免费的机器学习开发平台。我们使用共享电子邮件创建了一个帐户并创建了一个新项目。这很重要,因为将项目公开或与他人共享不会使他们能够调整模型或帮助您收集数据。

  • 数据采集

收集数据的最佳方式或最简单的方式是使用我们的手机(而不是 Arduino 板),因为它设置起来更简单,获取数据的速度也更快。通过我们手机上的录音机应用程序,我们收集了 3 种不同的数据(语音、音乐和静音)。

我们决定我们每个人都将贡献至少 20 分钟的数据。我们的样本持续时间为 10 秒,这意味着我们每个人至少贡献了 120 个不同数据的样本。由于大流行,我们无法进入酒吧/酒吧,因此我们不得不与家人一起模仿不同的场景。

 
 
 
poYBAGNxjRiAIfsrAAA7hp4PSE4730.png
 
1 / 3静音样本
 

当我们收集到足够的数据时,我们将其上传到 Edge Impulse 数据采集中。Edge Impulse 自动在训练集和测试集之间分割数据。通常,该比率为 80%(训练集)和 20%(测试集),但您可以通过将样本分配到各自的集合来使用我们自己的比率。

pYYBAGNxjRqAHLArAADNNv-qZwE247.png
上传现有数据
 
  • 冲动设计

下一步是创造冲动。选择“创建冲动”后,添加处理块和学习块,然后保存冲动。对于处理模块,我们选择了音频(MFCC)模块,它使用梅尔频率倒谱系数从音频信号中提取特征,非常适合识别人声。对于学习模块,我们选择了神经网络 (Keras) 模块,它从数据中学习模式,并将这些模式应用于新数据。这个块非常适合对运动进行分类或识别音频。

poYBAGNxjRyAQYMEAABU_EH8glc250.png
创造冲动
 

您可以检查/更改/保存“MFCC”下的参数,然后生成特征以查看您收集的数据的表示。要训​​练您的模型,请选择“NN 分类器”并单击“开始训练”。训练完成后,您将获得上次训练性能的准确度、混淆矩阵和结果的 3D 模型。

 
 
 
pYYBAGNxjR-ALTP3AABhzq0Kcz4513.png
 
1 / 33D 模型
 

在此之后,您可以在“模型测试”选项卡下测试您的模型。如果您想提高模型的准确性,您可能不得不使用 MFCC 和 NN Classifier 模块的参数,但您必须小心,因为精度越高,模型的复杂性就会越大,有可能,Arduino Nano 将无法运行该模型。

部署

要使用 Arduino Nano 板,您需要创建正确的库。在“部署”选项卡下,我们选择了“Arduino 库”,Edge Impulse 创建了我们自己的库,该库是基于我们的项目制作的。您将看到一个包含您的模型的 zip 库,然后您可以将其编译到您的 Arduino Nano 上。

现在我们可以检查模型是否正常工作。在串行监视器中,您应该会收到 3 种不同的反馈。如果您与某人交谈,串行监视器应打印出 Talk 标签,如果您正在听音乐,则标签应为 Music,如果无声,则标签应为 Silence。

因为我们需要通过 BLE 连接 Arduino,所以我们稍微修改了从 Edge Impulse 导出的代码。它还会自动连接应用程序,而无需从可用蓝牙设备列表中选择合适的设备。

我们修改了代码,以便 Arduino 可以将正确的标签发送到应用程序。如果 Arduino 阅读的谈话多于音乐和沉默,那么应用程序会告诉我们这个酒吧/酒吧里挤满了人,如果音乐响亮,那么在场人员的交流或沉默应用程序会告诉我们酒吧/酒吧是开着的,但那里的人不多,如果没有音乐也没有人在说话,应用程序应该告诉我们酒吧/酒吧里很安静,这意味着它可能已经关门了。此外,我们修改了我们的代码,使 Arduino 平均使用最后 5 分钟(最后 30 个样本)并每 5 分钟刷新一次,否则实例会发生任何剧烈变化。

移动应用

我们决定使用的移动应用是安卓设备的 Mit2app 发明者,因为它在编程界面的意义上是实用的,速度快,并且易于初学者使用。然而,缺点是图形用户界面设计。编码的框图如下图所示。

 
 
 
poYBAGNxjSGAdRI1AABQY1ZVDcQ190.png
 
1 / 3用于主屏幕和断开连接的块
 

该应用程序易于使用。您只需登录应用程序,然后转到地图,您(将来,因为这只是一个原型)将在那里看到酒吧的标记,并且根据颜色,您可以决定去哪里。

 
 
 
pYYBAGNxjSOAfpDvAACi9z3T9VA030.png
 
1 / 2地图屏幕
 

这是一个视频,向您展示了该应用程序的使用及其工作原理。

 

结论

该应用程序非常适合原型。这个应用程序是为一个酒吧/酒吧制作的,看看它是否可以工作,所以有很多改进需要做,这将显着增强用户体验,在尝试将应用程序投放市场之前应该考虑。

  • 改进

限制我们的第一件事是,由于大流行,所有的酒吧/酒吧都关闭了,所以我们无法在真实情况下进行测试。进行了测试,但只有少数人集中在一个地方。

此外,您应该考虑包括更多的酒吧/酒吧,但问题是要存储收集到的所有数据。为此,您需要更多的 Arduino 或一些麦克风,一个供 Arduino 连接的在线服务器,以及通过服务从具有不同 ID 的酒吧/酒吧发送的数据将被存储在哪里。

该应用程序本身是功能性的,但可以使其更具吸引力。在将任何产品引入市场之前,应考虑切换到本机代码,因为它可以在应用程序设计中提供更大的灵活性。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !