×

通过LDR传感器根据周围的光强度自动改变LED强度

消耗积分:0 | 格式:zip | 大小:0.16 MB | 2022-11-23

王银喜

分享资料个

描述

一、简介:

该项目是通过 LDR 传感器根据周围的光强度自动改变 LED 的强度。这是通过 python 代码完成的。LDR 的读数映射到 LED 的强度范围,并使用脉冲宽度调制 (PWM) 生成可变输出。如果该系统用于监测光敏环境的光强度,例如某种药物储存,那么光强度的突然变化可能是有害的。使用 Z 分数分析检测到这种突然的变化,并在 Twilio 中创建了一个警报系统来发送 SMS 警报。

2.LED自动控制

在本节中,我们研究项目的“自动”功能,即根据周围环境的亮度自动改变 LED 的强度。使用 LDR 测量周围环境的亮度。

2.1 LED 和 LDR 的威廉希尔官方网站 连接

下面给出了 LED 和 LDR 与螺栓模块的威廉希尔官方网站 连接,用于根据周围环境的亮度实现自动 LED 强度。

 

pYYBAGN6xxuAT1PeAABjO50OWLQ025.png
 

LDR 的输入来自模拟引脚 A0,LED 的输出写入数字引脚 0。LDR 端子没有极性。使用螺栓模块的 3.3V 引脚为 LDR 供电。LDR 上的电阻随着落在其上的光强度的变化而变化。由于 Bolt 模块无法读取电阻值,但它可以读取电压值,因此制作了一个分压器威廉希尔官方网站 ,并且 Bolt 模块的输入是 10k 电阻上的电压(因为它连接在 LDR 端子和地之间),这取决于关于 LDR 的电阻。LED 的较长端子连接到较高的电位,较短的端子连接到较低的电位。这里较短的端子接地,较长的端子通过串联的 330k 电阻连接到数字引脚 0。数字引脚 0 输出(取决于 LDR/A0 引脚输入)充当 LED 的电源并因此确定。它的强度。

2.2连接螺栓云:

首先,我们必须将螺栓连接到云端。连接到 clocd 后,设备将在线。

poYBAGN6xx6APBGFAAE1J6Q4hGE876.png
 

上图将确保设备在线。

然后转到 API 部分以了解用于发送短信警报的 API 值。

pYYBAGN6xyKALrk1AAEn8jMeWQ0155.png
 

2.3 LDR 值到 LED 值的映射

LDR 的取值范围是从 0 到 1024,而 LED 的取值范围是从 0 到 255。显然,一对一的映射是不可能的,但可以进行大约 4:1 的映射。执行如下:input_to_LED = 255 - (output_from_LDR / 4) LDR 的输出从 255(LED 的最大强度)中减去,因为映射必须反向进行,即周围环境中的亮度越高,LED 的亮度越低.

2.4光强突变检测(Z-评分分析)

Z分数分析用于异常检测。此处的异常是指变量的值(周围环境的光强度)超出某个值范围。值的范围称为界限(上限和下限)。这些界限是使用输入值、帧大小和乘法因子计算的。帧大小是 Z 分数分析所需的最小输入值数量,乘法因子确定边界与输入值曲线的接近程度。

poYBAGN6xyiAHzcvAAAiM086aww357.png
 

上面给出的是计算边界的公式。这里输入表示为“Vi”,“r”表示帧大小,“C”是乘法因子。首先,我们计算输入值的平均值(Mn)(对于每个新输入,再次计算平均值)。每个输入值的变化(来自平均值)为 (Vi - Mn)^2。Z 分数 (Zn) 的计算如上所示(每个输入值的变化平均值的平方根乘以乘法因子)。界限表示为“Tn”,上限计算为 (Vi + Zn),下限计算为 (Vi - Zn)。

帧大小和倍增因子是使用试错法确定的。

2.5创建 Twilio帐户:

转到 twilio 网站并使用您用于创建云的邮件 ID 创建一个帐户。

在 twilio 中创建试用版后,请确保您已提供必要的详细信息并输入您喜欢的手机号码以接收警报短信。

poYBAGN6xy2ARC6HAAH-vZlbmiw242.png
 

完成上述所有步骤后,将出现上述页面。

记下 SID 号和 AUTH TOKEN 以便写入 python 代码。

来自Twilio 的警报短信:

 

pYYBAGN6xzmAFAeuAAC9PDRI4ok805.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:'通过LDR传感器根据周围的光强度自动改变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);