# Arduino-Water-the-plants
**Repository Path**: cxcxiezi/Arduino-Water-the-plants
## Basic Information
- **Project Name**: Arduino-Water-the-plants
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: BSD-3-Clause
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 20
- **Created**: 2020-03-29
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 一款迷你型的植物浇水系统,包括代码、电路板原理图PCB图和适用3D打印的外壳


#### 注意!所有版本PCB未加到电池低压保护,电池过放会导致电池寿命下降,请使用带保护板的电池,不要让电池电压低于3.0V。
#### 2020-03-20,超小尺寸版本V7.1正式发布
* 添加100uf电容等多个滤波电容至5V电路,增加电流供应能力和稳定性,防止电机启动对电路造成过多的压降和干扰
* 添加一组π形滤波器至ADCVCC,增强ADC采样的抗干扰能力。
* 电压采样引脚串联10K电阻,以防sx1308升压芯片损坏时烧毁单片机
* 欲更换电机驱动失败,现还是L9110
* 欲增加低于3.0V时关断sx1306的功能失败,所以电池低压保护未成功
* 注意!从旧版本升级的需要重新刷入EERPOM,即烧录两次程序才可使用。
* 优化代码结构,去掉多余的代码,提升运行效率,添加更多注释
* 修复设置界面的参数会保存两次EEPROM的BUG
* 主界面“浇水”上面的英文提示由ON换成AUTO
* 设置界面的电压校准改为每次加减0.01V
* 修改设置界面的数值排序
## 特点
* 根据土壤的湿度进行浇水,而不是简单定时浇水,避免不必要的浇水,更加科学的管理植物。
* 可自动休眠,节省电量,并内置750mah电池(5.0),满足数周充一次电(小型花盆),配合太阳能充电器可实现长期无人监管。
* 丰富的设置选项,应对不同的植物。
* 土壤较松的话不适合垂直放置湿度传感器,建议水平放置在花盆底部
* 3种不同的PCB结构,5.0带16340电池座,6.0和7.0仅引出电池接口
* V5.1带电池座、制作简单。V6.0拼插式体积小、制作简单。V7.1高度集成、体积最小、制作难度中等。
* 观看视频 https://space.bilibili.com/16758526/favlist?fid=769297826&ftype=create
* 3D打印件下载 https://www.thingiverse.com/thing:4025691
## 烧录说明
1.使用ArduinoIDE编译上传,需要下载两次程序才可以使用在setup()找到这段程序看说明下载程序。EEPROM.put第一次写入去掉注释,第二次以后注释上,EEPROM.get第一次写入注释上,第二次以后写入去掉注释
2.必须将arduino pro mini的电源指示LED和LED旁边的限流电阻焊下来,否则电量会很快耗尽,若只焊下LED没焊下电阻就读取电压会烧坏板子!
## 原理
1.基本原理:浇水,休眠,唤醒,判断土壤湿度是否达到设置的值,没达到继续休眠,达到就开始浇水,浇到设定的值就休眠,不断循环。比市面上的定时浇水多了一个土壤湿度检测功能,不再是盲目的浇水。
2.休眠时电流低至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
程序更新说明
092c
1.将按键的消抖改为对比时间式的消抖,不再使用delay进行消抖,效果更佳
091c
1.将水泵超时的警告取消,改成水泵超时后进入休眠
2.优化休眠唤醒后误判断传感器错误
3.设置界面湿度数值前面增加负号
090c
1.设置界面第二页增加4项的设置
a.传感器开关
b.水泵超时
c.水泵接口翻转
d.电压校准
2.修正水泵运转时间显示
3.主界面下长按按键可调节亮度
4.优化一些代码逻辑
080c
1.因硬件问题移除水泵PWM输出,改为普通高低电平控制,pwm输出会导致系统卡死
2.主界面增加电池充电时的动画
3.主界面增加水泵运转时间显示
4.主界面增加水泵运转时的动画







