# 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打印的外壳 ![](https://gitee.com/Lichengjiez/Arduino-Water-the-plants/raw/master/picture/js4056-1.jpg) ![](https://gitee.com/Lichengjiez/Arduino-Water-the-plants/raw/master/picture/js4056-2.jpg) #### 注意!所有版本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.主界面增加水泵运转时的动画 ![v7.1](https://gitee.com/Lichengjiez/Arduino-Water-the-plants/raw/master/picture/V7.0-2.jpg) ![v7.1](https://gitee.com/Lichengjiez/Arduino-Water-the-plants/raw/master/picture/V7.0-1.jpg) ![v7.1](https://gitee.com/Lichengjiez/Arduino-Water-the-plants/raw/master/picture/v7.0.png) ![v6.0](https://gitee.com/Lichengjiez/Arduino-Water-the-plants/raw/master/picture/v6.0.png) ![](https://gitee.com/Lichengjiez/Arduino-Water-the-plants/raw/master/picture/js4056-3.jpg) ![](https://gitee.com/Lichengjiez/Arduino-Water-the-plants/raw/master/picture/js4056-4.jpg) ![](https://gitee.com/Lichengjiez/Arduino-Water-the-plants/raw/master/picture/js4056-5.jpg) ![](https://gitee.com/Lichengjiez/Arduino-Water-the-plants/raw/master/picture/js4056-6.jpg)