×

带有内置压力监测系统的低成本CEA室

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

kmno4

分享资料个

描述

目前,由于植物胁迫和疾病造成的食物浪费对作物产量和农业实践的可持续性产生了重大影响。植物的压力会对植物的健康和整体产量产生重大影响。早期识别受控环境农业 (CEA) 生长植物中的压力将使种植者能够调整和优化植物生长条件,以最大限度地提高作物质量、产量和营养价值,同时减少食物浪费和提高能源效率。

目前,关于如何减少或逆转压力对 CEA 种植作物的影响的研究有限。需要进一步的研究来加深我们对植物用来应对这些环境中的压力的​​复杂信号网络的理解。早期识别压力性状尤为重要,了解“压力过大”将使种植者能够调整和优化植物生长条件以对抗压力,确保最大的作物质量、产量和营养价值,同时减少食物浪费和提高能源效率。

为了帮助这一系列研究,专门建造的容纳表型设备的室将是一项重要资产。然而,这种性质的外包设备非常昂贵,并且可以在实验室中占据大面积的宝贵空间。因此,将这些类型的技术的可及性限制在资金和空间有限的许多研究小组和早期职业研究人员。

我们的目标是开发一种带有内置压力监测系统的低成本 CEA 室,以帮助进一步调查这些关键信号事件,以提高 CEA 种植作物的生产力和可持续性。

设备开发

该设备有四个主要特点:

  • RGB 和 IR 相机
  • 温度控制
  • 可控生长灯
  • 全程数据记录

这些功能中的每一个都需要自己的系统和技术,并且每个功能都有自己的问题要实现。

系统总览

该设备由两个腔室组成:一个用于种植和监测植物,另一个用于容纳电子设备。

pYYBAGNhzaaATtfLAACSXbFpQ9U278.png
移除了门和顶部前面板的外壳。
 

生长室具有可控生长灯、热板和各种传感器(温度、湿度、光)。这些植物生长在实验室千斤顶顶部的培养皿中,因此可以将它们放在高架摄像机的焦点上。门用闭孔泡沫和磁性闩锁密封。

电子室装有一个 Raspberry Pi (RPi)、一个 Arduino、一个 Peltier 热泵、两个观察植物的摄像机以及各种控制电路和电源。

poYBAGNhza6ARYpNAAGEBO3XP_8364.png
控制层次结构概述。
 

RPi 控制摄像机和 arduino。arduino 控制灯和 Peltier,并从传感器接收数据,并在需要时将其传输回 RPi。

在测试过程中,可以改变不同颜色的温度和光强度,并且可以在整个过程中以指定的时间间隔(低至每 10 秒)记录数据和照片。

随着数据的收集,它会从本地存储实时移动到云端(现在是 Google Drive)。一旦在云上,图像就会准备好并通过预制的 AraDEEPopsis 机器学习模型运行,以识别叶子特征和其他措施。

数据记录和控制

Raspberry Pi 3B+ 被选为“中央计算机”。这些是精简的低成本计算机,可用于运行自定义程序或直接与硬件连接。RPi 模型 3 及以上还具有内置 WiFi,因此连接到云不需要任何额外的硬件。开发了一个串行协议以允许 RPi 在运行测试时生成请求并从 Arduino 接收数据。

选择 Arduino Uno 与传感器和电子元件进行接口是因为它与 RPi 具有出色的电子接口,并且可以减轻 RPi 的一些高速处理负载(用于控制高级电子设备),而不会产生太多的额外成本.

RPi 运行测试的代码是用 python 3.9.1 编写的。还编写了 Python 代码以与 Lepton 3.5 接口,并将原始输出文件解码为 JPEG 图像文件。arduino 的代码是用 C++ 编写的(包括特殊的 arduino 函数)。

在测试期间,RPi 会创建一组新文件夹,并将图像和数据反复写入这些文件夹。正在保存的新数据由另一个系统自动检测,该系统将新的文件夹结构和其中包含的数据上传到 Google Drive(并在上传后从 RPi 中删除数据)。

相机

