×

带平移/倾斜伺服系统和备用电池的网络摄像头

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

分享资料个

描述

Calin Crisan 出色的motionEyeOS是一个完整的 Linux 发行版,可将 Raspberry Pi Zero 变成功能强大的无线网络摄像头。他提供了安装和配置的详细说明;此处引用了一些。这些说明展示了如何使用我设计的名为Solar Pi Platter和 Pi Zero W 的小工具来扩展 motionEyeOS 的功能,包括备用电池、平移/倾斜伺服系统和状态信息显示。

使用 motionEyeOS 发行版内置的扩展功能,安装非常简单。平移/倾斜控件以及显示电池和充电状况的状态显示显示在网络界面中。

构建此网络摄像头包括本自述文件中描述的以下步骤。

  • 获得必要的硬件
  • 组装相​​机
  • 将 motionEyeOS 发行版加载到 micro SD 卡上
  • 为您的 wifi 配置 motionEyeOS 并开始运行
  • 从我的 github 存储库添加文件以启用新功能
  • 享受您的新网络摄像头

我鼓励您阅读文档目录中的 Pi Platter 手册以及motionEyeOS wiki中的详尽文档

硬件组件

我使用手头的组件构建了我的单元。您当然可以替换一些组件,例如备用电池和平移/倾斜组件。

 
pYYBAGOIN4qAR33IAAFXT0O2SoQ856.png
成分
 

外壳

我为此示例激光切割了一个两件式组件,但您可能需要不同类型的外壳,具体取决于您的应用。我的剪纸文件可以在这个故事的结尾找到。这两件作品都可以从一块 2 毫米厚的亚克力小片 (200 毫米 x 200 毫米) 上切割下来。

五金组装

组装很简单。使用随附的安装硬件将 Pi Zero 安装在 Pi Platter 的顶部。该组件使用额外的支座以堆叠布置安装在外壳中。

 
pYYBAGOIN42ARum9AAELZzmdRw0447.png
显示平移/倾斜伺服连接的组装单元
 

我用一块双面胶带固定电池。

如下图所示连接到 Pi Platter。检查伺服连接以确保它们匹配。我见过的大多数伺服系统都使用棕色-红色-橙色电缆作为 GND-5V-PWM。错误地连接它们可能会损坏它们或 Pi Platter。

 
pYYBAGOIN4-AHxegAADEOimS_YQ082.png
为舵机的 Pi Platter 添加 3 个排针
 

motionEyeOS安装

在安装过程中连接显示器和 USB 键盘可能会有所帮助。

 
poYBAGOIN5GAJ9r_AAA5w-JGyXk068.png
Web 界面中的新功能
 

笔记

伺服范围

平移/倾斜脚本具有常量,用于设置发送到舵机的最小和最大 PWM 值。这些是我发现适用于我的系统的值。但是,如果您发现您的舵机达到了其运动范围的末端,您可能最终需要修改它们(当电机试图将伺服器推过其极限时,它们会发出磨擦声并消耗大量电流)。这可能会损坏伺服系统,并且可能会消耗大量电流,以至于 Pi Platter 会关闭。

例如,left_1脚本控制向左平移。它通过增加写入 Pi Platter 的 PWM 值来控制 PWM 1 上的平移伺服来实现此目的。PWM 值的范围为 0-255,但此脚本使用常数限制最大 PWM 值PWM_MAX(在我的版本中为 250)。如果您发现舵机在向左平移时达到其范围的末端,则应减小此值。要将最大值更改为 240,请编辑left_1脚本并更改常量。

# Maximum PWM value
PWM_MAX=240

同样,您可以减小PWM_MAX常数 indown_1并增加PWM_MIN常数 inright_1up_1进一步限制伺服行程。

电力笔记

我的系统在运行但不为电池充电时需要平均 430-450 毫安的 USB 电源。伺服系统移动时需要更多电流,为电池充电时需要额外的 750 毫安电流。USB 电源适配器应该能够提供至少 2A 的电流。

当 USB 电源适配器输入可用时,Pi Platter 通过 USB 电源适配器为系统供电。它使用大约 4.7 伏的电压阈值从 USB 电源切换到电池。当 USB 输入电压下降时,它还会降低电池的充电电流。由于许多 USB 适配器电缆使用细线并且系统消耗的电流可能超过 1 A,因此 Pi Platter 看到的电压可能明显低于 USB 适配器的输出。出于这个原因,我建议使用输出 5.1 至 5.25 伏特的适配器。

如果你看到AC PWR状态显示闪烁,那么很可能是 Pi Platter 看到的 USB 电压太低,它不断地在 USB 和电池电源之间切换。

当使用电池运行时,系统将从电池中汲取超过 700 mA 的电流。2000-6000 mA 的电池容量非常适合该系统,具体取决于它应该能够单独使用电池电源运行的时间。

关闭电源

C7=1在修改后的文件中执行的 Pi Platter 命令userinit.sh将其配置为在因电池电量不足而关机后自动恢复供电。因此,如果您通过按住 Pi Platter 电源按钮几秒钟来关闭系统电源(因为电池电压高于重启阈值),系统也会立即重新开机并重新启动。要关闭电源,首先登录系统并执行以下命令以禁用自动重启功能,然后使用 Pi Platter 电源按钮关闭系统。

/data/etc/talkpp -c C7=0

可选功能

使 Pi 充当 WiFi 接入点

motionEyeOS 软件可以配置为创建自己的网络,充当 WiFi 接入点。这对于位于没有 WiFi 区域的远程延时或安全系统很有用。必须在初始安装/启动后将系统配置为 WiFi 接入点。可以在WiFi-Access-Point找到详细说明

出于某种原因,我不明白启用此模式会禁用 ssh 访问,因此在执行这些步骤之前完成附加安装很重要。

Pi 盘 RTC

Pi Platter 包含一个电池供电的实时时钟,可用于在无法访问网络时间服务器的情况下设置 Pi 的系统时钟。

从 Pi 的系统时钟设置 Pi Platter RTC(假设它有正确的时间和日期):

/data/etc/talkpp -s

从 Pi Platter RTC 设置 Pi 的系统时钟:

date $(/data/etc/talkpp -t)

该命令可能包含在userinit.sh文件中。

使用 Pi Platter 模拟输入进行温度测量

Pi Platter 包括两个带可配置 ADC 电压参考的模拟输入。这些可用于获取额外的状态信息,例如使用模拟温度传感器的温度。

例如,TMP36 芯片可在 5V 电压下工作,并在 −40°C 至 +125°C 范围内输出与温度成正比的电压。它在 0°C 时有 500 mV (0.5V) 偏移,每 °C 变化 10mV(该器件在 25°C 时读数为 750 mV)。将 Pi Platter ADC 参考配置为 1.024 伏允许在 −40°C 至 +52.4°C 范围内进行 10 位 ADC 测量,并使将 ADC 读数转换为温度非常容易。

Temp in °C = ([ADC reading] - 500) / 10

其中是可以使用ADC 通道 1 或ADC 通道 2[ADC reading]命令从 Pi Platter 获得的 10 位talkpp -c A1talkpp -c A2

有关使用 ADC 输入的信息可以在 Pi Platter 用户手册中找到。可以对其进行修改以读取和显示来自模拟输入的温度monitor_1


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

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