1 Star 0 Fork 17

lzm2018 / Arduino-Water-the-plants

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
BSD-3-Clause

一款迷你型的植物浇水系统,包括代码、电路板原理图PCB图和适用3D打印的外壳

注意!所有版本PCB未加到电池低压保护,电池过放会导致电池寿命下降,请使用带保护板的电池,不要让电池电压低于3.0V。

2020-09-2 程序V1.0.4-集成土湿版,更新了程序和原理图和打板文件,进行了大量优化。使用蠕动泵或隔膜泵,蠕动泵外壳已经设计好,隔膜泵外壳正在设计。

程序V1.0.4适配PCBV9.2,文件正在整理,迟点发布。

  • 硬件部分:
  • 主控板集成电容式土壤湿度传感器
  • 更换了电机驱动芯片(MAX612E)
  • 故更改了引脚配置,不兼容旧版本程序
  • 配合UP自制的电容式PCB板使用,上面无任何元件的
  • 大电流地分开,各点单点接地,解决了大电流死机重启的问题
  • ....................................................
  • 软件部分:
  • 重写显示架构代码,方便新手看懂代码
  • 设置菜单改为二级菜单,方便选择功能
  • 新增可自定义的 水泵PWM的频率1K-30K
  • 新增可自定义的 水泵pwm的最大值
  • 新增可自定义的 亮屏的时间30-255秒
  • 新增可自定义的 延时打开和延时关闭水泵
  • 新增可自定义的 低压报警的阈值
  • 现有设置功能
  • 自动休眠,休眠电流0.46ma
  • 定时唤醒
  • 土湿上限
  • 土湿下限
  • 延时开
  • 延时关
  • 超时时间
  • 平滑启动
  • 初始PWM
  • pwm增量
  • 休眠时间
  • 亮屏时间
  • OLED亮度
  • 低压报警
  • 参考电压
  • Pwm频率
  • Pwm Max
2020-07-19 将土壤湿度的电路集成到主控板上,外接自制的土壤湿度探测器。
2020-04-19,程序更新V1.1.8,稳定版
  • 修复1.1.5-1.1.7的休眠不唤醒BUG
  • 修复了L9110驱动芯片使用PWM死机的BUG,只限D版本,C版本暂未修复
  • 具体做法为修改pin10引脚的pwm输出模式为相位和频率校正模式,频率为31250HZ
  • 修复土壤湿度传感器初始化太久会自动重启的BUG
  • 修改唤醒策略只有水泵auto模式下才会唤醒,水泵off模式下不会唤醒,永久休眠,直至电池没电
2020-04-15,程序更新V1.1.6
  • 将土壤湿度数值改为百分比模式
  • 更换看着顺眼的字体
  • 加入看门狗超时复位,以免系统卡死导致电机不会停止
  • 增加电池低压保护,低于等于3V,水泵和传感器断电,并提示
  • 电池低压时休眠时间强制设为24小时,下一次唤醒恢复原来设置
  • 唤醒界面加入电机超时提示的次数
  • L9110芯片对大功率电机使用平滑启动功能有几率使系统卡死,慎用(1.2A的电机)
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),满足数周充一次电(小型花盆),配合太阳能充电器可实现长期无人监管。
  • 丰富的设置选项,应对不同的植物。
  • 两种电机驱动芯片选择,L9110和DRV8832。
  • L9110支持pwm调节水泵速度,带热断电保护。
  • DRV8832不支持手动调节水泵速度,芯片会自己调节到合适工作电压,带水泵短路、堵转监控功能。
  • 土壤较松的话不适合垂直放置湿度传感器,建议水平放置在花盆底部
  • 3种不同的PCB结构,5.0带16340电池座,7.0仅引出电池接口但板子更小。V5和V7需要外接带驱动电路的土壤湿度传感器板子。
  • V5.1带电池座、制作简单。V7.1高度集成、体积最小、制作难度中等。V9.2集成土湿驱动电路,可将传感器从侧面焊接到主控板上,更高的集成度。
  • 观看视频 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秒内土壤湿度变化需要超过3%,否者会触发保护机制,以免没浇到水而无止境的运转水泵而使电量耗尽。

D.水泵短路堵转保护和传感器异常保护:拔出传感器停止浇水功能、水泵短路堵转检测(只限DRV8832)

E.电池电压校准:电池电压数值校准,因为每块电路板的基准电压都不会是5.00V,有时候会高低那么零点零几伏所以需要手动校准,使用万用表测量电池的电压进行对比校准。

F.自定义屏幕亮度:主界面下长上下按键可以调节OELD的亮度。