为了监测植物的生长和对刺激的反应,将在可见光谱和中红外光谱中重复拍摄图像。

pYYBAGNhzbOAHN_MAAJ5Ty98MDg151.png
多肉植物和仙人掌的红外(左)和光学(右)图像。
 

Raspberry Pi Camera V2 被选为可见光图像的低成本、高分辨率解决方案,因为它可以轻松连接到 RPi 并且拥有完善的文档记录软件。

Lepton 3.5 因其低成本、足够的分辨率 (160x120) 和遥测功能(它可以根据像素值计算温度)而被选择用于红外摄像机。然而,这款相机确实需要额外的电路板来操作它:为了节省成本,选择了开发人员分线板 V2(与 Groupgets 的更昂贵但可能更易于使用的PureThermal 板相反)。

这两个摄像头将由 RPi 使用PiCamera 模块和 FLIR 提供的驱动程序直接控制。

温度控制

选择简单的 DHT11 传感器来监测室内的温度和湿度。这些传感器相当不精确(±1°C 和 ±1%),但足以监测环境温度和湿度。

为了达到最高温度±15°C的环境温度,选择了轻型珀尔帖模块,因为它尺寸紧凑、操作简单,并且能够加热和冷却。这意味着在运行中,它将有一个“热侧”和一个“冷侧”——哪一个取决于所提供电流的方向。因此,它可以加热物体,或者如果电流反向;降温。构建了一个 H 桥(一个由四个电子开关组成的网格,可以控制直流电流的方向)并用于控制来自 Arduino 的 Peltier。

室内不能使用风扇,因为循环可能会干扰植物的反应或在拍照时干扰它们。因此,为了提供冷却,将宽金属板(热板)安装到由 Peltier 加热或冷却的生长室的内部顶部,从而被动地加热或冷却室。该板还可以作为生长灯的散热器(在运行中会变热),使它们与腔室同时冷却。

RPi 将决定腔室的温度,但 Arduino 将使用简单的滞后控制算法来控制 Peltier。

种植灯

所需的生长灯提供各种波长(颜色)的光,每一种都可以独立控制。选择 LED 是因为它们具有窄波长输出和高效率。由于腔室将不透明以阻挡外部光线,因此这些必须足够强大以完全为植物提供食物。普通的业余爱好 LED 的功率容量约为 100mW 或更低——种植植物需要大约 40W 的光源(功率大约是 400 倍)。

可以构建一个由 400 个小型 LED 组成的阵列,这可能会提供更多关于波长的定制,但简单的替代方案是购买一个(或两个)大功率 LED 阵列。为避免损坏这些阵列,它们由恒流 LED 驱动器供电,该驱动器将准确提供 LED 所需的电流。

每个颜色的 LED 需要相同的电流,但需要不同的电压。通过选择具有包含所有不同 LED 的输出电压范围的 LED 驱动器,可以为所有 LED 使用单一类型的驱动器。

设计了许多控制方案来单独操作每种 LED 颜色,但最终为每种波长配备一个单独的可调光 LED 驱动器被证明是最有效的。可调光驱动器可以使用脉宽调制 (PWM) 根据单独的电子信号来控制提供的电流(以及亮度)。

我们需要的可调光驱动器(48V,700mA)通常每个 >20 英镑。然而,基于 ILD6070 芯片的定制驱动程序最终成本约为 4 英镑。这确实需要手工焊接电路,但对于少数驱动器来说,这并不太费力,而且效果很好。

细枝末节

轻子接口

为了让 Lepton 3.5 正常工作,请遵循本指南或 FLIR Breakout board V2,但要真正让它工作需要使用内核版本4.14.71-v7+而不是最新版本。还需要其他软件包:Bison、Flex 和 libssl-dev。这些可以通过在 RPi 终端中运行以下命令来安装。

sudo apt-get install bison

sudo apt-get install flex

sudo apt-get install libssl-dev

应该为 RPi 提供一个功能齐全的操作系统映像,并完成所有这些步骤,从而为您省去很多麻烦。要安装它,请使用另一台计算机将映像刷入 RPi SD 卡,就像您第一次安装 Raspbian 一样。

