在上一篇文章中我用ESP01 + DHT22 和 继电器,做了了一个花草温湿度检测器,并且连接了一个水泵来浇水。但是DHT22只能检测空气中的温湿度,土壤中的湿度数据,是无法检测到的。这篇文章将解决这个问题,利用ESP12 + 土壤湿度传感器,测量土壤中的湿度数据。
前言
为什么用ESP8266-12F
了呢?因为ESP01
中ADC
引脚未被引出,只能使用功能更强大的ESP12F
,虽然成本高了不少,但是它引脚更多,也可以接入更多的传感器了,甚至可以将它做成一个小型环境检测站,后面会写一篇文章专门介绍如何制作一个环境检测站,并接入HA中。
(电容式土壤湿度模块)
注意:
淘宝上大部分都是电阻式,请不要买电阻式湿度模块
,电阻式很容易被腐蚀,测量效果会非常不准确;
电路设计
ESP12F 模块的A0
脚是连接内部ADC的,但是它只能测量0~1V
的电压,而上图中的电容式传感器输出是0~3V
,所以这里需要接入一个分压电路进行分压,才能准确保证测量的准确性。
(特地推导了下,怕记错了电阻分压公式,逃...)
分压电路如上,之前忘了上传,比较简单,就懒得用AD画了,遂徒手画了一个(emmmm,拍照上传竟然是倒的),电路图上 U0
侧是传感器输出,U1
侧是ESP8266 ADC,其中,R1
阻值200K,R2
阻值100K。
感谢评论区老哥提醒,经过仔细核对,并多次实测,这个电阻分压网络是正确的~
程序设计
这里需要使用的是ESPHome 的 adc
模块,也就是将电压数据转换为土壤湿度数据。
注意:这个模块湿度越大,电压越低(因为导电率高,土壤阻值小);相反:湿度越低(导电率低,土壤阻值高),电压反而高
因为这个传感器厂家没有提供相关的产品手册可供参考,所以,在设计时程序就要建立一个 电压-湿度 的对照表,或者关系曲线。理论上需要做大量测试,根据数据进行描点、绘图,进而得出相关性曲线。我这里直接假设它是一个线性关系,且数据呈直线相关23333
程序代码如下:
来补图了...
PS: 还有一点,湿度数据在HomeKit里显示的问题至今仍未解决Orz...
版权属于:编码书生
本文链接:https://codess.cc/archives/375.html
所有原创文章采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。
除特别注明,您可以自由的转载和修改,但请务必注明文章来源且不可用于商业目的。
![]()