×

使用英特尔Edison和thethings.IO的自动窗帘

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

李英

分享资料个

描述

 
poYBAGSAhoqAfgFIAAFqZGsF5H0625.jpg
 

时间流逝,事情变老,所以,他们终于打破了。百叶窗也不例外。

这也是我们购买窗帘的原因之一。不仅为了美观,而且为了过滤我们房间的光量或维护我们的隐私。

但是,如果我们想最大限度地利用前面提到的特性呢?让我们把普通窗帘变成智能窗帘吧!

第 1 步:我们的自动窗帘将:

- 早上 7 点自动打开:窗帘将滚动以利用可用的自然光并在白天保持房间内的良好温度。

- 晚上 9 点自动关闭:窗帘会展开,以提供良好的睡眠环境,并防止好奇的人透过窗户看到。

+ 由于缺少手动移动窗帘的机制,应该远程触发。在这种情况下,我们使用 Pebble 经典智能手表。

+ 由于每天的天气可能不同,光线传感器将决定是否卷起窗帘。

第 2 步:要求:

 
pYYBAGSAho6AWZi5AAFosS8lsWo277.jpg
 

- Intel Edison 模块 + arduino 扩展板。

- 格罗夫基地盾。

- 28BY J48 步进电机。

- Seedstudio 步进电机驱动器

- Seedstudio 光传感器。

- 微型 USB 电缆。

- 跳线。

- 6 根公对母 0.1” 电缆。

- 12v 适配器。

第 3 步:硬件连接:

我们将 12V 适配器连接到我们的爱迪生和底座屏蔽。光传感器连接到 A0 连接器中的底座屏蔽。

步进电机仅以一种可能的形式连接到驱动器。步进驱动器通过以下映射连接到爱迪生:

在 (1 ->4) -> 引脚 (8 ->11)

GND -> 引脚 GND

Vcc -> 引脚 5V

第 4 步:机械安装和调整:

 
poYBAGSAhpGAOc7eAAECcBDbeOo312.jpg
 

窗帘自带齿轮,但电机只有简单的平面输出。

因此,制作了定制设计的 3D 打印齿轮。

之后,安装了两个元件以安装窗帘的齿轮。这是用 90o 角钢件完成的。

第五步:爱迪生开发。使用的IDE和代码:

 
poYBAGSAhpOAE_ttAAEHytQXxVM545.jpg
 

intel Edison 提供javascript代码解释。通过英特尔 XDK IoT IDE,可以使用 javascript 对 Edison 引出线进行编程。

我们将使用 thethings.io 节点 API 中的一些函数: https: //github.com/theThings/thethingsio-api-node

安装并打开英特尔 XDK 物联网版后,选择要使用的模板。在这种情况下,由于模拟光传感器,我们将使用模拟读取。

js程序包括:

- 从 pebble 智能手表接收 POST 的 http 服务器。根据爱迪生收到的 URL,它会卷起 (/up) 或展开 (/down) 窗帘。然后它将此信息写入 thethings.io API。如果要卷起窗帘,则发送 0。1 如果要拉开窗帘。

- 一个名为 read_value 的函数,读取来自光传感器的模拟电压并将其转换为一个值(从 0 到 1023)。如果超过某个阈值并且时间与之前的时间匹配,则窗帘将卷起或展开。此功能被编程为在一定时间(5 分钟)后重复。每次函数重复时,当前的光传感器值都会写入 thethings.io API。

请随意替换您项目中的代码:https://drive.google.com/file/d/0ByJ4mA2J_L8kMWUxaXVjbnFRbUU/view?usp=sharing

第 6 步:Pebble 开发。使用的代码:

为了更好地控制代码文件,我们使用直接安装在我们计算机上的pebble SDK: https: //developer.pebble.com/sdk/

安装 Pebble SDK 后,打开终端会话并创建一个新的 JavaScript 项目:

pebble new-project --javascript “项目名称”

创建了一个 javascript watch 应用程序,用于将 HTTP 消息发送到 Edison HTTP 服务器。此应用程序包含一个 .c 文件,它提供所有可视界面并处理按钮操作。它使用 pebble 消息与 javascript 部分进行通信。

javascript 部分,处理与 Edison HTTP 服务器的通信。如果按下向上或向下按钮,.c 部分会向 javascript 部分发送一个 pebble 消息,并且该部分会向 Edison 服务器发送一个 HTTP POST(服务器 URL 之后的 /Up 或 /Down)。

为了将手表应用程序安装到爱迪生,您需要在手机的 Pebble Time 应用程序(设置)中启用开发人员连接。终端中的类型(在项目文件夹内):

鹅卵石建筑

pebble install --phone “你的手机ip”

请随意替换您项目中的代码:https://drive.google.com/file/d/0ByJ4mA2J_L8kRWQtYm01aE1ZZmc/view ?usp=sharing

第 7 步:thethings.iO 仪表板:

 
 
 
 
pYYBAGSAhpeAEIy7AABEyiYyTns737.jpg
 
1 / 4
 

为了监控并获取所连接设备的最大利润,将显示来自卵石的光传感器和手动激活。

在进入仪表板之前,请确保您在 thethings.iO 上有一个帐户。如果没有,请点击此处快速注册:https://panel.thethings.io/#/register

完成后,您可以从这个 Step by Step 开始。

现在让我们创建一个仪表板,您将能够监控这些数据。我们将创建两个小部件,一个用于手动激活,另一个用于光传感器值。

步骤如下:

- 按下添加小部件。

- 插入小部件名称。

- 选择数据源上的事物资源。

- 选择您的产品。

- 从列表中选择你的东西令牌

- 选择您要显示的资源。

手动激活显示为历史记录,包括日期和操作(0 卷,1 展开)。这些值以线性图形显示,包含(在 x 轴上)样本的小时和(在 y 轴上)它的值。

第 8 步:最终结果和未来改进:

 
pYYBAGSAhpqAYYuvAAAb9U0qblA852.jpg
 

这是最终图像,显示了用于该项目的所有结构。

在构建机制并对其进行测试后,应考虑一些注意事项以进行进一步的修订。

- 由于扭矩(或“运动功率”)有限,步进电机有点慢。下一次迭代将有更好的步进电机。

- 控制步进电机的驱动器直接连接到爱迪生,它正在为 5V 引脚耗尽所有可能的电流。应该安装更好的驱动器,直接连接到 5V 电源,能够为电机提供更大的电流。


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

评论(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:'使用英特尔Edison和thethings.IO的自动窗帘',//标题 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);