×

雷神精华第1部分

消耗积分:0 | 格式:zip | 大小:0.02 MB | 2022-10-18

陈杰

分享资料个

描述

背景

“雷神计划”始于 2006 年,当时物联网还没有兴起。它的目标是生产现在称为物联网灌溉控制器的产品,该控制器将在农场范围的 WiFi 网络上运行。该项目在 2 年期间非常活跃,最终建造和安装了六个控制器。此次演习的全部目的是为澳大利亚最先进的柑橘种植工厂获得技术优势,该工厂位于达令河下游的詹姆斯维尔站。

imgp0517_muEEHZLYfR.JPG?auto=compress%2Cformat&w=740&h=555&fit=max

1 / 8 •大约 2007 年 - 第一个灌溉控制器将首次启动

对于那些目光敏锐的人来说,该系统是围绕通用 .NET 控制器构建的,其理念是尽可能与工业设备互操作。为此,系统在其湿度探头上使用 RS-485,如果需要,将通过模数与远程 I/O 通信。该软件还可以在 PC 上运行,因为它不依赖于除 .NET 和 MS-SQL 服务器后端之外的平台,任何合适的计算机或 PLC 平台都可以提供这些后端。无需让您厌烦细节,我们在很短的时间内覆盖了很多领域,现在在系统上运行了数十万小时。

所以这一切都很好,几乎结合了一切——为什么要改变?

好吧,原来的电脑并没有变得更年轻,而且它们仍然很贵。如果我们可以在一台 6 美元的计算机上完成所有这些工作,它会散发出油腻的抹布气味,这不是很好吗?对我来说,这个视频改变了我的心态,如果你可以用这个 CPU 传输电视信号,那么你就可以做一个简单的工作,比如灌溉控制。也有人抱怨说,Thor 从中型灌溉开始,我想要更好的扩展性。我真的希望 1 或 2 阀达到 100 多个阀,但我想保留 Thor 中运行良好的分布式概念。此外,如果我小心的话,我可以让它们兼容,这样我就可以吃蛋糕了!

从哪儿开始

所以我决定从两个关键领域开始,灌溉调度和施肥。系统中的第一个重要概念是逻辑阀,它们能够以各种模式和选项配置为电气输出。是什么让它这么好?考虑到线圈烧坏并烧毁输出,您的灌溉程序不需要更改,您只需在更换线圈后将电信号重新路由到新的输出即可。如果您更有条理,您可以在歧管上安装铅垂和电线备件。

第二个最重要的是比例施肥系统,没有这个你就不能真正耕种。这由一个脉宽以秒为单位的 PWM 系统组成,该脉宽由针对每个阀门记录的流速控制。部分/阀门流量通常很容易测量或计算,并且在滴头的情况下,大多数都是压力补偿的,因此在相当宽的工作范围内流量是准确的。施肥记录抽水量并且有一个空水箱关闭。一切听起来都不错,但橡胶与道路的交汇点是雷神如何记录化学物质的去向和数量。

imgp1325_oeJYhCUiTC.JPG?auto=compress%2Cformat&w=740&h=555&fit=max

1 / 11 •早期 - 连接到继电器板的 8 位输入和输出扩展器

在这个项目中,我对 esp8266 的主要问题是让我不知道没有 SQL Server on-tap 的强大功能。然而,这并没有那么糟糕,因为我不再处于未知领域,而是在数据结构需要看起来像什么以及它们之间的关系方面处于良好的基础上。因此,从 Thor 的 SQL 表定义开始,我回溯到每个结构的两个结构,一个是内存,一个是 eeprom。然后,Web 界面有点被淘汰了,因为它必须支持数据结构中的更改项目。

由于程序数量有限,第一个调度程序虽然具有 Thor 的一些魅力,但缺乏。在 Thor 中,调度系统没有实际限制,我觉得在这方面放任何东西有点羞耻,但我需要系统工作,而且时间很短。这也具有使用户重新关注每个阀门而不是每个程序转换的效果,在我看来这是“错误的想法”。

