博客/工程

我是如何用Arduino和Grafana Cloud为我的牛油果植物建立一个监控系统的

2021年3月8日8分钟

几个月前,在我们的Grafana黑客日期间,我创建了我的第一个监视解决方案:my酵母监测系统.建造它非常有趣,我非常喜欢它!因此,当下一次Grafana黑客攻击日临近时,我开始思考我的下一个监控系统可能是什么。我想多了解些什么?我希望在哪些方面做得更好?说实话,我没怎么想。我环顾四周,它们就在那里:我爱的美丽植物,但我肯定不知道如何照顾它们。所以我决定尽我所能去了解他们并建立一个我的工厂监控系统.具体来说,就是我的牛油果植株的监控系统。

监控什么?

每当我开始任何监控项目时,我都会先写下一个变量列表,这些变量可以告诉我更多关于我想监控的系统的信息。在这种情况下,它是植物的外部输出,也是它生长的环境。我的目标是列出我能想到的尽可能多的变量,然后找出实际上可以监控的变量以及我能够构建的变量。在这个项目中,我将监控:

  • 植物的高度
  • 空气温度
  • 空气湿度
  • 土壤水分
  • 光照条件

硬件

为了建立我的鳄梨植物监测系统,我使用了:

  • 1ESP32 WiFi蓝牙4MB闪存UNO R3开发板
  • 1HC-SR04超声波距离传感器来测量植物的高度
  • 1DHT22传感器模块用于测量环境的温度和湿度
  • 1土壤水分传感器模块测量土壤水分
  • 1TEMT6000光传感器测量光强
  • 1LED显示矩阵MAX7219在监控系统上直接显示工厂的当前状况
  • 125分面包板
  • M-F Dupont电缆
  • 1微型USB数据线
  • 1USB充电器

你还需要:

  • 1厂站把所有这些放在一起,建立监控系统

该软件

您需要安装Arduino IDE开源电子平台,易于使用的硬件和软件。Arduino编译代码,然后上传到你的电路板上。我安装了1.8.10版本,因为更新的版本会在我使用的OS Big Sur上抛出错误。它运行得很好。

如果您的操作系统不能自动识别USB串行,您可能需要安装CP210x USB到UART桥VCP驱动程序

设置Grafana Cloud

下一步是设置数据库和Grafana。我已经决定使用Grafana云-这与托管的Grafana,Grafana洛基以及Graphite -用于数据存储和数据可视化。的自由层配有10,000系列的石墨指标和50GB的Loki日志,这对于这个监控解决方案来说绝对绰绰有余。

我去了Grafana Cloud注册并创建了一个新帐户。一旦我设置好我的帐户,我就可以看到我的传送门和我托管的Grafana、Loki和Graphite实例。

此时,我还为Loki和Graphite创建了API密钥,以便将监视系统中的指标发布到这些数据库中。

现在是时候开始把事情放在一起了。下面,你可以看到所有传感器和输出的pinout:

由于我有比电源和接地引脚更多的输入和输出,我也使用了25点面包板。我把它连接到vcc销而且接地销,所以我创建了3个额外的gnd和vcc引脚,我将用于我的输入和输出。

LED显示矩阵MAX7219

8x8 LED矩阵通常用于显示简单的图形或文本。我决定用它来展示我的工厂的状态。如果植物有完美的条件,我在LED矩阵上看到一个笑脸。另一方面,如果土壤干燥或温度过低或过高,则会显示悲伤的表情符号。

引出线:

  • 在面包板上VCC引脚到5V
  • DIN数据输入引脚到板上引脚5
  • CS芯片选择引脚到板上引脚13
  • CLK串行输入引脚到板上的引脚12
  • GND引脚到面包板上的GND

DHT22传感器模块

这是一个非常基本和便宜的传感器由两个部分组成:一个湿度传感器和一个热敏电阻。在这种情况下,它被用来测量我的牛油果植物所生活的环境的温度和湿度。

引出线:

  • VCC引脚到板上3.3V
  • 板上的数据引脚到引脚27
  • GND引脚到面包板上的GND

TEMT6000光传感器