不存在与 Lepton 3.5 分线板连接的简单解决方案(在撰写本文时)。遗憾的是,PiLepton 之类的库尽管受到了很多刺激,但仍然无法正常工作。并且FLIR Lepton SDK非常不友好,需要开发人员从技术数据表中解码SPI和I2C的低级协议。

幸运的是,在入门教程的最后,有一个命令允许用户通过运行驱动程序附带的预编译 C(?) 程序来拍摄 n 张照片。该命令如下:

./lepton_data_collector -3 -c 50 -o /tmp/capture/frame_

  • lepton_data_collector是程序的名称
  • -3告诉程序我们正在使用 Lepton 3 .x
  • -c 50告诉程序拍摄 50 张照片
  • -o /tmp/capture/frame_告诉程序将图像保存为文件夹中的frame_XXXXXX.jpg/tmp/capture/

图像的名称将始终包含六个额外的数字来表征它是 50 个图像中的哪一个。使用 pythonos库,此命令(或类似命令)可以由程序自动运行。编写这样的脚本来运行以下命令:

./lepton_data_collector -3 -c 1 -o //_

这将(以一种相当间接的方式)拍摄 1 张照片(称为000000.jpg),并将其放在具有指定名称的指定文件夹中。这种间接方法很慢,每张图像大约需要 1-2 秒。因此,这将开发的视频预览功能限制在相当低的 0.5-1 fps,它通过重复调用上述命令来工作。

存储和处理

Microsoft Sharepoint 是理想的云存储解决方案(由于大学附属机构提供了较大的存储空间),但是要跳过的管理和技术障碍的数量太大了。为设备创建自定义 gmail 帐户并使用此类帐户随附的 15GB Google Drive 存储空间更为直接。

当设备运行测试时,它将创建一组新的文件夹,根据将记录第一个数据点的日期/时间进行唯一命名。这通常采用 YYYY-MM-DD-HH_MM_SS 的形式。

poYBAGNhzbWAB3lrAAB_O7GFkw0810.png
在 RPi 上为每个测试创建的文件夹结构。
 

icrontab 脚本监视数据文件夹中是否有任何要创建的新文件夹或文件,并在创建时触发rclone命令,以与 RPi 上相同的布局将新文件或文件夹上传到 Google Drive。然后从 RPi 中删除所有文件(.jpg、.png、.txt 文件)。扩展名为 .tmp 的文件不包括在内,因为在执行测试时数据会不断写入这种类型的文件。测试结束时,将填写好的tmp文件的副本保存为txt文件(上传到驱动器),并删除tmp文件。

珀耳帖热泵

珀尔帖模块是一种热泵,由半导体结的扁平网格组成。当电流流过这个网格时,热量会从模块的一侧传递到另一侧。由于 Peltier 模块并不完美,通过它们的任何电流总是会产生额外的热量作为副产品。这意味着模块的冷却效率将随着提供更多电流而降低,因为副产品加热最终会抵消任何冷却效果。请查阅 Peltier 数据表以获得最佳电流使用 - 根据经验,您想要的冷却功率应该是最大限制的 0.2 倍,工作电流应该是 Peltier 最大电流限制的 0.3 倍。

此外,将 Peltier 从热快速切换到冷将导致设备迅速退化,类似于反复冷冻香蕉然后用喷灯解冻。沿着这些思路,也应该避免使用 PWM,尤其是在最大电流下使用 Peltier(尽管是间歇性的)效率非常低 - 由于上面解释的自热效应。

一种简单的控制方法是使用 Peltier 加热/冷却,直到达到所需的目标温度,然后将其关闭。一旦温度低于目标值,Peltier 就会再次启动并将其提高一点,但它会再次回落。这导致 Peltier 在目标温度附近快速打开和关闭,这基本上就像我们试图避免的 PWM。为了克服这个问题,需要引入滞后。这意味着何时打开 Peltier 的规则与何时关闭不同。

