项目介绍
该项目旨在创建一个植物监测和浇水系统。主要任务是控制伺服、继电器和采集植物的土壤湿度数据。大量的传感器使用模拟信号作为输出,但树莓派没有模拟数字转换器。为了解决这个问题,我使用了一个外部ADC模块和Arduino网关,因为它们内置了ADC。当我们想要与环境交互时,我们通常需要脉冲宽度调制。我找到了3种方法来解决这个问题。第一个是软件PWM,第二个是Arduino网关,最后一个是使用具有PWM功能的模块/IC。我实现了前两个方法,因为我以前实现过I2C设备。ADC和PWM在Arduino的世界中经常使用,所以如果我们想在树莓派上使用GPIO,我们通常需要至少其中一个功能在我们的树莓上运行。
应用程序
该应用程序有两种模式:自动模式,当它检测到工厂需要一些水的时候,你可以手动控制伺服和继电器。因为伺服器可以旋转大约180度,一个伺服器只能给2个植物浇水。启动时默认为自动模式。当我们读取土壤湿度传感器时,我们对其值进行分类。有5个类别。最干燥的在第5类,在GUI上用红色标记。它的对面是用绿色标记的第一类。计时器会定期检查这些值,如果“植物A”或“植物B”的类别高于可接受的范围(因此地面太干燥),它会给较干燥的那个浇水。在同一时期,该程序以类似的方式检查和灌溉其他两种植物(“植物C”和“植物D”),并在每个时期都这样做。
组件
伺服SG90:
驱动伺服系统通常需要较大的GPIO时钟频率。默认的提供程序不够好,所以我使用了lightning提供程序。树莓派的第一个电源出现了问题,可能需要一个性能更好的,与其他传感器相比,伺服传感器消耗了很多能量。这两个问题导致了性能问题。现在有了iPad的充电器,它的性能好多了。一个带外置电源的伺服电路可以解决如下问题:
我认为这已经解决了问题,现在它完美地工作了。我已经连接伺服的Vcc电源的5V和信号并使其保持不变,他们有共同的基础。下面是新的连接:
最后,也或许没有必要这样做,不过我想说也许为树莓派提供更好的电源,或者改进软件,就能解决伺服系统的所有问题。
ADS1115 16位I2c ADC:
我已经尝试构建在ADS1115 16位ADC的每一个功能。但它仍在开发中。例如,没有设置阈值寄存器,它应该有一个自己的项目。总之,它几乎已经可以作为一个功能齐全的ADC驱动程序使用。但稍有不足的是可能会有一些逻辑问题,所有内置的函数都没有完全测试过。
BMP180 I2c温度压力传感器:
我使用的BMP180驱动程序与这个项目使用的基本相同。我只修改了初始化,因为它与lightning提供程序不完全兼容。我想测量温度和压力属于气象站、电厂监测等类似项目。
继电器:
驱动中继需要简单的GPIO操作。从源代码中很容易理解。
光电二极管电路:
我之所以使用这个模块,是因为这种度量方法在类似的项目中也可能有用。放大器电路可以在LTC 1050的文档中找到。光电二极管是欧司朗BPW 21日光优化。
Arduino网关:
对于网关,我使用Arduino Due,因为它有3.3 V拉起I2C总线。我可以使用电压电平转换器或另一个总线与您自己的拉起(如果我知道Arduino 2560和其他一些板有更多的I2C总线,它们没有拉起,所以您可能会使用它们)。代码非常简单。
土壤湿度传感器:
我用的是带有比较器模块的:
项目总结
在我看来,这个项目虽然比较简单,但有助于为后续的研究设计提供一个非常基本的主流想法:如何灌溉我们的植物。并且有一些特点,你可能想应用在你自己的项目,如:
- 通过I2C总线与Arduino板通信(Arduino网关)
- 树莓派上的ADC
- 树莓派的PWM(伺服)
未来的计划
- Azure的连接
- Xamarin的移动应用程序
- I2C更换为蓝牙与Arduino通信
如果您对此项目有任何想法、意见或问题,请在下方留言。
以上内容翻译自网络,原作者:Bence Kovari,如涉及侵权,可联系删除。