×

牙仙子物联网产品开源分享

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

分享资料个

描述

沥青

有没有担心过你刷牙不够彻底?您是否曾经思绪飘过,忘记了时间,突然不确定自己刷了 30 秒还是 5 分钟?你有没有忘记你昨晚有没有刷牙?不用再担心了,牙仙已经帮你搞定了。通过手机应用程序和 Arduino Nano 33 BLE Sense 代码的组合,您现在也可以无忧无虑了。此设置使用机器学习来检测您是否在刷牙并开始计算时间。在你完成之后,它甚至会记得你做到了!

项目起源和目标

这个项目的想法是作为我们物联网大学课程的学校项目的一部分而实现的。目标是创建一个物联网产品,利用 Arduino Nano 33 BLE Sense 上的机器学习,然后通过蓝牙将数据提供给用户终端。当然,我们还创建了一个 Android 应用程序,以便以简洁和用户友好的方式显示接收到的数据。

这样的项目分为三个更大的任务:

  • 创建机器学习模型
  • 创建手机应用程序
  • 启用 Arduino 的蓝牙连接

机器学习模型

我们通过收集数据开始我们的工作,然后将这些数据输入机器学习算法。Edge Impulse 网站拥有人们在使用许多方便的工具制作此类项目时所希望的一切。其中之一是收集必要数据的非常简单的方法。只需简单地连接他们的移动设备,其感官信息的任何记录都可以直接上传到网站上的 ML 项目中。最后,我们设法在不同情况下以两小时的时间记录记录数据,从用水槽或淋浴间的水刷牙到洗衣机打开时刷牙。

机器学习模型的创建当时是一项相对简单的任务。在选择了脉冲的处理和学习块后,我们能够训练和测试模型。最终其预测准确率达到了80%左右。模型训练和测试的细节可以在底部的两张图片中看到。

pYYBAGNxJRuAYKW-AADiY9aI85I196.png
模型训练过程的结果
 
poYBAGNxJR2ADSidAACmlHYpA1I496.png
模型测试结果
 

模型构建完成后,我们剩下要做的就是将其导出到我们的 Arduino 设备上。与 Edge Impulse 上的其他所有内容一样,该过程也非常简单明了。在决定是否使用优化后(我们这样做了,因为它只将准确率降低到 70%,我们认为这在很大程度上提高资源使用率的同时仍然可以接受),我们让网站通过单击 a 来构建一个 .zip 库按钮。

poYBAGNxJR-AKyJZAACwmK4ZIJw846.png
优化模型和未优化模型的区别
 

构建的 ML 模型库现已完全准备好在 Arduino IDE 中实现。

Arduino固件

为模型创建一个在 Arduino 板上运行的程序本身也相当容易。该过程是简单地导入由 Edge Impulse 构建的 .zip 库,从示例列表中打开麦克风连续示例,然后将其上传到您的设备。然而,在其默认状态下,您只能使用它通过 USB 电缆和 IDE 的串行监视器将数据发送到您的计算机。由于主要项目的目标之一是能够将数据流式传输到移动设备,因此我们必须做得更好。为了实现 BLE 连接,我们决定使用另一个 IDE 示例中的代码:电池监视器。虽然需要更多的编程知识,但它仍然是一个相对简单的过程,将适当的代码行复制并粘贴到正确的位置,然后编辑一些字符串。我们做的最后一件事是调整预测的输出,以便电路板在检测到刷牙时发送 1,在检测不到刷牙时发送 0。完整的程序列在附件部分下,但在下面的图像中,突出显示了对原始 Edge Impulse 代码所做的更改。

pYYBAGNxJSGACoyHAABQMtRlQWY068.png
在本节中,BLE 服务和特性都被声明为具有自己的自定义 UUID
 
pYYBAGNxJSSAalujAABCEYrqxyQ747.png
setup函数中的BLE初始化代码
 
pYYBAGNxJSaAdO0sAABR8gU0FN8561.png
作为循环功能的一部分,这部分代码不断检查板是否仍然连接
 

 

poYBAGNxJSiACljAAABvk1GmQRs378.png
将预测转换为 1 或 0 并将其发送到连接设备的部分代码
 

 

安卓应用

我们想要实现的应用程序的基本功能是它能够测量一个人刷牙的时间,以及存储最后一次刷牙的日期和时间。随着项目的开发,我们开始添加其他功能:设置,用户可以在其中指定他们的姓名和其他个性化详细信息,写下牙医最后一次就诊的日期以及最后一次更换牙刷的日期的能力,以及更多的。该应用程序的用户界面如下图所示:

poYBAGNxJSyAJW76AAHl3HI7kCI670.png
应用程序的主屏幕
 
pYYBAGNxJS6ACRQxAAD8n5Ma0jw440.png
应用程序的选项屏幕
 
pYYBAGNxJTCABvjiAAE0IHJifAc778.png
应用程序的牙医预约屏幕
 
poYBAGNxJTOAI_MjAAFGoPTJknc506.png
应用程序的牙刷更换屏幕
 

如前所述,我们在 MIT App Inventor 中创建了代码。随着我们项目的进展,应用程序的代码大小急剧增加。这就是为什么我们将只提供一段代码作为示例,但如果您对应用程序的内部工作感兴趣,我们邀请您下载提供的 MIT Inventor 项目文件并开始自己探索和试验。

 

poYBAGNxJTaAcUwYAAJKDombTu8713.png
部分主屏幕代码
 

 


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

评论(0)
发评论

下载排行榜

全部0条评论

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