poYBAGNhzbeAMG_xAABEpAB7z1o160.png
简单(左)和滞后(右)控制方法。滞后降低了振荡频率。
 

上述数字是艺术家对此类控制系统如何运行的再现。简单的方法在目标温度附近波动非常快,只需进行微小的调整;很快就把 Peltier 穿出来了。滞后方法显示出慢得多的振荡,因为 Peltier 仅在目标温度下关闭,并且仅在下边界处重新打开。不利的一面是,这会导致更广泛的温度变化 - 但实际上最多为 ± 0.5 度。

LED 和 LED 驱动器

LED 通过电流工作 - 每个通过 LED 的安培都会产生一定数量的光子(光)。然而,只有当您超过 LED 的阈值电压时,该电流才会流动。这个阈值电压意味着 LED 存在两种状态。低于这个电压,它们可以被认为是非常大的电阻器,作用很小。在阈值电压以上,它们会变成非常小的电阻,如果不加以检查,将允许非常大的电流流动。通常使用恒流驱动器/电源,因为它们会主动控制它们提供的电流。这是更常见的恒压驱动器(如电池)的替代方案。使用恒压驱动器的风险在于,在电压略高于阈值时,大多数 LED 会消耗大量电流以致于损坏自身。

可调光 LED 驱动器使用脉宽调制 (PWM) 来控制 LED 的亮度。它们无需调整微调的电流或电压,而是非常快速地闪烁灯。

poYBAGNhzbuANHDOAABWEog9dXA776.png
三个 LED 驱动信号,使用 PWM 控制亮度。
 

每个周期有两个部分,一个是有电流流过,灯亮,一个是没有电流流过,灯熄灭。这通常发生得如此之快,以至于人眼都察觉不到。通过调整这两个持续时间的比例,随着灯光保持的总时间比例发生变化,灯光会显得更暗或更亮。这也直接控制了灯发出的功率(因为功率是一段时间内的平均值),这是植物所关心的。

我们使用 ILD6070 芯片来构建定制的 LED 驱动器。该芯片输出的电流值由用户选择的电容和电感指定。通过数据表来生成这些电容器和电感器值有些令人生畏,但英飞凌提供了合适的文档来提供帮助。

死后

建造

最终系统安装了摄像头和灯,但由于空间限制,难以将所有电子设备安装在分配的空间中。实验室千斤顶被证明是不稳定的,但足以进行粗略的高度调整。由于高压端子暴露给用户,因此需要安装漫射器/防护装置以覆盖光阵列。

poYBAGNhzdKAV4t5AAbpOw32mjE209.jpg
在制品室测试灯(电气室未组装)
 

摄像机也需要防护,因为它们暴露在下面的元素中。这些防护装置必须允许可见光和/或中程红外光通过,摄像机才能正常运行。

数据记录和控制

RPi 和 Arduino 之间的链接已经建立并且运行良好。将数据记录到 Google Drive 也很有效。该设备需要单独的显示器、键盘和鼠标来控制。需要手动创建运行测试的配方文件。

相机

Picamera 产生清晰的照片并且易于使用。由于灯光的 PWM 控制,它会出现图像伪影——它可以在拍摄图像时检测到闪烁。可以调整相机中的设置以纠正此问题。

Lepton 3.5 分线板非常难以使用,并最终通过错误的布线杀死了腔室 Raspberry Pi。由于界面受限,遥测(温度值)没有从图像中提取出来,但可能需要更多时间。

温度控制

温度控制方法效果很好。在实践中,热泵无法在全功率下有效地冷却灯,但在 <20% 的运行 (~100umol/m^2/s) 下可能就足够了。需要进行更多测试以了解冷却温度的限制。

需要大量开发来设计与 Peltier 设备一起使用的足够高电流的 H 桥,一种更精简但成本更高的方法是购买大功率可变电流驱动器,尽管这些并不常见。

种植

灯和定制驱动器工作得很好,在峰值强度下产生高达 610umol/m^2/s。在没有风扇的情况下,在这些强度下散热成为一个问题。

 


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

评论(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:'带有内置压力监测系统的低成本CEA室',//标题 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);