2019-12-28 传感器垂直插入土壤时,若水不浇到土壤湿度传感器附近,土壤的湿度很难传递到传感器附近,导致读取不到数值变化,浇水会很困难。所以我将新设计一个新的外壳,传感器会在花盆的最底下水平放置,这样水浇下来,肯定会有湿度传导到传感器。
1.将U8g2和MsTimer2的整个文件夹放在你自己的库文件夹里,或者用ArduinoBuilder直接烧录hex文件,暂时还不知道怎样可以一次性把EEPROM和程序一起烧录
2.使用ArduinoIDE编译,需要下载两次程序才可以使用
在setup()找到这段程序看说明下载程序
EEPROM.put第一次写入去掉注释,第二次以后注释上
EEPROM.get第一次写入注释上,第二次以后写入去掉注释
3.使用烧录软件也是要烧录两次hex文件,先烧录1,在烧录2。
4.必须将arduino pro mini的电源指示LED和LED旁边的限流电阻焊下来,否则电量会很快耗尽,若只焊下LED没焊下电阻就读取电压会烧坏板子!
1.基本原理:浇水,休眠,唤醒,判断土壤湿度是否达到设置的值,没达到继续休眠,达到就开始浇水,浇到设定的值就休眠,不断循环。比市面上的定时浇水多了一个土壤湿度检测功能,不再是盲目的浇水。
2.休眠时电流低至0.6-0.8ma,水泵接口输出电压5v电流800ma,可根据需求选用水泵。
3.上电前插上电容式土壤湿度传感器,当然没插也可以开机但会报错。
每次上电需要手动开启浇水功能(主界面第三项),开启浇水功能不代表水泵就会运转,水泵运转要达到浇水下限的值。
4.写有传感器和水泵的保护代码,一旦传感器或水泵故障即可触发保护机制,让浇水系统停止工作,并显示故障原因。
传感器保护机制就比较简单,若传感器没工作,读取传感器数值的引脚就会受到干扰,数值会变得非常大,只要判断数值超过一定值就触发保护机制。
水泵保护则是使用水泵超时时间来设定,若输出接口打开,10秒后记录当前的土壤湿度值,过一段时间在将旧的土壤湿度值跟现在的对比,若变化小于5,即会触发保护使浇水系统停止,即可判断水泵没接或水泵没工作或水管没插到土里。
1.自定义浇水上限和下限
2.自定义浇水系统休眠时间
3.水泵和传感器异常保护机制
4.强制关闭传感器
5.手动开启关闭浇水功能
6.自定义水泵超时保护时间
7.水泵接口翻转
8.读取电池电压校准
9.电池充电时的动画
10.水泵运转时间显示
11.水泵运转时的动画
12.自定义屏幕亮度
13.数据断电保存
A.自定义浇水上下限:浇水的下限就是土壤干到什么程度才开始浇水,上限就是土壤要浇到多湿才停止。
B.自定义休眠时间:每一次浇水的间隔,休眠能大大节省电量。
C.水泵超时保护:水泵超时时间内土壤湿度是否有变化,如设定60即是每隔60秒内土壤湿度变化需要超过5个值,否者会触发保护机制,以免没浇到水而无止境的运转水泵而使电量耗尽。
D.水泵接口翻转:控制水泵正反转,注意要水泵支持正反转才可使用!
E.电池电压校准:电池电压数值校准,因为每块电路板的基准电压都不会是5.00V,有时候会高低那么零点零几伏所以需要手动校准,使用万用表测量电池的电压进行对比校准。
F.自定义屏幕亮度:主界面下长上下按键可以调节OELD的亮度。
G.水泵运转时和充电时会有动画提示。
6-电机驱动输入引脚1
5-电机驱动输入引脚2
12-传感器电源正极
13-led指示灯(暂时未启用)
2-下按键
3-上按键
4-确认按键
A3-读取电压的引脚
A0-读取土壤湿度的引脚
A2-读取充电状态的引脚
A4-OLED,SDA
A5-OLED,SCL
版本更新说明
0091c
1.将水泵超时的警告取消,改成水泵超时后进入休眠
2.优化休眠唤醒后误判断传感器错误
3.设置界面湿度数值前面增加负号
009c
1.设置界面第二页增加4项的设置
a.传感器开关
b.水泵超时
c.水泵接口翻转
d.电压校准
2.修正水泵运转时间显示
3.主界面下长按按键可调节亮度
4.优化一些代码逻辑
008c
1.因硬件问题移除水泵PWM输出,改为普通高低电平控制,pwm输出会导致系统卡死
2.主界面增加电池充电时的动画
3.主界面增加水泵运转时间显示
4.主界面增加水泵运转时的动画