几个月前,在我们的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.h来config.h,并替换变量和API键。
步骤4:上传并运行程序到ESP32
现在是时候将程序上传到ESP32板了!这就像打开avocado_monitoring一样简单。在Arduino IDE中打开上传按钮(箭头指向右侧)。
在一切都正确设置之后,我很快就能看到进入我的Graphite和Loki数据库的数据。
在Grafana中可视化数据
一旦监测数据传输到Graphite和Loki,就可以在Grafana中可视化它们了。我打开了通过Grafana Cloud注册设置的Grafana实例,并开始创建仪表板。我创建了两个仪表板,如果您想使用相同的仪表板,您可以复制粘贴我的仪表板的JSON模型在这里而且在这里.
在机架上增加监控系统
现在是工作的最后,也是最方便的部分。♀️我使用胶枪将我的监控系统安装在工厂支架上,但请随意即兴发挥并设计自己的解决方案。
通过这篇博文,我想说明为任何事情创建一个监控系统并不困难或复杂。我希望你能尝试一下有什么进展请告诉我.或者如果你决定建立一个不同的监控系统或物联网项目,我也非常乐意听到!