Задумал проект по организации полива огорода в автоматическом режиме. Кто поможет? Оплатить работу могу на YANDEX деньги, на карты альфа-банка и сбербанка.
Я новичок в этом деле. В расценках не разбираюсь. Могу предположить исходя из стоимости 1000 руб/час. Мастер, думаю, за час управится должен. Если не прав - исправьте.
Такой датчик - долго не выживет, мерить надо на переменке. В остальном - у меня такая система работала прошлым летом. Сейчас сделал просто периодическое затопление с сифонным сливом: датчик не нужен. Вот сделать отсечку по минимальному уровню в баке - пока не собрался...
К баку с насосом понадобится реле или мосфет на 5 вольт, т.к. с ардуины сигнал слабенький... Научитесь их включать (и выключать без фейерверка), с остальным поможем. :) Насосы - либо мембранные (шумят), либо аквариумные помпы на асинхронниках (brushless).
У вас несоответствие между названием ТЗ и описательной частью. Что надо поливать - огород или цветочный горшок? Это очень разные исполнительные механизмы. А код я думаю и сами набросаете с помощью сообщества.
Часы не нужны. Обход датчиков влажности планирую осуществлять один раз в сутки (длительностью 5-10 сек). По поводу несоответствия между названием ТЗ и описательной частью - абсолютно без разницы. Для полива будет использоваться насос на 12в. Который можно купить в любом автомагазине.
Часы не нужны. Обход датчиков влажности планирую осуществлять один раз в сутки (длительностью 5-10 сек).
Ну, попробуйте вот такой скетч у себя запустить... Влажность, снимаемая с датчика, настраивается параметрами window01.dry = 630; window01.moist = 643; обход датчиков - несколько чаще.
На всякий случай мои контакты: 903 724 88 30
Почта 7248830 @ gmail.com
Какой бюджет?
Я новичок в этом деле. В расценках не разбираюсь. Могу предположить исходя из стоимости 1000 руб/час. Мастер, думаю, за час управится должен. Если не прав - исправьте.
Такой датчик - долго не выживет, мерить надо на переменке. В остальном - у меня такая система работала прошлым летом. Сейчас сделал просто периодическое затопление с сифонным сливом: датчик не нужен. Вот сделать отсечку по минимальному уровню в баке - пока не собрался...
К баку с насосом понадобится реле или мосфет на 5 вольт, т.к. с ардуины сигнал слабенький... Научитесь их включать (и выключать без фейерверка), с остальным поможем. :) Насосы - либо мембранные (шумят), либо аквариумные помпы на асинхронниках (brushless).
У вас несоответствие между названием ТЗ и описательной частью. Что надо поливать - огород или цветочный горшок? Это очень разные исполнительные механизмы. А код я думаю и сами набросаете с помощью сообщества.
а время как определять? нужны часы. будут часы - нужна их настройка, то есть экран с кнопками
Часы не нужны. Обход датчиков влажности планирую осуществлять один раз в сутки (длительностью 5-10 сек). По поводу несоответствия между названием ТЗ и описательной частью - абсолютно без разницы. Для полива будет использоваться насос на 12в. Который можно купить в любом автомагазине.
Часы не нужны. Обход датчиков влажности планирую осуществлять один раз в сутки (длительностью 5-10 сек).
Ну, попробуйте вот такой скетч у себя запустить... Влажность, снимаемая с датчика, настраивается параметрами window01.dry = 630; window01.moist = 643; обход датчиков - несколько чаще.
001
#include <EEPROM.h>
002
#include <avr/power.h>
003
004
#define analogPin 3 // potentiometer connected to analog pin 3
005
#define PumpPin 7
006
#define WaterPin 8
007
#define TestPin 9 // LED connected to digital pin 9
008
#define LED_PIN 13
009
010
byte
WaterState = 0;
011
012
typedef
struct
{
013
unsigned
int
dry;
014
unsigned
int
moist;
015
int
val;
// variable to store the read value
016
unsigned
int
pump;
017
boolean alarm;
018
byte
count;
019
byte
maxcount;
020
}
021
Soil_t;
022
023
// some timers
024
unsigned
long
SENSOR_READTIME = 90000;
025
unsigned
long
old_millis = 0;
026
unsigned
long
WaterMillis = 0;
027
028
Soil_t window01;
029
030
void
setup
() {
031
032
// 630 - 640 = moist soil; 550 = slightly dry soil
033
window01.dry = 630;
034
window01.moist = 643;
035
window01.val = 0;
036
window01.pump = 0;
037
window01.alarm =
false
;
038
window01.count = 0;
039
window01.maxcount = 4;
040
Serial
.begin(9600);
041
pinMode(TestPin, OUTPUT);
// sets the pin as output
042
pinMode(PumpPin, OUTPUT);
// sets the pin as output
043
pinMode(analogPin, INPUT);
// sets the pin as inpout
044
digitalWrite(analogPin, LOW);
//
045
window01.val = analogRead(analogPin);
// read the input pin
046
delay(100);
047
Serial
.println(
"Sketch was loaded at "
__DATE__);
048
049
}
050
051
void
loop
()
052
{
053
/* Toggle the LED */
054
// digitalWrite(LED_PIN, !digitalRead(LED_PIN));
055
// delay(200);
056
// digitalWrite(LED_PIN, !digitalRead(LED_PIN));
057
// delay(200);
058
059
/* Collect sensor data */
060
if
( millis() - old_millis > SENSOR_READTIME ){
061
old_millis = millis();
062
063
// debug LED signal
064
// digitalWrite(LED_PIN, HIGH);
065
Serial
.println( millis() );
066
067
// take on test-signal
068
analogWrite(TestPin, 128);
// analogRead values go from 0 to 1023, analogWrite values from 0 to 255
069
delay(200);
070
window01.val = analogRead(analogPin);
// read the input pin
071
072
// take off test-signal
073
analogWrite(TestPin, 0);
// analogRead values go from 0 to 1023, analogWrite values from 0 to 255
074
075
// Dry? Alarm! First action.
076
if
( window01.val < window01.dry && window01.val > 360 ) {
077
Serial
.print(
"Soil is Dry!"
);
078
window01.pump = 4500;
079
window01.alarm =
true
;
080
}
081
082
// Not moist?
083
if
( window01.val < window01.moist && window01.alarm ==
true
) {
084
// Serial.println("Soil is not moist.");
085
window01.pump = 3500;
086
}
087
088
if
( window01.val > window01.moist && window01.alarm ==
true
) {
089
window01.alarm =
false
;
090
}
091
092
// Debug print
093
Serial
.print( window01.pump );
Serial
.print(
" :: "
);
Serial
.print( window01.alarm );
094
Serial
.print(
" :val: "
);
Serial
.println( window01.val );
095
096
// Pump
097
if
(window01.pump > 0 ) {
098
digitalWrite(PumpPin, HIGH);
//
099
delay(window01.pump);
100
digitalWrite(PumpPin, LOW);
//
101
window01.pump = 0;
102
window01.count++;
103
if
(window01.count >= window01.maxcount) {
104
window01.alarm =
false
;
105
}
106
}
107
108
digitalWrite(LED_PIN, LOW);
109
110
}
// end of millis
111
112
}
// end of loop
Спасибо за код. Надо попробовать. Только я еще не разобрался куда датчик влажности втыкать.