1 TapLock:具有机器学习功能的自行车锁-德赢Vwin官网 网
×

TapLock:具有机器学习功能的自行车锁

消耗积分:0 | 格式:zip | 大小:0.00 MB | 2023-06-15

分享资料个

描述

用今年的技术解决了一个世纪之久的问题——机器学习与自行车窃贼。

多年来,自行车车主不得不忍受自行车被盗的恐惧。这个问题的唯一解决方案是无聊的旧自行车链条,虽然有效,但属于上个世纪的东西。

我们向您介绍:TapLock。一把锁,可以安装在你钢铁野兽的任何地方,保护它免受可能的小偷 - 21 世纪的风格。

pYYBAGNofYiAZhaLAAxRt_jm_iM351.jpg
 

边缘脉冲的机器学习

我们用来实现 ML 的平台是 Edge Impulse。它允许非常用户友好的交互,并允许您自定义 ML 链中的许多参数和块类型。

对于轻敲检测,我们使用了可在 Arduino Nano 33 BLE 感应器上找到的加速度计。默认情况下,Edge 脉冲记录三个单独的轴 5000 毫秒,并将其显示为基于时间的轴向加速度图。

对我们最有效的是通过对所有三个轴上的加速度进行平均来预处理板上的加速度计输出——由它们引起的敲击和振动并没有真正的方向。然后,我们将两个峰值之间的时间作为抽头之​​间的时间,并将其输出为五个抽头序列的四个数字(第一个和第二个峰值之间的时间,以毫秒为单位,第二个和第三个,...)。

pYYBAGNofYqAbuLyAAAJy0w6u9c715.png
.json 示例中的时间值示例。
 

然后将该数据作为 .json 文件导入 Edge 脉冲,窗口大小为 1 ms 和 4 个轴(4 个峰到峰时间)。我们使用了原始数据处理模块和 Keras 神经网络学习模块。我们稍微改变了神经网络参数,使用了 500 个训练周期,学习率为 0.005,最小置信度为 0.60。通过这些设置,我们能够获得 96.4% 的准确率。

poYBAGNofYyAX2VkAACPQwHYEMI115.png
神经网络训练的结果。
 

不同的敲击序列(具有等效的莫尔斯电码)使用如下:

 

蓝牙连接

lock-app蓝牙连接的工作流程如下:

1. Arduino在蓝牙上公开宣传自己,应用程序检查本地名称是否正确。如果它找到一个设备,它是最后一个连接的设备,它会选择它作为优先级。

2. 应用程序检查其本地保存的文件,该文件包含有关上次锁定/解锁状态和地图图钉的信息。

3. 应用程序读取当前 Arduino 状态(锁定/解锁)并更新其文件。

4. 当我们想改变锁状态时,应用程序等待来自锁的确认消息,然后应用程序中的状态才会改变。

 

原生应用

 

应用程序是用编程语言 React Native 开发的。它由三个屏幕组成。第一个允许用户连接 arduino 并锁定/解锁设备。设备在不同的视图中表示为可滚动列表。用户还可以通过长按设备名称来查看设备的更多详细信息,例如电池电量和与设备的距离。

第二个屏幕用于地图。当用户锁定设备时,会在此屏幕上创建一个标记。我们还可以手动创建标记并通过按下标记来存储位置。最后一个屏幕保留用于应用设置(注册、登录)。我们可以通过点击应用程序底部的导航器在屏幕之间导航。

 

3D打印自行车支架

我们设计了一个简单的 3D 打印支架,可以安全地容纳您的 Arduino Nano,并允许您将其安装在自行车上的几乎任何位置。您只需要一台 3D 打印机和一些橡皮筋。安装点的设计方式使得可以使用单个橡皮筋,但如果您想要额外的安全性,您可以将它们加倍。

poYBAGNofZKAKTOyAAi_LfC9OJ0589.jpg
一个简单而有效的案例。
 

微控制器可以安装在自行车车架上的任何位置,并且应该能够读取您在车架上轻敲的任何信号。

注意:在项目的当前阶段,为 Arduino Nano 供电的解决方案是连接到您的自行车的移动电源,通过 USB 电缆连接

pYYBAGNofZaAK8RmAAGBfK0juYY986.png
这三个部件都安装在自行车上。
 

. 我们建议使用橡皮筋和/或鸭带将其固定在自行车上。

这一切是如何结合在一起的

整个包的工作方式如下:

1.您连接到您的锁。

2. 您锁定您的锁,这也会在您当前的位置上放置一个标记。

3.“锁定状态”LED 亮起(一个功能,以后可以扩展,例如将执行器连接到一些引脚以接合锁)

4.然后您可以通过应用程序或正确的点击顺序解锁它。

5. “解锁状态”LED 亮起。

正如您现在可能已经猜到的那样,目前,锁没有任何锁 :) 我们做了基础工作,因此添加您自己的锁定机制相当简单。您唯一需要更改的是输出“锁定”状态的引脚并将其连接到您的机制。

该项目的 ML 部分运行得非常好,并且水龙头通过自行车车架传输,因此可以在距离 Arduino 几厘米的地方进行水龙头。实验 :)

 

 

 


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

评论(0)
发评论

下载排行榜

全部0条评论

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

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"//www.hzfubeitong.com/m/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="https://m.elecfans.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'TapLock:具有机器学习功能的自行车锁',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.hzfubeitong.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);