×

Tele-LED舒适休息提醒开源项目

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

尤立虔

分享资料个

描述

 
pYYBAGOYpASAFWWsAA509tgp_8E811.jpg
 
1 / 2那些LED 比现实生活中的更红!

灵感

 
 
 
 
pYYBAGOaagaAc9dgABMkz7GHhFE051.jpg
 
1 / 3尘土飞扬的东西,被忽视的东西
 

在我办公室角落里盯着这个奇怪的旧手机一个月后,我认为它是时候真正做点什么了。我不想花太多时间或金钱在上面,所以决定只使用我在车间里有的零件,作为一种挑战。

大约两年前,我在街头古董展上拿起电话,但一直无法弄清楚它的用途,它有一个格栅而不是表盘,但里面没有扬声器——据说它来自当地的空军基地,所以可能有是某种对讲机或分机。

我决定将它与一个Kitronik Zip Halo LED 环配对——它的尺寸恰到好处,并且已经在车间困扰了一年多,未使用过。它没有被使用,因为从技术上讲它是为 bbc micro:bit 设计的,但最终找到了它的用途,我意识到它只是一个装扮好的NeoPixel 环,并且可以像任何其他WS2812B RGB LED 条一样进行控制。

推破

 
 
 
 
pYYBAGOaagyAcMJtAAl5fIN8haI080.jpg
 
1 / 4让环与 Raspberry Pi 一起工作
 

在快速拆卸和清理之后,电话部件变得更容易接近,我开始将它们与 Raspberry Pi 连接起来。

原来的按钮是最简单的,这是一个早期的微动开关,带有螺丝端子,所以很容易连接到一些母跳线。小红灯有点棘手,但只需要将其灯泡更换为白色 LED,否则灯座会完好无损,再次连接到跨接电缆。

接下来,我希望能够举起手机的听筒来重置休息计时器,因此将万用表设置为“电阻”,我开始测试手机上原始螺丝连接的不同组合,最终绊倒了一对端子将直接连接到接收器开关。

我对蜂鸣器有点不确定,因为它被标记为“12v”——我考虑使用一个小型继电器板和一个 9v 电池,但经过测试,我意识到它在 3v 时会发出很好的蜂鸣声,所以直接将它连接到跨接电缆.

接线和 Pi 设置

 
 
 
 
poYBAGOaahOAZ2fxABAqQzN4nXM787.jpg
 
1 / 3大量空间 - 一次
 

我在所有开关上都使用了很长的跨接电缆,因此组装起来并不困难。首先,我用一些粘性螺栓(3m 电缆扎带支架,带有钻过的小螺栓)将 Raspberry Pi 板固定到位,然后将这些部件一个接一个地连接到 GPIO。

除了连接到 5v、GND 和 GPIO18 的 NeoPixel 环之外,组件设置如下:

GPIO12(输入)-原装按钮GPIO16(输入)-手机接收器开关GPIO14(输出)-原装电话蜂鸣器GPIO26(输出)-灯LED

为了让 Pi 与 NeoPixel 环一起工作,我首先为基于相同类型 LED 的威廉希尔官方网站 板安装了一些软件(Pimoroni Unicorn HAT ):

curl -sS https://get.pimoroni.com/unicornhat | bash

这个设置脚本完成了大部分艰苦的工作,如果您需要控制 WS2812B LED,我建议您试一试,它附带了一些很好的示例。根据条带/环中的 LED 数量,您可能需要编辑...

sudo nano /usr/local/lib/python3.7/dist-packages/unicornhat.py

...因为这控制(我很确定)软件期望找到的 LED 数量。

在掌握了基础知识后,我编写了一个 Python 脚本来控制 LED 和蜂鸣器,并与两个开关集成在一起。这需要一些试验和错误,但我使用的脚本可以在GitHub上找到- 它可以很容易地适应使用不同的输入和输出。它有效,但并不完美!

设置的最后一部分是让脚本在启动时运行,所以我编辑了......

sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

...添加行...

sudo python3 /home/pi/timer.py &

..到文件末尾,保存并重新启动。

组装的最后一部分是将手机壳的两半放在一起 - 方便地通过原始螺栓固定到位。

休息一下

 
 
 
 
pYYBAGOaahmABLOSAA20U-q26JE934.jpg
 
1 / 3有吸引力,但有点唠叨
 

我现在真的很喜欢这款手机,它安静地坐在办公室的角落里,看起来不错,有一份工作(偶尔强迫我搬家)并且做得很好。它既有趣又快速构建,但很难拍摄 - LED 比图片中的更亮更生动!

我总是每周有几天在家工作,在正常情况下,这是一次长时间工作并完成更多工作的机会,而不会分心。

但是,当您每天都在家办公时,这不是一种可持续的工作方式,在这样的长途情况下,为了(尤其是在我的情况下)您的下背部和心理健康,进行这些小小的舒适休息非常重要.

感谢阅读,保持安全并休息一下家庭工作者!

我的其他旧技术、新规范项目都在https://www.hackster.io/martin-mander/projects上的 Hackster

更多详细信息请参见网站http://bit.ly/OldTechNewSpec 我在 Twitter @OldTechNewSpec上


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

评论(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:'Tele-LED舒适休息提醒开源项目',//标题 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);