自学传感器之自动浇花系统-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12898|回复: 15

自学传感器之自动浇花系统

[复制链接]
发表于 2018-8-23 13:48 | 显示全部楼层 |阅读模式
设备:
        1、Arduino UNO R3        1个
        1.2、Shield 传感器扩展板V5.0        1个(可选)
        2、土壤湿度传感器                1个
        3、继电器                        1个
        4、微型潜水泵                1个
        5、杜邦线                若干

土壤湿度传感器输出值在 5V时,空气中AO读取的值最大 1023 ,最小值 0
线路连接请看配图
注:继电器 COM 与 UNO板 GND电源端子用线连接,COM,NO,NC是继电器的触点,是用来控制别的东西的
/**
* Copyright(C), 2018-2038, KenRobot.com
* FileName: 浇花项目.ino
* Author: 啃萝卜
* Create: 2018/08/23
* Modify: 2018/08/23
*/

int relay_0 = 11;
int soilHumidity_0 = A1;

void setup() {
    pinMode(relay_0, OUTPUT);
    Serial.begin(9600);
    pinMode(soilHumidity_0, INPUT);
}

void loop() {
    if (analogRead(soilHumidity_0) >= 700) {
        digitalWrite(relay_0, LOW);
        Serial.println(analogRead(soilHumidity_0));
        delay(2000);
    } else {
        digitalWrite(relay_0, HIGH);
        Serial.println("主人,我不渴啦!");
        Serial.println(analogRead(soilHumidity_0));
        delay(2000);
    }
}

湿度值大于等于700,开启水泵

湿度值大于等于700,开启水泵

湿度值小于700,关闭水泵

湿度值小于700,关闭水泵
发表于 2018-8-24 14:48 | 显示全部楼层
还有就是你这逻辑有问题啊!
analogRead(soilHumidity_0) >= 700)
湿度大于700,电机旋转,这不是浇花啊,这是抽水啊!应该是小于才行!
发表于 2018-8-23 14:22 | 显示全部楼层
不推荐直接使用这种泥土传感器到实际使用环境,之前用了3个月发现腐蚀了
 楼主| 发表于 2018-8-23 14:29 | 显示全部楼层
createskyblue 发表于 2018-8-23 14:22
不推荐直接使用这种泥土传感器到实际使用环境,之前用了3个月发现腐蚀了

可以尝试 新款 电容式 防腐蚀的土壤传感器,我用的这款是旧版。
发表于 2018-8-24 11:19 | 显示全部楼层
void setup() {
    pinMode(relay_0, OUTPUT);
    Serial.begin(9600);
    pinMode(soilHumidity_0, INPUT);
我问一下,pinMode(soilHumidity_0, INPUT);这行代码,不太明白。你这个湿度检测脚应该是接到了模拟输入A1上的。模拟还需要定义INPUT吗?只有数字脚才能这样定义吧,模拟脚的数字直接调用函数读就可以了!有空请回复一下!
 楼主| 发表于 2018-8-25 08:12 | 显示全部楼层
本帖最后由 mogui 于 2018-8-25 08:45 编辑
宇之枫海云 发表于 2018-8-24 11:19
void setup() {
    pinMode(relay_0, OUTPUT);
    Serial.begin(9600);

开发工具我用的是啃萝卜,有可能是我在测试时用的数字针脚导致的,改天我具体研究下
 楼主| 发表于 2018-8-25 08:40 | 显示全部楼层
本帖最后由 mogui 于 2018-8-25 08:46 编辑
宇之枫海云 发表于 2018-8-24 14:48
还有就是你这逻辑有问题啊!
analogRead(soilHumidity_0) >= 700)
湿度大于700,电机旋转,这不是浇花啊, ...

我的设想是水泵放在水盆中,当土壤湿度小于30%左右(干旱值大于等于700)时,水泵抽水通过软管放入花盆中进行浇花。
 楼主| 发表于 2018-8-25 08:56 | 显示全部楼层
土壤湿度值,湿度百分比,干旱百分比
1023,0%,100%
700,31%,69%
512,50%,50%
0,100%,0%
这是我的理解,不知可有更好的方法
发表于 2018-8-27 10:22 | 显示全部楼层
嗯!我照抄了你的代码,发现大于的话,没有动作!改成小于后就完全正常了!再次感谢!
 楼主| 发表于 2018-8-27 13:12 | 显示全部楼层
宇之枫海云 发表于 2018-8-27 10:22
嗯!我照抄了你的代码,发现大于的话,没有动作!改成小于后就完全正常了!再次感谢! ...

你用的是 DO 还是 AO ?我试了一下,DO的是需要修改,AO的不用。我用的是 AO口。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 11:48 , Processed in 0.108871 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表