G.水泵运转时和充电时会有动画提示。

驱动芯片说明

请使用带保护板的锂离子电池,不管哪种芯片,电池的放电电流需要大于水泵的峰值电流,不然会掉电重启。

L9110

  • 支持普通直流有刷水泵
  • 支持带控制板的无刷水泵
  • 支持PWM输入
  • 芯片自带热断保护,控制器不会提示但会断电重启
  • 最大电流1000ma,使用超过1A电流的水泵会掉电重启。

DRV8832

  • 支持普通直流有刷水泵
  • 不支持带控制板的无刷水泵
  • 不支持PWM输入
  • 芯片带短路和堵转保护,控制器会提示不会断电重启
  • 最大电流1000ma,使用超过1A电流的水泵会被芯片自动限流,任然可以运转。

程序更新说明

v1.1.80
a.修复1.1.5-1.1.7的休眠不唤醒BUG
b.修复了L9110驱动芯片使用PWM死机的BUG
  具体做法为修改pin10引脚的pwm输出模式为相位和频率校正模式,频率为31250HZ
c.修复土壤湿度传感器初始化太久会自动重启的BUG
d.修改唤醒策略只有水泵auto模式下才会唤醒,水泵off模式下不会唤醒,永久休眠,直至电池没电
v1.1.71-D版本
a.修复1.1.5-1.1.7的休眠不唤醒BUG
b.C版本暂未修复L9110使用pwm死机问题,请谨慎使用PWM
 具体做法为修改pin10引脚的pwm输出模式为相位和频率校正模式,频率为31250HZ
c.修复土壤湿度传感器初始化太久会自动重启的BUG
d.修改唤醒策略只有水泵auto模式下才会唤醒,水泵off模式下不会唤醒,永久休眠,直至电池没电
v1.1.70
修改上下限每次步进数为2%
缩短看门狗溢出时间为2秒,即系统卡死会在4-2秒内复位
增加软复位,先按下“下键”不放再按“确认键”即可软复位
修复休眠时间太大时休眠不了的BUG
新增电机堵转短路保护,仅限drv8832版本(程序代号E)
修改充电指示的判断程序
v1.1.6(需更新u8g2_fonts.c)
将土壤湿度数值改为百分比模式
v1.1.5(需更新u8g2_fonts.c)
更换看着顺眼的字体
加入看门狗超时复位,以免系统卡死导致电机不会停止
增加电池低压保护,低于3V,水泵和传感器断电,并提示
低压时休眠时间强制设为24小时
L9110水泵平滑启动对大功率电机有几率使系统卡死,慎用
v1.1.4
修复充电误判的BUG
新增真正的“永不休眠”模式,休眠时间为0开启
v1.1.3(需重刷eeprom)
a.水泵浇水模式改为 永久关闭-自动运行-强制启动 3个模式
主界面的“浇水”按下为强制启动,只有OFF下有效
主界面上的“AUTO/OFF”可以选择,按下为“自动模式”“永久关闭”之间切换
注意,浇水模式可断电保存,所以需要重新刷入eeprom
修改模式不会立即保存到eeprom,休眠时才会保存到eeprom
b.再次优化唤醒时检测土壤湿度传感器的算法,修复唤醒有几率会误判的BUG
c.更换内存占用更小的字体,为后续升级节省空间
d.更换获取数字位数的算法
v1.1.2
a.美化设置界面ui
土壤传感器  开
水泵接口    R+L-
b.美化按调节亮度的ui(主界面长按加减键)
c.更快的检测传感器是否拔出
v1.1.1
改善唤醒时读取土壤湿度的稳定性
v1.1.0
将动态内存从90%减少至55%
更换选框样式
v1.0.1(需重刷eeprom)
注意!从旧版本升级的需要重新刷入EERPOM,即烧录两次程序才可使用。
优化代码结构,去掉多余的代码,提升运行效率,添加更多注释
修复设置界面的参数会保存两次EEPROM的BUG
主界面“浇水”上面的英文提示由ON换成AUTO
设置界面的电压校准改为每次加减0.01V
修改设置界面的数值排序

v7.0 v7.1

BSD 3-Clause License Copyright (c) 2019, 甘草酸不酸 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

简介

暂无描述 展开 收起
BSD-3-Clause
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/lzm2018/Arduino-Water-the-plants.git
git@gitee.com:lzm2018/Arduino-Water-the-plants.git
lzm2018
Arduino-Water-the-plants
Arduino-Water-the-plants
master

搜索帮助

14c37bed 8189591 565d56ea 8189591