这个光传感器将检测我的牛油果植物周围环境的亮度。TEMT6000测量照度,单位为勒克司。TEMT6000使用起来非常直观:电流越大越亮,电流越小越暗。

引出线:

  • 电路板上的VCC引脚到5V
  • SIG输出电压引脚到板上引脚34
  • GND引脚到板上的GND

土壤湿度传感器

土壤水分传感器是本项目中最重要的传感器之一。它会让我知道我的植物的土壤是湿的还是干的,它会帮我弄清楚什么时候浇水。

引出线:

  • VCC引脚到引脚17(我没有使用VCC引脚来防止腐蚀)
  • SIG输出电压引脚到板上引脚16
  • GND引脚到板上的GND

HC-SR04超声波距离传感器

超声波传感器使用声纳来确定物体的距离。它具有高精度和稳定的读数范围从2厘米到400厘米。我正在用这个传感器测量我的植物的高度。

引出线:

  • 在面包板上VCC引脚到5V
  • 三角引脚,将信号发送到板上的引脚25
  • 回声引脚,接收信号到板上的引脚26
  • GND引脚到面包板上的GND

的编程

一旦我的传感器和开发板准备好了,我就开始写一个程序,它将从传感器中检索数据并将其发送到Graphite和Loki数据库。我正在使用Arduino IDE将程序上传到开发板。因此,作为第一步,我已经通过microrousb将我的ESP32板与所有传感器连接到我的计算机。

步骤1:设置Arduino IDE以支持您的ESP32板

在我的ESP32板连接到我的电脑后,我继续打开我的Arduino IDE。由于我使用的是ESP32板(而不是Arduino板),所以我需要添加一个板定义,以添加对EP32板的支持。在Arduino > Preferences中,我添加了urlhttps://dl.espressif.com/dl/package_esp32_index.json附加板管理器url输入。这个开源板定义增加了对ESP32板编程的支持。

然后,在工具>板>板管理器中,我添加了ESP32板管理器。

最后,在Tools > Boards中,我选择了DOIT ESP32 DevKit.这告诉Arduino IDE在编译固件映像时使用哪个配置文件和基本库,以及如何将其闪现到板上。确保在Tools > Port子菜单中,您已经选择了新的COM端口。

步骤2:添加库

对于这个项目,我使用了以下库:

我在Sketch > Include Library > Library Manager中安装了所有这些库。在进行下一步之前,安装这些库是很重要的。

步骤3:创建一个程序

Arduino原生支持一种称为Arduino编程语言(APL)的语言,它基本上是构建在c++之上的框架。用APL编写的程序称为sketch,扩展名为.ino。每个Arduino程序都必须有两个特殊的函数,它们是每个sketch的一部分:setup()和loop()。当草图开始时,setup()被调用一次。loop()函数被反复调用,是大多数草图的核心。

完整的草图可以在我的GitHub.在回购中,有两个重要的文件:avocado_monitoring.ino而且config_template.h.第一个文件包含程序和详细的注释,描述每个部分的功能。在第二个文件中,我存储了变量和API键。如果您决定创建自己的监控系统,请下载repo,重命名config_template.hconfig.h,并替换变量和API键。

步骤4:上传并运行程序到ESP32

现在是时候将程序上传到ESP32板了!这就像打开avocado_monitoring一样简单。在Arduino IDE中打开上传按钮(箭头指向右侧)。

在一切都正确设置之后,我很快就能看到进入我的Graphite和Loki数据库的数据。

在Grafana中可视化数据

一旦监测数据传输到Graphite和Loki,就可以在Grafana中可视化它们了。我打开了通过Grafana Cloud注册设置的Grafana实例,并开始创建仪表板。我创建了两个仪表板,如果您想使用相同的仪表板,您可以复制粘贴我的仪表板的JSON模型在这里而且在这里

在机架上增加监控系统

现在是工作的最后,也是最方便的部分。♀️我使用胶枪将我的监控系统安装在工厂支架上,但请随意即兴发挥并设计自己的解决方案。

通过这篇博文,我想说明为任何事情创建一个监控系统并不困难或复杂。我希望你能尝试一下有什么进展请告诉我.或者如果你决定建立一个不同的监控系统或物联网项目,我也非常乐意听到!