Coder Social home page Coder Social logo

albaniac / arduino-water-the-plants Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jie326513988/arduino-water-the-plants

0.0 0.0 0.0 15.77 MB

A mini palm plant watering system, including code, circuit board and 3D housing

License: BSD 3-Clause "New" or "Revised" License

C++ 100.00%

arduino-water-the-plants's Introduction

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

请下载最新程序进行更新

2019-12-31 更新0091c 1.将水泵超时的警告取消,改成水泵超时后进入休眠 2.优化休眠唤醒后误判断传感器错误 3.设置界面湿度数值前面增加负号

2019-12-28 传感器垂直插入土壤时,若水不浇到土壤湿度传感器附近,土壤的湿度很难传递到传感器附近,导致读取不到数值变化,浇水会很困难。所以我将新设计一个新的外壳,传感器会在花盆的最底下水平放置,这样水浇下来,肯定会有湿度传导到传感器。

2019-12-12 经过实际使用,浇湿土壤时读取的湿度值多在260左右,所以将浇水上限数值限制调到200。

2019-12-09 优化设置界面的显示逻辑

特点

根据土壤的湿度进行浇水,而不是简单定时浇水,避免不必要的浇水,更加科学的管理植物。

可自动休眠,节省电量,并内置750mah电池,满足数周充一次电(小型花盆),配合太阳能充电器可实现长期无人监管。

丰富的设置选项,应对不同的植物。

烧录说明

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.主界面增加水泵运转时的动画

arduino-water-the-plants's People

Contributors

jie326513988 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.