×

基于Arduino 33 BLE的智慧教室

消耗积分:0 | 格式:rar | 大小:9.54 MB | 2022-12-14

香香技术员

分享资料个

方案介绍

介绍
我们都遇到了到达公共图书馆或共享学习空间的问题,准备学习和工作,却发现没有可用空间。在我们的项目中,我们旨在通过引入一个跟踪座位占用情况的应用程序来解决这个问题,并提前通知您可用空间。

描述
我们的项目由两个主要部分组成,椅子和一个 Android 应用程序。

椅子上牢固地连接着一个 Arduino Nano 33 BLE,它通过人工智能增强程序跟踪椅子的占用情况,该程序已经学习并在我们的坐姿习惯上进行了测试。

蓝牙和 Arduino

对于该项目,我们使用了 Arduino 33 BLE,因为它包含一个蓝牙模块和一个加速度计,这两者都使编写程序更容易,因为外部变量和潜在问题更少。

我们使用预定义的 ArduinoBLE 库初始化 Arduino 的蓝牙连接,然后我们使用示例蓝牙程序的某些部分来帮助我们开始。

我们必须注册一个新的 BLE 服务,通过该服务,数据将以“1”或“0”的字符串形式发送和接收,指示椅子是否被占用。

设置本地名称后,我们只发送电池状态并查看 Arduino 是否连接到手机来测试 BLE 连接。幸运的是它做到了,所以我们进入了项目的下一部分,即机器学习算法。

机器学习细节
为了提供占用检测,我们对用户坐下或站立时产生的特定振动模式实施了边缘机器学习分析。这是使用 Edge Impulse 库完成的。为了提供训练神经网络的良好数据集,我们记录了大约五分钟的标记记录以及测试/验证数据。

在进行神经分析之前,数据被分成两秒的块并使用频谱分析进行参数化。这会产生一个包含 207 个特征的向量,然后将其传递到具有 207 个神经元的输入层。使用具有 96、56 和 30 个神经元的三个隐藏层,最后使用一个具有 3 个神经元的输出层,代表三个分类标签:坐下、站立和空闲。在我们标记的测试数据上,准确率达到了 93%。

然后将分类模型导出为 Arduino 库并与我们的设备固件集成,该固件分析神经网络生成的标签

首先,我们从 Edge Impulse 网站下载了 .zip 库,并打开了一个名为 nano_33ble_sense_accelerometer_continuous 的示例程序。程序持续跟踪椅子的占用情况,并每秒通过串行连接传输状态。我们在实际应用中测试了该程序的准确性,并对结果感到满意,因为它始终检测到正确的条件。

为了接收和显示数据,我们使用了一个 MIT 应用程序发明者开发的安卓应用程序。它是快速原型和开发相当复杂的应用程序的有用工具。

该应用程序有 3 个主要屏幕和功能:

在主屏幕上,您连接到 arduino 的 BT 模块,并可以显示椅子的占用数据。在顶部,您可以选择要检查占用率的库(现在您只选择库并没有真正发生,因为我们还没有实现全局数据库或服务器,您可以将数据保存到其中)访问其他两个屏幕在主页上有两个按钮。

每个页面都有自己的scratch代码,但只是为了了解一下,这里是主屏幕的部分代码,但最后你也可以找到mit app发明者的文件,在那里你可以进一步探索细节的代码。并确定占用状态:空闲或占用。为了提供直接的视觉反馈,控制 RGB LED 以反映占用情况 - 绿色表示空闲,红色表示占用。

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

评论(0)
发评论

下载排行榜

全部0条评论

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