×

万圣节的社交距离,语音激活的糖果幻灯片

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

分享资料个

描述

几年前,我父母给我买了一个谷歌 AIY 语音套件作为生日礼物,我从来没有用过。不过,今年,由于适当的 COVID 安全预防措施在万圣节期间非常重要,我看到这些远离社交的糖果幻灯片出现在互联网上:https ://blog.adafruit.com/2020/10/25/make-a-糖果幻灯片供不给糖就捣蛋的人/ 我意识到如果我制作一个声控、远离社交的糖果分配器,我可以很好地利用 AIY 工具包。这个项目的好处:

- 促进社交距离

- 不会传播 COVID-19

- 鼓励适当的万圣节礼仪(你需要正确地说“不给糖就捣蛋”)

- 为邻里儿童带来欢乐

- 帮助我了解 Raspberry Pi 和 Google Cloud 服务

- 乐趣

自从几年前我拿到了 AIY 语音套件,我拥有的版本是 V1。AIY Voice Kit 的最新版本是 V2。这可能会更改用于激活继电器的 GPIO 引脚,并且您不必像我一样在新版本中进行任何焊接来连接到 GPIO 引脚。

我首先按照教程设置 Google AIY Voice Kit。您可以在此处找到说明和购买信息。https://aiyprojects.withgoogle.com/voice/

一旦 Voice Kit 启动并运行,并且我可以成功运行 Google Assistant 应用程序并执行基本的语音识别程序,我想对其进行修改,以便识别“不给糖就捣蛋”这句话会激活电机。我的第一次尝试是步进电机,但我的步进电机太弱了,无法驱动我的糖果分配器,而且经常会堵塞。我有一个朋友给我的齿轮直流电机;我在网上找不到相同的直流电机,但我拥有的那个与组件列表中建议的减速电机并没有太大区别。我的电机非常缓慢而强大,以 8-10RPM 的速度运行。我将此电机连接到一个继电器,该继电器由 Raspberry Pi 的一个 GPIO 引脚触发。访问 Google Voice Kit V1 上的 GPIO 引脚是一项相当大的操作。Raspberry Pi 被称为 Voice Hat(新版本称为 Voice Bonnet)的防护罩覆盖,Voice hat 断开了一些 GPIO 引脚并将它们标记为“伺服”输出。我将接头与 GND 线一起焊接到这些伺服输出上,并将 10 英尺长的电线连接到接头上。Voice Kit 位于糖果滑梯的末端,它触发继电器以驱动位于糖果滑梯顶部的电机。

我打开盒子,焊上东西,然后又把盒子关了很多次,现在它比盒子还多。我最终需要的唯一引脚是 Servo0 (GPIO26) 和 GND。在新的 Voice Bonnet 上,GPIO 引脚通过 PIND 标记为 PINA,它们甚至有自己的 Python API,因此更容易处理。

poYBAGN6fheAdUlPAAFPsW9Uiwc126.jpg
这个纸板箱既聪明又紧凑,我把它弄残了。这些电线通过 Servo3 和 GND 焊接到 Servo0。
 

我写了一个小代码让套件识别“不给糖就捣蛋”这个短语,然后打开继电器来驱动电机几秒钟,它工作得很好。

 

我决定如果我有规则形状的糖果可以分发,而不是我通常分发的那种奇怪的彩虹糖和星爆糖,这个项目会更好地工作。所以我从一家自动售货机供应公司订购了一大盒装在 2 英寸胶囊中的 Squishimals。这些几乎是球形的东西不太可能堵塞我的机器!https://www.candymachines.com/Squishimals-Vending-Capsules-P6915.aspx 我 3D 打印了一个用于电机末端的支架,以及一个类似于口香糖机中所示的分配轮。为了把整个事情放在一起,我从沃尔玛买了便宜的万圣节水桶,并在两者上切了类似的洞。我将电机轴穿过底部桶,连接电机支架和分配器轮,放入几个烧烤串来支撑顶部桶,然后将顶部桶放在上面。这就是它的样子。

poYBAGN6fh2ADJPyAAsnVfxpxRA181.jpg
电机、电机支架和分配器轮插入桶底部的孔中。
 
poYBAGN6fiWAReZ4AAtrhJUqlgw277.jpg
分配器轮顶部的叉子支撑顶部桶。
 

糖果分配器绝对是整个项目中最难的部分,我制作的分配器大部分时间都可以工作,但确实需要监控,因为它仍然会堵塞。

poYBAGN6fiiANZDUAAO4sc5-zLw073.jpg
 

谢谢阅读!有一个安全和快乐的万圣节!


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

评论(0)
发评论

下载排行榜

全部0条评论

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

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/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:'万圣节的社交距离,语音激活的糖果幻灯片',//标题 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.obk20.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);