program1_0uaXE6U3yJ.JPG?auto=compress%2Cformat&w=740&h=555&fit=max

初始编程接口

现在有一个基于班次的编程系统,它不像最初的实现那样灵活,但对于一台 6 美元的计算机来说就可以了。

program2_tfNNBCLlU7.JPG?auto=compress%2Cformat&w=740&h=555&fit=max

1 / 2 •用于新班次编程的 UI

编程方法都保存在 eeprom 的单独区域中,因此控制器可以在方法之间交换并且不会丢失任何程序数据。

下一个屏幕是旧系统的主要部分,它显示了 I/O 如何映射到现实世界。从这个页面很容易诊断双起或丢失的线圈。

iodatabase_PHOdMurfpz.JPG?auto=compress%2Cformat&w=740&h=555&fit=max

这允许您检查与逻辑结构的电气连接。

我希望这个单元能够用现成的零件生产,但第一个问题是找到便宜的 I2C 继电器板。我最终选择了一款售价低于 15 美元的花园板,并配备了 I2C 扩展板(2 美元)。这需要最少的显微手术,只需要一个额外的针。我用 vero-board 构建了一个钻孔导向夹具用于此操作。棘手的部分是扩展器 VCC 是 3.3 V 并且不连接到继电器板的 5V VCC,它们只共享一个接地。该代码是为 2 种类型的扩展器编写的,并允许从“本机”转换/映射到在现实世界中具有远程意义的位/中继顺序。还有本地 I/O 的映射。

imgp1598_8jRIr2aeTt.JPG?auto=compress%2Cformat&w=740&h=555&fit=max

1 / 5 •组装继电器和 I2C 扩展板 - 插入左侧缺少 2 个引脚

在我编写此页面时,我必须构建几个或多个原型,以帮助自动检查控制器输出。

test_SPO3FoBymD.JPG?auto=compress%2Cformat&w=740&h=555&fit=max

在我需要在多个控制器上进行结帐后,这变得非常必要

这就是灌溉控制 UI 的工作方式。有一个master和day enable以及交付方法。坦克通过阀门设置页面关联来​​拾取。这允许在必要时为每个阀门使用不同的罐组合。

fertigation_WwEoR345Qm.JPG?auto=compress%2Cformat&w=740&h=555&fit=max

1 / 2 •比例施肥控制

阀门控制的主 UI 如下所示。TTG 是“time to go”,自动(编程)手动和默认值。手动时间仅在自动未开启时倒计时,这样您就可以根据需要将补水添加到每日计划中,而无需更改基本费率。

mainui_uKQR1CZ7BZ.JPG?auto=compress%2Cformat&w=740&h=555&fit=max

1 / 3 •主控

决定在设备上放置一个 OLED 显示屏作为“信心表”。它显示日期、时间和 IP 地址以及阀门和施肥输出状态。这对于双作用阀更为关键,因为它们通常没有动力并且仅通过脉冲来改变状态。因此,您可以快速匹配围场中阀门状态的指示器是一个方便的现场项目。RTC 是我常用的现成 DS3231 板,我发现它很高兴在 3.3 伏下运行,并且还具有额外的 eeprom 存储。我发现人们实际上查看了 RTC 的温度(在节点设置页面中)以正确设置外壳的阴影。方便的副作用我并没有真正考虑过。

砖实施

这个电路板实际上是一个真正的砖块 CPU,因为 I2C 在一次内场诊断事故中失灵了。提醒您要始终保持对您的所有智慧,而不仅仅是其中的一半。

imgp1677_4awXULvFCa.JPG?auto=compress%2Cformat&w=740&h=555&fit=max

1 / 4 • 10W 太阳能电池板可以为电池充电 - 只需要一个外壳

设想了其他几种结构变化,例如使用继电器和电池屏蔽来生产砖/块格式的控制器。这将是第二个太阳能变体。这是我第三次试验志愿者使用的模型。他们不想将阀门带回中心点,而是想通过 AP 进行无线跳回。我的范围测试建议 50 到 100 米,具体取决于它是否是视线。

