×

Arduino101/tinyTILE BLE:配对太阳镜

消耗积分:0 | 格式:zip | 大小:0.72 MB | 2023-07-11

杨帆

分享资料个

描述

如果您不使用应用程序,而是可以发送一个信号,在社交场合甚至从远处与您有兴趣交谈的人进行眼神交流,会怎样?我不是在提议以不同的方式开始约会。我正在探索蓝牙在人类交互领域的新用途。

当我发现 Intel Curie 模块可以分配为中央和外围 BLE 设备时,我立即想制作这些眼镜。(从此处了解有关 CurieBLE 的更多信息。)感谢 Adafruit 上的教程,3D 打印 LCD 玻璃的参考框架很容易获得。我在Adafruit教程中添加的是同时控制两副眼镜的BLE控制(而不是开关控制),一副眼镜一副眼镜,以及重新设计的3D打印镜框。

这个项目最初是在 Arduino 101 上开发的,原型是在 tinyTILE 上,两者都带有 Intel Curie 模块。即使您将来可能无法获得 Intel Curie 模块,我希望这里的方法仍然有用。我可以想象出许多不同的方式来应用蓝牙中央和外围设备功能,我期待着就此主题进行讨论。

第 1 步 - 开发

两个 Arduino101 和两个 LED 用于开发威廉希尔官方网站 和测试代码。由于最终威廉希尔官方网站 的复杂性,在将所有东西焊接在一起之前从面包板开始总是一个好主意。

对于外围设备,您可以使用 CurieBLE 示例中的代码 -> 外围设备 -> LED 并交换 HIGH 和 LOW(在最后一步中查找原因)。central 的代码在项目末尾提供。它几乎与 CurieBLE -> Central -> LEDcontrol 相同,只是为 LCD 添加了几行。

poYBAGOrwmKAQs2MAADhhtZdloo059.png

pYYBAGOrwnaAfXw-AAYPFg4Im74145.png

Arduino101 与 tinyTILE

TinyTILE 几乎就是 Arduino101 的缩影。主要的中心矩形是 Intel Curie 模块。它们可以用相同的代码闪烁。Arduino101 上的引脚总是更易于使用,但 tinyTILE 的尺寸对可穿戴设备更具吸引力。我喜欢先在 Arduino 101 上开发,然后将所有内容转移到 tinyTILE 上。在此处查看另一个使用 tinyTILE 的项目。如果外形因素对您的项目来说不是问题,请随意使用 Arduino101(请参见此处的示例)。

当我将 Arduino101 更改为 tinyTILE 并将 LED 更改为 LCD 时,我会逐步测试每个组件。

可以修改设计以更好地贴合您的脸型。我发现我的小鼻子有点难捏。现在有一些公司对你的脸进行 3D 扫描并为你定制眼镜,这很棒。

 

我觉得用的Adafruit的Ruiz Brothers的3D打印机肯定比我的好。因为我的里面印了很多辅助材料,很难出来。作为一名用户体验设计师,我对 3D 打印机带来的不便有很多话要说。我想要水溶性支撑材料或不需要支撑材料的打印机或液体/光固化 3D 打印机。

第 3 步 - 组装

Adafruit 教程中关于接线、焊接和安装的建议非常好。你应该检查一下。我只需要添加额外的 tinyTILE 和按钮。小心将电线剪成合适的长度。

poYBAGOrwqCACUPoAAsTWpBb54w685.jpg

第 4 步 - 完成并享受乐趣!

当电源打开时,LCD 上会施加电压,使它们保持黑色太阳镜。当按下主控器上的按钮时,主控器上的电压被关闭,同时通过蓝牙发出信号通知从属器上的电压被关闭,从而使两个眼镜都透明。

pYYBAGOrwt2AOtC0AAs-tpMEQd8248.jpg

1 / 2

只要在 BLE 范围内,两个眼镜就可以控制得相距很远。我在家里测试过。Heart 可以在至少 15 步之外引起 Universe 的注意。

想象一下,不使用按钮而是使用手势、点头或匹配心跳!

 

Heart (master=central) : "I like your sophisticated mind <3"
Universe (slave=peripheral) : "I see you. Let's talk." 

 

 

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

评论(0)
发评论

下载排行榜

全部0条评论

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

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"//m.obk20.com/www/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.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:'Arduino101/tinyTILE BLE:配对太阳镜',//标题 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:"https://www.elecfans.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);