在上一篇文章中我用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 国际许可协议进行许可。
除特别注明,您可以自由的转载和修改,但请务必注明文章来源且不可用于商业目的。
170 条评论
学习
向大佬学习学习
学习学习
厉害厉害
学习学习
太棒了,刚好毕业设计也打算用ha来学习下
学习学习
学习一下
值得学习,湿度在homekit里解决了吗?
解决了,在yaml配置文件里加上一个设备类:humidity:
见文档:https://www.home-assistant.io/integrations/sensor/
好东西!~值得学习!~~~
正愁想做一个土壤温湿度检测的装置呢QAQ
从头学到尾
学习学习
学习一下。
回来回顾学习下
学习一下
学习一下
求代码!!!
求求代码
学习,找了好久
学习
学习学习
感謝大老,學習學習
感謝大老,學習學習
学习学习
感谢分享
学习学习
感谢楼主分享代码学习了
学习了
F
很不错,学习代码了
很不错,学习代码了
很不错,学习代码了╮(╯▽╰)╭
谢谢博主分享,学习了
谢谢分享
感谢分享
很不错,学习代码了
很不错,学习代码了
前来学习学习。
学习代码
感谢分享
感谢分享
求代码! 谢谢
学习下怎么在esphome yaml中选择esp12f
很不错,学习代码了
很不错,学习代码了
太牛了~懇請code
kk
看看代码是什么样
看看代码是什么样的
看看代码是什么样的
学习下代码,谢谢分享
学习下代码,谢谢分享
现在新版的电容式的是不是接入方法就变了呢
学习学习,谢谢共享
博主哪里下载代码呀
感谢分享
谢谢,求码。。。
学习学习
学习了学习了!~
感谢博主分享学习,最近正好在研究这个ESPHome
感谢分享
谢谢博主分享
不错,博主厉害
求马
博主哪里下载代码呀
学习学习
膜拜大佬,刚入坑8266,也买了这个电容湿度模块,学习学习φ( ̄∇ ̄o)
学习学习
感谢
123
66
求代码
求代码
学习一下,大佬厉害!
我看一看傲
感谢
感谢
感谢
挺好,学到了
学习一下
正在做这个实验
活到老学到老
学习了学习了!~
学习了学习了!~
学习了 感谢
学习
继续学习
大佬厉害
学习学习,感谢分享
士大夫士大夫士大夫和捷克首都和房价开始
ESP12-F烧录一次后就没法继续烧录了,博主知道什么问题吗
向大佬学习
666
谢谢分享
这个电阻计算有一些问题,因为输入端电压是3.3v,如果R1是200k,R2分压电阻要低于1v,电阻选88k比较理想,100k会超出acd的量程。
感谢指出,我特地去重新查了一下,这个土壤湿度传感器的输出电压是0~3V,电阻分压端输入电压是0~3V,未超过3.3V,所以这电阻计算应该是没问题的。实际测量中,将湿度计完全泡在水中,分压网络输出电压约为0.04,ESP8266测量为0.02;用吹风机完全烘干,分压网络输出电压约为0.98V,ESP8266测量值为0.95-0.96,在误差允许范围内,是符合电路设计的。
谢谢博主分享~我正在搞这个模块
关注一下大神。
真的厉害
前来学习学习
学习了
学习中,谢谢
来学习学习
前来学习。
如何接入雨滴啊
666666
66666666666666666666
感谢分享
学习学习
前来学习。
前来学习学习。
谢谢分享这么好的教程哇
我又来了
民主富强崛起
学习学习
一致再找如硬件如何接入homeassistant 感谢分享
民主富强崛起
富强,民主,文明,和谐
看看,想学习下
谢谢你,很喜欢你的教程,希望你能继续多开发玩法
666
感谢分享
多谢,学习了
看看~, 感谢大佬分享
学习学习
OωO
看看代码是什么样的
学习学习
看看代码怎么写的OωO
看看代码怎么写的OωO
23333
看看代码是什么样的。
支持,学习
谢谢分享!
我来学习了。
很强
esphome这能发送AT指令的吗
不能,刷了ESPHome 固件之后,不能发送AT指令
学习学习,谢谢
感谢分享
大神啊,受益匪浅啊
谢谢分享
请问树莓派怎么接入这个传感器呀
树莓派Docker 安装Homeassistant 和 ESPHome
学习下
学习
想试试配合homeassistant自动化实现自动浇水
用Node-RED,实现起来很简单
学习
学习学习
博主你好 每次编译都有错误 知道怎么解决吗 大佬
Compiling .pioenvs/soil_sensor/lib46a/ESP8266WiFi/BearSSLHelpers.cpp.o
src/main.cpp:137:33: error: stray '##' in program
if (x > 0.85) { ## 每个传感器的参数值可能都不一样;
^
src/main.cpp:137:7: error: stray '\346' in program
if (x > 0.85) { ## 每个传感器的参数值可能都不一样;
^
src/main.cpp:137:7: error: stray '\257' in program
src/main.cpp:137:7: error: stray '\217' in program
src/main.cpp:137:7: error: stray '\344' in program
打开docker 新建终端(bash),在终端里输入:pip install -U esphome
o(*////▽////*)q
瞅瞅代码 借鉴借鉴
最近也在搞个浇花的东西 恰好看到你的文章 不错不错
最近也在搞个浇花的东西 恰好看到你的文章 不错不错
ESPHome真强
好吧,博主真能折腾。
博主 我看不见分压电路图呀
之前忘了传电路图。。。重装系统之后图找不到了2333,遂徒手画了一个,现已补上,不好意思
感谢分享
土壤湿度怎么标定?大概多少值浇水呢
这就得自己看着把握啦。。。我是自己随便估了一个值
我入手了一个但是是通过别人的接入,我在等你的教程,老大
贝壳物联,支持小度和天猫
老大,弄个怎么接入天猫精灵的
后面会应该写一篇接入天猫精灵的教程,目前我还没添置这个设备 >﹏<