在上一篇文章中我用ESP01 + DHT22 和 继电器,做了了一个花草温湿度检测器,并且连接了一个水泵来浇水。但是DHT22只能检测空气中的温湿度,土壤中的湿度数据,是无法检测到的。这篇文章将解决这个问题,利用ESP12 + 土壤湿度传感器,测量土壤中的湿度数据。


前言

为什么用ESP8266-12F了呢?因为ESP01ADC引脚未被引出,只能使用功能更强大的ESP12F,虽然成本高了不少,但是它引脚更多,也可以接入更多的传感器了,甚至可以将它做成一个小型环境检测站,后面会写一篇文章专门介绍如何制作一个环境检测站,并接入HA中。

925114615.jpg
(电容式土壤湿度模块)

注意:淘宝上大部分都是电阻式,请不要买电阻式湿度模块,电阻式很容易被腐蚀,测量效果会非常不准确;


电路设计

ESP12F 模块的A0脚是连接内部ADC的,但是它只能测量0~1V 的电压,而上图中的电容式传感器输出是0~3V,所以这里需要接入一个分压电路进行分压,才能准确保证测量的准确性。

151978123.jpg
(特地推导了下,怕记错了电阻分压公式,逃...)
分压电路如上,之前忘了上传,比较简单,就懒得用AD画了,遂徒手画了一个(emmmm,拍照上传竟然是倒的),电路图上 U0侧是传感器输出,U1侧是ESP8266 ADC,其中,R1阻值200K,R2阻值100K。
感谢评论区老哥提醒,经过仔细核对,并多次实测,这个电阻分压网络是正确的~


程序设计

这里需要使用的是ESPHome 的 adc 模块,也就是将电压数据转换为土壤湿度数据。

注意:这个模块湿度越大,电压越低(因为导电率高,土壤阻值小);相反:湿度越低(导电率低,土壤阻值高),电压反而高

因为这个传感器厂家没有提供相关的产品手册可供参考,所以,在设计时程序就要建立一个 电压-湿度 的对照表,或者关系曲线。理论上需要做大量测试,根据数据进行描点、绘图,进而得出相关性曲线。我这里直接假设它是一个线性关系,且数据呈直线相关23333

程序代码如下:

此处内容需要评论回复后(审核通过)方可阅读。

来补图了...

TIM20191109153942.png

TIM20191109154217.png

PS: 还有一点,湿度数据在HomeKit里显示的问题至今仍未解决Orz...

TIM20191109154207.jpg

最后修改:2020 年 10 月 28 日
您的支持就是我持续更新的动力!