Hackaday.io上的树莓派项目-R'lieh - 水族馆/封闭式生态系统管理
收藏
分享
脑图
Hackaday.io上的树莓派项目-R'lieh - 水族馆/封闭式生态系统管理
关于项目
项目描述:R'lieh 代表"远程位置智能生态系统处理程序",不要与沉没的 R'lyeh 城市混淆。它是一个连接的平台,用于自动管理封闭的生态系统,如水族馆、温箱或池塘。系统必须处理的主要参数是光和温度。系统监测水温,并尝试调整所需的水温。还必须按用户编程打开和关闭灯。如果可能的话,我想监测尽可能多的参数,如pH,GH,KH,电导率,硝酸盐,溶解氧,二氧化碳等...然而,这些参数的传感器是有点昂贵,所以我仍在寻找其他传感器。稍后,我计划添加一个系统,以自动化水的变化,与近位泵。我也想做一个自动进给系统。通过自动化所有内容,我们可以优化系统的资源消耗,使系统只绘制所需的内容
项目图片
项目详情
水族馆和温箱可被视为封闭的生态系统。问题是它们不能正常工作。一个人可以创造一个非常封闭的生态系统,但很少的动物,和特定的物种。让我们再次关注正常的水族馆。在这些,人们想要有许多五颜六色的动物。问题是,你的动物多,污染就多。
问题是这种污染对大多数动物都是有毒的。这是非常危险的,因为它可以杀死动物,它们的尸体会产生更多的毒素,并杀死更多的动物。
另一个问题就是鱼会产生二氧化碳,需要氧气来呼吸。总之,这是由水族馆的主人,以确保水是适合动物。
改善水质的一个解决方案是拥有真正的植物,因为它们消耗动物粪和碳二恶英。有了足够的植物,动物污染的影响可以大大减少。植物需要大量的光,和一些营养物质,其中一些可以从动物废物获得。
请记住,我这里有一点原理图,以保持事情简单,但这是一般的想法。
那么,这里有什么问题呢?拥有一套好的灯光和足够的植物,我们应该没有问题,对吗?
嗯,事情往往没那么简单。事实上,光之少,棕色藻类会殖民你的坦克,"好"植物会死掉。光线太多,你就会得到绿藻。浪费太多,你又会有另一种藻类了即使有合适的光量,你不得不打开和关闭它,否则,水箱的居民最终会有问题(大多数鱼不能闭上眼睛)。
总之,第一个问题就是你必须控制照明才能有正确的强度和正确的照明。大多数时候,问题是水族馆没有足够的足够强的灯(或质量差的灯),所以为了解决这个问题,没有奇迹般的解决办法。我们将使用强大的灯光。然而,当获得所选技术时,灯光越强大,其消耗的功率就越强。此外,强大的灯光会产生热量,对水族馆有害(我们稍后将讨论温度问题)。
有了更强大的灯光,我们浪费了更多的电力,因此我们必须确保灯只打开,只要它是必需的。
为此,此项目包括一个自动处理灯光的系统。事实上,手动控制意味着你可以忘记打开灯,给植物带来一些问题,或者忘记关掉它,让藻类生长和浪费能量。
因此,Rlieh 的第一个功能是管理灯光。它必须能够打开和关闭它,设置一个时间来打开它,并关闭(或一个时间打开它和持续时间),理想情况下,它应该允许我们让它褪色它打开和关闭,复制太阳升起和设置(这是较少的压力的居民)。然而,人们可能想看看坦克里的东西进行维护,我们必须能够为此打开灯。因此,系统应该能够覆盖当前的光状态,一段时间后自动关闭,以防止用户忘记将其关闭。
1 X 树莓派
2 X DS18B20
3 X 80 毫米 PC 风扇
1 X 提示120
1 X 220V 继电器
3 X 氟电容灯泡
1 X 5630 LED 条
1 × ATmega328p
在上一篇文章中,我们看到了多氯联苯。我现在已经组装了几个,并测试了它。董事会上犯了一些错误,从工厂开始,一个新的修订版正在进行中。但是,这些板仍然工作,下面是它的外观,一旦程序集完成:
您可以看到左侧的两个系统,控制两个输出通道(默认情况下,灯,但可用于风扇,或任何可以使用 PWM 控制的直流系统)。
2 个引脚锁连接器与 mosfet 的输出(每 mosfet 4 个连接器)绑定,3 个引脚锁连接器与 arduino GPIOs 绑定。在顶行上,有 4 个连接器 -3pins - 与同一 GPIO D2 绑定,具有上拉 4.7k 电阻。这些用于临时探头(DS18B20 或类似)。D3 和 D5 控制 mosfet,所有其他 PWM GPIOs 在其他 3 个引脚连接器上分解。在底部,2 个模拟引脚也在同一连接器上断开,具有相同的引脚。
扩展 1 连接器可分解其他数字引脚,以及屁股接地和 +5V。
右上是 I2C RTC 模块,下面是 4 个用于 I2C(GND、VCC、SDA 和 SCL)的连接器。其中一个连接器用于液晶屏,其他连接器可用于任何。第二个 6 引脚连接器 (扩展 2) 将其余 4 个模拟引脚以及 +5V 和接地断开。标有 5Vin 的 3 针连接器连接到 arduino 的 +5V,可用于提供 5V 或收集 5V 以进行其他应用。最后有2个其他连接器可见:一个红色的2针连接器和一个锁定的2针一个旁边。锁定一个是DC in,它是由莫斯费斯切换的电流,所以它可以相当高。
但是,如果在红色连接器上使用跳线,则使用的张力必须限制在 12V 之间,因为它也会被送入 arduino 线性稳压器。它可以承受多一点取决于负载在5V,但官方文档指定把7-12V在那里。因此,您可以驱动 12V 并用它为 arduino 供电,或者提供外部 5V,并通过莫斯费斯驱动更高的张力。这与 mosfet 输出具有相同的引脚,因此,如果将错误的电缆插入错误的位置,不会造成损坏。有最后一个连接器,不能看到这张图片,在arduino后面,再次一个2针跳线连接器。打开跳线后,它将电容器连接到复位引脚,以防止串行连接上自动复位。如果被移除,重置将正常工作,因此可以正常编程 arduino。
Rlieh 现在有一个真正的 PCB, 而不是它包含所有必需的组件,并打破了许多 GPIOs:
此板还具有用于未使用的连接器的扩展连接器,以及用于启用或禁用 arduino 稳压器电源槽或禁用串行自动复位的跳线。
PCB 约为 5*7cm,每个角落都有 M3 孔。这与 5*7 perfboard 的占用空间和修复孔相同,因此可以用作原板的放置式替换,并使用相同的在下面的图片中,您可以看到板的背面(中间的) :
我做了一个盒子的液晶屏和按钮,打印出解放军。以下是我的打印床上的结果:
在下一张图片中,有一个 Raspi 零大小比较:
LCD 从背面安装,用 3mm 短螺钉固定。按钮从前面插入,用螺母固定。
一旦液晶屏连接(使用 I2C,因此只有 4 根电缆:电源、接地、sda 和 scl),系统就可以打开电源:
在这里,它打印第一行(开/关)上第一个灯的状态。在第二行,它打印它在做什么(打开或关闭),因为打开或关闭不是瞬时的,而是渐进的,需要一些时间。因此,我想知道它是在打开或关闭的过程中。长起落,它可以帮助。第三行显示空气温度和水温
然后,最后一行打印时间和日期(法语格式)
现在,只有顶部按钮执行任何操作:它强制灯打开或关闭(逐渐,但比正常淡入/出时间快)。代码中存在一个重写变量,一段时间后,将恢复正常的光状态。如果它关闭,我按下按钮,它会迅速淡入,并保持5分钟(这是我的设置)。然后它淡出。如果您在打开时覆盖, 它会做同样的事情, 虽然我会改变它, 直到它保持关闭, 直到下一个正常灯淡入。事实上,如果我在打开时将其关闭,可能是因为我想早点睡觉,所以,它应该停留超过5分钟。温度由两个 DS18B20 探头提供,时间由小型 RTC 模块提供。
这个项目已经相当长一段时间没有进展了,所以我决定做一点工作。计划的功能仍然计划, 但正如我在上一篇文章中说的, 我使 arduino 基础模块独立。这样,如果有一个树莓派连接,先进的功能是可用的,但如果没有,它仍将工作,并做它的工作。
因此,我做了一个简单的模块,能够读取温度从两个DS18B20探头,一个空气温度,另一个水温,并控制水族馆的灯光。使用 TIP120 为 12V 带带提供电源,并使用 PWM 控制它。有一个 RTC 模块来跟踪时间,还有一个用于打印信息的 I2C LCD。因此,到目前为止,它做什么:
在 LCD 上读取和打印空气温度;
读取和打印水温;
打印时间和日期;
自动打开灯:
可以及时设置;
可以设置灯光在持续时间内淡入淡出;
自动关闭灯
可以设置关闭时间;
灯淡出持续时间可以是 se
当前设计中最多支持 8 个温度探头;
计划两个独立的输出,每个输出都有PWM。
这是自动化系统功能的核心。但是,手动控制仍然是可能的,具有可覆盖可配置持续时间的自动设置的按钮。到目前为止,如果我在灯关闭时按下按钮,它会以比正常速度(但仍不是残酷的关闭过渡)淡入淡出 5 分钟。在此持续时间之后,它返回到正常状态(关闭)。
如果是灯亮起的时间,它会在相同的持续时间内快速熄灭。将来,我计划有不同的关闭覆盖持续时间。事实上, 如果它打开, 我想关闭它, 这可能是因为我想去睡觉, 没有水族馆灯在我的房间里。因此,一个较长的覆盖,直到下一个自然的"早晨"(如下一次当灯应打开)。
在断电的情况下,它运行程序的正常过程,根据时间打开或关闭(它不记得发出的覆盖命令,这些命令存储在 ram 中,因此在断电或重置时丢失)。
在所有情况下,消息都在 LCD 上打印,您知道指示灯是完全关闭、淡出、淡入或完全亮起的。LCD 背光也会随着灯光而转动。在下一个修订版中,我将添加一些按钮,这些按钮将用作接口来设置淡入淡出持续时间、开机和关时、覆盖持续时间等。我会保留快速覆盖按钮,但也添加一个小菜单可控制与一些其他按钮。
代码中的所有内容都是非阻塞的,因此我不必使用中断。
下面是接下来的步骤:
添加更多按钮;
添加控制菜单;
灯关后使液晶背光关闭(LCD 背光灯亮起或关闭,因为它为 I2C 背光);
具有关闭覆盖的不同值,或能够重写到下一阶段;
让系统打印两个多个温度探头,并能够为每个带接口而不是代码的探头分配标签;
重新集成以前编码的温度控制(根据温度打开和关闭风扇或设备);
重新集成串行通信代码;
为 3D 打印或激光切割制作案例。
我以前使用串行通信槽 USB 与主节点交换数据。现在,我正在重新考虑这个。事实上, 我会尝试给 arduino 节点更多的自主性, 与 Rtc 来跟踪时间。这个想法是, 如果我想使用只是 Arduino 模块来控制系统, 我可以。
我保持 xml 通信协议通过 Usb 可用。但是,与其将此节点插入主节点(树莓派),我认为我将使其能够自行处理,并能够接收来自其他节点的订单。
然后,我会离开通过ESP8266从USB控制它的选项,直接连接,或者通过网络槽。
因此,我将有一个小而便宜的节点,能够自主功能,有可能通过物理界面(按钮,电位计等),或通过网络,从网络浏览器管理它。
我倾向于这种建筑,因为我正在做一些工作,另一个项目,Dhomochevsky,面向多莫学,家庭自动化,和智能家居,和Milapli,一个气象站的传感器网络。
考虑到水族馆控制器有很多传感器,我希望能够使用这些为其他两个项目,以及,而不是只是记录这个应用程序的数据。所有这一切都将是选项,我会寻找一种方法来创建某种Web服务,使信息可用。
无论如何,现在我在ESP8266的工作,我可能会做一个新的设计,这个水族馆控制器,当我得到这些wifi模块的窍。
我在 USB 控制板上取得了很大的进步。下面是原型的图片:
我使用的是AStar 32U4 微型, 从 Pololu作为 USB 接口。事实上,我计划使用一个裸露的 ATMega328p, 但这是便宜的 (在黑色星期五 5 美元), 同时紧凑和保留常规 arduino 的主要功能.因为它是如此便宜,我决定使用它,而不是一个电路基于Atmega328p与电线串行通信去树莓派的串行端口。它使用户能够将本设备与任何计算机一起使用,前提是它有 USB 串行驱动程序。
我选择这个模型, 因为它很便宜, 我有一些躺在周围, 但任何 arduino 会做。
无论如何,这个小板有GPIOs连接到两个继电器,两个(也许3,以后)TIP120晶体管,3个DS18B20温度传感器(一个常规,两个防水)。继电器用于控制电源电流。第一个 TIP120 是通过 PWM 控制 LED 条的。第二个TIP120晶体管控制风扇,用于冷却水。第三个TIP120,如果使用,将控制TEC单元,用于进一步冷却水。
温度传感器用于监控水温和空气温度。我有两个水箱,所以首先我会监测两个水箱的温度,但稍后,第二个水温传感器将用于监测水冷器的温度。
到目前为止,这个单位将控制两个坦克,但后来我想有一个单位每个坦克。
所有这些传感器和效应器都通过串行控制。到现在来,我可以发送各种命令来打开和关闭照明,甚至淡入和淡出它。继电器只需打开或关闭,其状态可以通过串行端口进行监控(您发送"getRelay1Status",并返回"开"或"关")。额外的晶体管将控制通过PWM,因此占空比将设置通过串行。同样,可以探测每个晶体管的状态。最后,每个温度传感器可以通过串行探测(你发送 getWaterTemp1,并得到第一个防水传感器的读数)。
我主要在 Astar 上编写代码, 然后我会编写程序向设备发送串行命令。
我还计划在协议中添加一种方法来设置一些设置,如风扇将开始的温度,等等。
我正在考虑添加 RTC 时钟,以便设备可以处理自动打开和关闭灯,而无需主控制器。如果是这样,可以将设备插入计算机以设置一次,然后自动运行。然而,我想记录数据,有一个Web界面来审查和控制系统,所以我将连接到一个树莓派反正。然而, 我可以改为使用 ESP8266 的 wifi 连接。
现在,设备上看不到物理接口,因为我想将按钮、LCD 等连接到树莓派(或连接到设备的计算机)。
再见!
评论
0 / 100
查看更多
Sen
2020-08-24
642
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号