用今年的技术解决了一个世纪之久的问题——机器学习与自行车窃贼。
多年来,自行车车主不得不忍受自行车被盗的恐惧。这个问题的唯一解决方案是无聊的旧自行车链条,虽然有效,但属于上个世纪的东西。
我们向您介绍:TapLock。一把锁,可以安装在你钢铁野兽的任何地方,保护它免受可能的小偷 - 21 世纪的风格。
我们用来实现 ML 的平台是 Edge Impulse。它允许非常用户友好的交互,并允许您自定义 ML 链中的许多参数和块类型。
对于轻敲检测,我们使用了可在 Arduino Nano 33 BLE 感应器上找到的加速度计。默认情况下,Edge 脉冲记录三个单独的轴 5000 毫秒,并将其显示为基于时间的轴向加速度图。
对我们最有效的是通过对所有三个轴上的加速度进行平均来预处理板上的加速度计输出——由它们引起的敲击和振动并没有真正的方向。然后,我们将两个峰值之间的时间作为抽头之间的时间,并将其输出为五个抽头序列的四个数字(第一个和第二个峰值之间的时间,以毫秒为单位,第二个和第三个,...)。
然后将该数据作为 .json 文件导入 Edge 脉冲,窗口大小为 1 ms 和 4 个轴(4 个峰到峰时间)。我们使用了原始数据处理模块和 Keras 神经网络学习模块。我们稍微改变了神经网络参数,使用了 500 个训练周期,学习率为 0.005,最小置信度为 0.60。通过这些设置,我们能够获得 96.4% 的准确率。
不同的敲击序列(具有等效的莫尔斯电码)使用如下:
lock-app蓝牙连接的工作流程如下:
1. Arduino在蓝牙上公开宣传自己,应用程序检查本地名称是否正确。如果它找到一个设备,它是最后一个连接的设备,它会选择它作为优先级。
2. 应用程序检查其本地保存的文件,该文件包含有关上次锁定/解锁状态和地图图钉的信息。
3. 应用程序读取当前 Arduino 状态(锁定/解锁)并更新其文件。
4. 当我们想改变锁状态时,应用程序等待来自锁的确认消息,然后应用程序中的状态才会改变。
应用程序是用编程语言 React Native 开发的。它由三个屏幕组成。第一个允许用户连接 arduino 并锁定/解锁设备。设备在不同的视图中表示为可滚动列表。用户还可以通过长按设备名称来查看设备的更多详细信息,例如电池电量和与设备的距离。
第二个屏幕用于地图。当用户锁定设备时,会在此屏幕上创建一个标记。我们还可以手动创建标记并通过按下标记来存储位置。最后一个屏幕保留用于应用设置(注册、登录)。我们可以通过点击应用程序底部的导航器在屏幕之间导航。
3D打印自行车支架
我们设计了一个简单的 3D 打印支架,可以安全地容纳您的 Arduino Nano,并允许您将其安装在自行车上的几乎任何位置。您只需要一台 3D 打印机和一些橡皮筋。安装点的设计方式使得可以使用单个橡皮筋,但如果您想要额外的安全性,您可以将它们加倍。
微控制器可以安装在自行车车架上的任何位置,并且应该能够读取您在车架上轻敲的任何信号。
注意:在项目的当前阶段,为 Arduino Nano 供电的解决方案是连接到您的自行车的移动电源,通过 USB 电缆连接
. 我们建议使用橡皮筋和/或鸭带将其固定在自行车上。
整个包的工作方式如下:
1.您连接到您的锁。
2. 您锁定您的锁,这也会在您当前的位置上放置一个标记。
3.“锁定状态”LED 亮起(一个功能,以后可以扩展,例如将执行器连接到一些引脚以接合锁)
4.然后您可以通过应用程序或正确的点击顺序解锁它。
5. “解锁状态”LED 亮起。
正如您现在可能已经猜到的那样,目前,锁没有任何锁 :) 我们做了基础工作,因此添加您自己的锁定机制相当简单。您唯一需要更改的是输出“锁定”状态的引脚并将其连接到您的机制。
该项目的 ML 部分运行得非常好,并且水龙头通过自行车车架传输,因此可以在距离 Arduino 几厘米的地方进行水龙头。实验 :)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !