×

蜂窝连接的蜂巢监视器开源分享

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

五斤麻辣油

分享资料个

描述

特征

这是一个蜂窝连接的蜂巢监视器,提供以下功能:

  • 如果蜂巢被移动或撞倒,则发送即时通知(电子邮件、SMS/文本或电报消息)
  • 监测蜂巢的内部温度
  • 监测蜂巢的外部温度和湿度
  • 低成本蜂窝连接:

- 如果您在北美,请使用 LTE CAT-M1

- 世界其他地区的2G/3G

- 你可以在这里查看覆盖率

  • wifi连接选项(如果您打算放置设备的地方有wifi覆盖)
  • 电池供电
  • Ubidots 图表
  • 高度可配置

硬件

设置并焊接您的三倍器,添加硼和 ADXL343+ADT7410。

您需要将 ADXL343 的 int1 引脚连接到 Boron 上的 A0。这将有助于检测运动或活动并同时唤醒粒子设备(硼或氩)。见下图中的黄线。绿线将与三联线相连,因此此处无需进行连接。

将 DS18b20 连接到 Boron 上的 D9,加上 3v3 和 GND。您可以在此处使用接线端子。不要忘记一个 4.7k 电阻器作为从 DATA 到 VCC 的上拉电阻(可以是 3v3 或 5V)。

pYYBAGNxI7OABxSsAApDO4ZBVHE557.jpg
 

该项目的早期原型,未使用最终硬件:

poYBAGNxI7eAJs-5AAMji5ayi9c101.jpg
 

固件

请将git repo中的固件刷写到Particle 设备上。

默认情况下,设备将每 4 小时唤醒一次并报告温度、湿度和电池电量。

如果电池电量过低,设备会长时间休眠。

如果检测到移动,设备将发送警报,您可以选择将警报路由到电子邮件、SMS 或 Telegram 即时消息。

有一个部分包含您作为用户可以试验的设置,以使设备适合您的需求:

// this is used to identify the device and beehive when it publishes to the cloud
#define BEEHIVE_LOCATION "bees1"

// this determines if the device will always be on.
// if commented out, the device will sleep and wake either:
//  - on movement detected at any time
//  - every NORMAL_SLEEP_CYCLE (4hs) to report periodically to the cloud
// #define ALWAYS_ONLINE

// if not always online, the device will sleep for this time. It reports status to the cloud every time it wakes up.
// units: MINUTES (example: 240 minutes => 4 hours)
#define NORMAL_SLEEP_CYCLE 240

// publish to ubidots every number of minutes
#define PUBLISH_TO_UBIDOTS 240

// webhook to send data to ubidots
// you can create this webhook as explained here:
// https://help.ubidots.com/en/articles/513304-connect-your-particle-device-to-ubidots-using-particle-webhooks
#define WEBHOOK_NAME "ubidotsbees"

// sleep if battery is low for some time
// units: MINUTES (example: 240 minutes => 4 hours)
#define LOW_BATTERY_SLEEP 240

// threshold in percentage
#define CRITICAL_BATTERY 20

// how often to read the sensors (always online devices only)
#define READ_SENSORS_SECONDS 5

// here you can configure what sensors you have connected
// #define USE_ADT7410 // temp sensor
#define USE_ADXL343 // accel sensor
#define USE_DS18B20 // temp sensor

// this defines the pin where you connected the DS18B20 temperature sensor
#define DS18B20_PIN D9

// this defines if the temperature is preferred in fahrenheit
// comment out for celsius
#define TEMP_IN_FAHRENHEIT true

// how long to wait for cloud connection when the device wakes up
// used in devices that sleep and wake every 4 hours (ALWAYS_ONLINE not defined)
#define WAIT_FOR_PARTICLE_CONNECT 15

软件 - Ubidots

该设备将通过 webhook 向 Ubidots 发送数据,

请按照本文中的说明进行配置

当您在 Ubidots 中拥有数据时,您可以使用您喜欢的小部件创建仪表板。这是一个例子:

pYYBAGNxI7qAcJRUAAGYKUSnSYY884.png
 

您在图表中间看到的温度起伏是我将测试设备放在窗户旁边的日子,当时它被阳光直射加热。

要配置移动的电子邮件或 SMS,请根据设备发送的移动变量在 Ubidots 上创建一个事件。当此变量为 1 时,应发送警报。

例子:

poYBAGNxI7yAd5o9AAA4TUG9tGo233.png
 

和:

poYBAGNxI76AZsALAABIPxXpODY027.png
 

如果一切按计划进行,您将收到这封电子邮件:

pYYBAGNxI7-AfaVzAAAu4tYfELM433.png
 

可以在此处找到有关如何设置事件的更多信息

软件 - 电报

如果您想通过 Telegram 接收即时通知,请按照本教程创建您自己的Telegram Bot

固件已配置为使用以下行发送警报:

publishQueue.publish("telegramWebhook", "Movement detected!", 60, PRIVATE, WITH_ACK);

您将收到的示例:

poYBAGNxI8GAUTeIAAAkJfDSDFw302.png
 

硬件 - 几乎是最终的

这是进入该领域的第一个版本:

pYYBAGNxI9aAHtFoAA37TGihLrc761.jpg
 

一旦安装:

pYYBAGNxJACASNqWABx1udK9NrY984.jpg
 

这是带有太阳能电池板输入的项目的样子(即将推出 - 现在正在测试中):

pYYBAGNxJAKACnhuAADcgeFmfwE800.png
 

紫色羽毛包含一个低压差稳压器,可以通过太阳能电池板为电池充电。

需要帮忙?

如果您的项目需要专业帮助,请随时通过 gusgonnet@gmail.com 给我写信。谢谢!


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

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