imgp1718_AX9hZPq4qE.JPG?auto=compress%2Cformat&w=740&h=555&fit=max

1 / 2 • 16 继电器版本的裸机箱

这个版本很有前途,但内部/集成电池或超级电容器作为电源似乎是可行的。用更少的力量做更多的事情似乎是让这一切发生的原因。更少的功率,小型太阳能电池板,更便宜的最终组装。

真实世界测试

我很幸运有友好的农业邻居,他们也有软件开发的背景。尽管他们的农场比我的“刺斑”更令人担忧,但他们一直处于最前沿。这些照片来自他的三个灌溉点之一。主要供水管通常为 200 或 250 毫米

imgp1943_sUH0OyKteA.JPG?auto=compress%2Cformat&w=740&h=555&fit=max

1 / 6 •结账时的第三代原型

Prickle 补丁重新安装

当然,我总是落后,但它已经发生了。“刺斑”于 2019 年 9 月更换。尽管澳大利亚干旱,但我们预计刺斑产量会有所提高;)

imgp1994_xgFm88Za1R.JPG?auto=compress%2Cformat&w=740&h=555&fit=max

1 / 4 •结帐时的 Prickle Patch 控制器

云中的聚合和更大的事物。

这个练习的重点不仅是行动,而且是记录。为此,正在设计和测试一个 Web 服务来记录、记录和报告水和肥料的使用情况。这最初被集成到控制系统中,但更集中地存储它似乎是合乎逻辑的,以便更好地汇总农业操作。这其中的某些方面是故事的后面部分。

特别感谢

感谢 Alpha 和 Beta 测试团队中的所有人,感谢他们容忍错误,并将你们的信念和作物交给我的思想和想象。

2022 年 7 月更新

好吧,实际上有一些,但我懒得把它们都记录下来。最新版本总是在 github 上可用,因为我会定期更新它。

添加了用于报告的电子邮件(当施肥罐接近空时发送电子邮件)ADC 输入和通过电子邮件发出警报也适用于主阀状态。始终打开的阀门,因此它们的程序在其余部分暂停时运行。准时和准时自动重启(带报告)Valve 记录到 RTC 上的 eeprom。(即使更换 CPU 板也能保留灌溉数据。)现在即使在软件版本之间也可以进行程序备份和恢复。线圈驱动的输出极性与脉冲宽度设置一样现在处于活动状态。





 

presuretransducer_PkBaw7mFjl.JPG?auto=compress%2Cformat&w=740&h=555&fit=max

1 / 5 • ADC SI Scaled Value 添加在屏幕顶部

2022 年 10 月更新

Arrgh....好吧,就是这样....我终于完成了/过度粘住了manky继电器触点。将继电器板更换为 4 x L298 PWM 模块,耦合到相同的 I2C 端口扩展器芯片。将导阀更换为可维修的品牌,并在每个阀的电路中添加了多熔断器。正好赶上下一个灌溉季节。

20221002_160954_hdr_JXXOnQ8DTm.jpg?auto=compress%2Cformat&w=740&h=555&fit=max

1 / 2

新阀门实际上包含一个小型电动机而不是螺线管。您仍然可以看到新驱动板后面的旧继电器板。这仍然是 coms 开关和肥料电机接触器。

我还建立了另一个 H-Bridge 选项,其中一个不同的芯片准备在此之后进行测试。然后我可能会在看到“卡片以哪种方式掉落”后考虑定制 PCB。

在 I2C 总线扫描中添加了更多内容,因此可以自动化并在情况发生变化时通过电子邮件发送警报。这是为了帮助诊断间歇性板间连接。如果发生其中一种情况,还有一个关闭施肥的选项。因此,程序是您手动扫描 I2C 总线,然后保存配置,控制器将使用此作为自动扫描的参考。

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

评论(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:'雷神精华第1部分',//标题 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);