×

洗衣机洗衣提醒开源硬件

消耗积分:2 | 格式:zip | 大小:0.31 MB | 2022-12-29

李涛

分享资料个

描述

介绍

忘记将衣物放入洗衣机是一个常见的家庭问题。大多数洗衣房都在地窖里,要么在独栋住宅的地窖里,要么在有共用洗衣房的公寓楼里。每个洗涤程序的持续时间都不同,在更复杂的控制程序的情况下,它甚至可能取决于机器的洗涤负荷。这使得跟踪洗涤变得极其困难。操作员倾向于转向其他事情,洗涤会忘记。也许照顾孩子或老人、有约会或其他简单的任务可以很容易地把要洗的衣服从脑海中赶走。由于洗衣机的内部在应用加热的程序后以可能温暖的温度洗涤后潮湿且潮湿,霉菌和细菌会在短时间内开始滋生。在最坏的情况下,操作员会再次清洗衣服,以去除衣服上积聚的污渍和气味。这对衣服和环境都构成了严重威胁。高效洗衣机使用约 60-120 升淡水,每次负载约 1 千瓦时(500 瓦,2 小时)。较旧的型号可以轻松地将使用量增加一倍。此外,再次洗涤衣服会增加织物的磨损。如果德国 3750 万户家庭中只有 1% 每周重新洗涤一次,则相当于每年额外洗涤约 200 万次,即 120.000-240.000m³ 淡水和 2.000MWh。通过提醒操作员忘记洗衣服,LaundReminder 有利于环境、经济,当然还有衣服的主人。操作员再次清洗衣服,以去除衣服上积聚的污渍和气味。这对衣服和环境都构成了严重威胁。高效洗衣机使用约 60-120 升淡水,每次负载约 1 千瓦时(500 瓦,2 小时)。较旧的型号可以轻松地将使用量增加一倍。此外,再次洗涤衣服会增加织物的磨损。如果德国 3750 万户家庭中只有 1% 每周重新洗涤一次,则相当于每年额外洗涤约 200 万次,即 120.000-240.000m³ 淡水和 2.000MWh。通过提醒操作员忘记洗衣服,LaundReminder 有利于环境、经济,当然还有衣服的主人。操作员再次清洗衣服,以去除衣服上积聚的污渍和气味。这对衣服和环境都构成了严重威胁。高效洗衣机使用约 60-120 升淡水,每次负载约 1 千瓦时(500 瓦,2 小时)。较旧的型号可以轻松地将使用量增加一倍。此外,再次洗涤衣服会增加织物的磨损。如果德国 3750 万户家庭中只有 1% 每周重新洗涤一次,则相当于每年额外洗涤约 200 万次,即 120.000-240.000m³ 淡水和 2.000MWh。通过提醒操作员忘记洗衣服,LaundReminder 有利于环境、经济,当然还有衣服的主人。高效洗衣机使用约 60-120 升淡水,每次负载约 1 千瓦时(500 瓦,2 小时)。较旧的型号可以轻松地将使用量增加一倍。此外,再次洗涤衣服会增加织物的磨损。如果德国 3750 万户家庭中只有 1% 每周重新洗涤一次,则相当于每年额外洗涤约 200 万次,即 120.000-240.000m³ 淡水和 2.000MWh。通过提醒操作员忘记洗衣服,LaundReminder 有利于环境、经济,当然还有衣服的主人。高效洗衣机使用约 60-120 升淡水,每次负载约 1 千瓦时(500 瓦,2 小时)。较旧的型号可以轻松地将使用量增加一倍。此外,再次洗涤衣服会增加织物的磨损。如果德国 3750 万户家庭中只有 1% 每周重新洗涤一次,则相当于每年额外洗涤约 200 万次,即 120.000-240.000m³ 淡水和 2.000MWh。通过提醒操作员忘记洗衣服,LaundReminder 有利于环境、经济,当然还有衣服的主人。

设备

该设备主要由一个物联网设备组成,用于监控洗涤程序,并在带有提供的 Particle Photon 作为嵌入式系统控制器的面包板上实现操作。

Particle Photon 包括一个加速度传感器,它将三个传感器(加速度计、磁力计和陀螺仪)组合成一个传感器,以便通过机器的振动检测洗衣机的不同状态。目标尤其是检测旋转状态,它发生在洗涤程序结束时,然后向用户发送邮件通知。

如果识别出洗涤周期结束,设备将启动计时器并每小时向用户发送通知,直到设备感应到将发生的某种影响,例如当衣物被移除时。

多个状态更改/更新通过消息队列遥测传输 (MQTT) 客户端传输到 Losant(云)。Losant 本身提供了设计由各种事件源触发的工作流的功能。已开发 Losant 工作流程(Losant LaundReminder 应用程序)来跟踪设备状态更新。如果设备状态更新包括计时器阈值时间,则会发送 HTTP POST 请求以触发自定义 If-This-Then-That (IFTTT) 事件。然后,IFTTT 事件会触发向用户发送邮件通知,其中包含衣物留在洗衣机中的时间,并温和地提醒您取出衣物。

此外,为了方便在洗衣房中操作设备,锂聚合物/锂离子充电器与 2000mAh 电池一起用作独立电源。

设置

要使该设备运行,用户只需将其放在洗衣机顶部或将其连接到洗衣机的侧面即可,无论方向如何。但是,该设备应牢固地固定在洗衣机上,以使其能够感知家用电器的振动。如果柔软的材料弄湿了洗衣机的运动,设备将无法检测到运行模式。

一旦设备就位,就可以启动它。在首次激活时,该设备将感知并学习其环境。学习阶段允许设备在平静、非操作的情况下感知振动。它将跟踪加速 60 秒,在学习阶段机器和设备都不应移动或推动。学习由红色闪烁 LED 指示,而绿色 LED 亮起表示它正在运行。训练完成后,设备将停止闪烁红色并保持其记忆,直到断电或重置。

设置设备:

1. 开启设备

2. 牢牢固定在洗衣机上

3.确保洗衣机没有洗涤

4.按下按钮后退

5. 等待红色 LED 停止闪烁

 

运行 LaundReminder

设置好设备后,可以使用按钮打开和关闭它。用户也可以让设备始终保持开启状态。要跟踪一次洗涤,设备应该打开(绿色 LED 亮起)。操作员可以照常使用洗衣机。开启时,设备会持续监控加速度。它以 1 分钟为间隔检测到 100Hz 的振动频率,这很难但并非不可能伪造。请注意,只要不等待操作员取出衣物,系统就可以容忍操作员的轻微移动。

一旦设备感应到正在洗涤,它就会关闭绿色 LED 并打开黄色 LED。当洗衣机停止工作时,设备将切换到红色 LED 以表明它已感应到洗衣机已停止运行。如果机器再次开始洗涤,它会简单地切换回黄色 LED。当洗衣机最终返回休息状态时,红色 LED 指示设备认为洗涤已经完成并且计时器处于活动状态。每小时一次,它会通知用户取出衣物。

结论

总的来说,LaundReminder 物联网设备和云应用程序的开发是一个工程示例,其中包含为物联网开发嵌入式系统所需的各个方面。

该项目是伦敦布鲁内尔大学举办的“嵌入式系统工程 - IoT 应用程序原型设计”研讨会的成果,由 Dionysios Satikidis 指导和指导。

项目全体团队成员:

  • 曼纽尔斯坦
  • 迈克·贝特卡
  • 亚历克斯弗里森哈恩
  • 凯文波格曼

是理学硕士 伦敦布鲁内尔大学工程与设计学院的学生。


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

评论(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);