利用ESP32制作一个电容式土壤湿度传感器

描述

为了方便给冬季大棚里养护的植物浇水,我准备建立一个系统以备不时之需。

思考再三后,我的结论是准备自己做一个传感器,因为对于我的植物浇水项目(即将到来),我需要几个传感器用于几个植物。

我选择ESP32作为微控制器,因为它具有多个12位ADC输入,并且能够以比ArduinoUno等更高的频率生成PWM信号。在这个项目中,将为每个传感器生成一个600kHz的信号。

该传感器由广泛使用的简单低成本材料制成,可用作电容式湿度传感器。

第1步:制作湿度传感器

DIY传感器由简单的材料制成:

一些音频线

两个火锅叉

接线端子

塑料座椅腿套

硅胶膏

传感器

销从火锅叉上切下,镀铬有助于避免腐蚀。带有接线端子的结构可以轻松地将铜电缆线连接到镀铬引脚。销(不弯曲)便于插入植物的土壤中。

作为测量水分含量的指标,我正在重复使用为我之前的项目开发的水位指示器:

传感器

第4步:电子设置

在面包板设置中,我使用了ESP32s(节点MCU)。这种选择的原因如介绍中所述。

我的计划是扩展这个设置,使其具有制作完整的植物浇水系统的功能,并具有在线监测和警告功能。(ESP32板载WiFi和蓝牙)。

电路图(用Fritzing制作)如下:

传感器

传感器电路图如下:

传感器

面包板上的实际设置如下所示:

传感器

ESP32由USB端口提供5V电源,并且板载3、3V稳压器。一个输出GPIO引脚通过10KOhm电阻连接到湿度传感器的一侧,并在5次测量期间(持续5秒)向传感器发送600kHz信号。ESP32(12位ADC)的一个输入引脚通过二极管和R/C网络(1MOhm和1uF)连接。传感器的另一条腿连接到GND。

传感器仅在测量期间通电,以避免对镀铬笔产生电解影响。

在我的实验中,我通过将传感器放入水中(最低测量值)和露天(最高值)来确定传感器的最小值和最大值。将传感器放入花盆中会产生介于最小值和最大值之间的中间值,具体取决于土壤湿度水平。中间值的比例似乎是相当线性的。

第3步:制作软件

ArduinoSketch中的循环函数很简单,只包含调用2个函数:

传感器

测量之间的1秒延迟仅用于实验和演示目的。在实际应用中,这种频率会低得多(通常每天几次,取决于植物的口渴程度)

ARDUINOIDE的绘图监视器以及串行监视器在实验过程中非常有用。绘图监视器图的视图如下所示:

传感器

plotmonitor上的读数显示由12位ADC测量的值。ESP32的完整3.3V刻度除以4096,即:每步0.8mV。

使用以下代码测量水分含量:

传感器

此后根据上表确定平均值所在的括号,并在湿度指示器上用颜色指示湿度水平,这要归功于《Adafruit_NeoPixel.h》库:

传感器

要通过USB端口将草图下载到ESP32,需要按住Boot按钮。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
jf_43616198 2023-03-14
0 回复 举报
水位指示器怎么做 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分