Подключение датчика влажности

nikitaavia
Offline
Зарегистрирован: 23.06.2013

заказал себе датчики влажности почвы. не пойму как его подключить есть четыре ножки: vcc gnd do ao

первые два это питание, куда подключить остальные два что обозначают?

step962
Offline
Зарегистрирован: 23.05.2011

А что мешает ссыль на датчик дать? Или бум наводящими вопросами до истины докапываться?

__Alexander
Offline
Зарегистрирован: 24.10.2012

наверное digital out и analog out

zanuda
Offline
Зарегистрирован: 25.06.2013

Здравствуйте, тоже заказал себе датчик почвы (http://www.aliexpress.com/snapshot/229920091.html) С подключение все понятно, вот только с программной частью все сложно. Если можно, то небольшой примеры работы датчика.
P.S. решил написать тут, чтобы не создавать похожую тему)
Спасибо!

Geronimo
Offline
Зарегистрирован: 06.05.2013
void setup()
{
pinMode(13,OUTPUT);
}
void loop()
{
  digitalWrite(13,digitalRead(14));
}

Зажигает диод на плате если почва влажная

Клапауций
Offline
Зарегистрирован: 10.02.2013

zanuda пишет:
Здравствуйте, тоже заказал себе датчик почвы (http://www.aliexpress.com/snapshot/229920091.html)

В чём тайный схемотехнический смысл такого датчика, если достаточно спионерить у жены вязальные спицы и воткнуть их в цветочный горшок?

код

if (analogRead(14) <= 200) {digitalWrite(7, LOW);}

, где >200 - уровень сигнала датчика(спиц), когда почва считается влажной, подбирается опытным путём.

zanuda
Offline
Зарегистрирован: 25.06.2013

Клапауций пишет:

zanuda пишет:
Здравствуйте, тоже заказал себе датчик почвы (http://www.aliexpress.com/snapshot/229920091.html)

В чём тайный схемотехнический смысл такого датчика, если достаточно спионерить у жены вязальные спицы и воткнуть их в цветочный горшок?


Проще заказать, чем спионерить)))
Спасибо за помощь, разобрался!

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

С точки зрения теории (и сохранности электродов), правильнее было бы подавать на одну спицу переменный сигнал с pwm, а на второй мерять его уровень. Но пока до реализации руки не доходят.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Клапауций пишет:

В чём тайный схемотехнический смысл такого датчика, если достаточно спионерить у жены вязальные спицы и воткнуть их в цветочный горшок?

Там в комплекте идет компаратор на lm339, чего от жены вряд ли удастся добиться. :)

Клапауций
Offline
Зарегистрирован: 10.02.2013

Andrey_Y_Ostanovsky пишет:
Там в комплекте идет компаратор на lm339, чего от жены вряд ли удастся добиться. :)

А, это if (analogRead(14) <= 200) {digitalWrite(7, LOW);} что, если не компаратор?

Вы присмотритесь к реализации этого датчика - красивую фигурную двустороннюю плату, типо супер-датчик суют в землю... и, что от неё останется через неделю?

Про спицы, конечно, шутка, но и аллюминий проживёт не меньше года, если два куска нержавеющей проволоки, то вечно. 

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Клапауций пишет:

Про спицы, конечно, шутка, но и алюминий проживёт не меньше года, если два куска нержавеющей проволоки, то вечно. 

К сожалению, электролиз даже нержавейку быстро разрушит... Именно поэтому говорят о переменке и частоте примерно килогерц.

Клапауций
Offline
Зарегистрирован: 10.02.2013

Andrey_Y_Ostanovsky пишет:
К сожалению, электролиз даже нержавейку быстро разрушит... Именно поэтому говорят о переменке и частоте примерно килогерц.

Разговор не о методике замера влажности, а о том, что печатные платы в землю зарывать - странно.

Через ключ притянули питающее напряжение обвязки датчика на несколько милисекунд, замерили, выключили на ближайшие полчаса - в таком режиме вам сотню лет на электролиз понадобится.

zanuda
Offline
Зарегистрирован: 25.06.2013

Возник еще небольшой вопрос))
Почему не работает условие: analogRead(2)>450 && analogRead(2)<700

int diodRed=6;
int diodYe=4;
int diodSn=2;

void setup()
{
  Serial.begin(9600);
pinMode(diodRed,OUTPUT);
pinMode(diodYe,OUTPUT);
pinMode(diodSn,OUTPUT);

}
void loop()
{
  Serial.println(analogRead(0));
 delay(2000);
   
  if (analogRead(2) <= 450) // Очень влажная почва
 {
  digitalWrite(diodRed, HIGH);
  Serial.print("Ochen Vlagno ");
  digitalWrite(diodYe, LOW);
  digitalWrite(diodSn, LOW);
}

else if( analogRead(2)>450 && analogRead(2)<700)
{// Влажная почва
  Serial.print("Vlagnaya pochva ");
  digitalWrite(diodYe,HIGH);
  digitalWrite(diodRed, LOW);
  digitalWrite(diodSn, LOW);
}

else 
{
  digitalWrite(diodSn,HIGH);// Сухая почва
  Serial.print("Suhays pochva ");
  digitalWrite(diodRed, LOW);
  digitalWrite(diodYe, LOW);
}
 
}

Это моя первая программа, поэтому выслушаю все замечания и предложения)

vdk
Offline
Зарегистрирован: 14.04.2013

Странно, что вы цифры получаете с A0, а сравниваете данные с A2... нет ли в этом какого-то противоречия?

zanuda
Offline
Зарегистрирован: 25.06.2013

Действительно, глупо)

Алексей Черноземье
Offline
Зарегистрирован: 31.08.2013

 Очень интересен проект. Отпишитесь пожалуйста, удалось ли реализовать?

zanuda
Offline
Зарегистрирован: 25.06.2013

Все получилось) но я пошел дальше и решил сделать небольшой климат-контроль: подключил датчик температуры и влажности,   4-х канальное реле для подключения обогревател и еще пару датчиков. в общем задействовал все порты arduino uno.

Алексей Черноземье
Offline
Зарегистрирован: 31.08.2013

Очень нужен этот проект! Напишите подробности здесь или на почту michka.84@mail.ru. Готов приобрести.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

датчик из 2 гвоздей и 1 резистора :)

http://arduino.ru/forum/apparatnye-voprosy/pomogite-vybrat-sensor-vody

Алексей Черноземье
Offline
Зарегистрирован: 31.08.2013

С датчиком понятно, а программный код покажете?

maksim
Offline
Зарегистрирован: 12.02.2012

Алексей Черноземье пишет:

а программный код покажете?

Не поленитесь ветку почитать по ссылке из поста #18, тогда и вопросов таких возникать не будет.

zanuda
Offline
Зарегистрирован: 25.06.2013

Алексей Черноземье пишет:

С датчиком понятно, а программный код покажете?


#include <LiquidCrystal.h>
#include <OneWire.h>  //подключаем библиотеку
OneWire  ds(1);
 LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
 int pr=0;
 int pochva=0;

 void setup() {
   lcd.begin(16, 2);
  }


 void loop() {

    //Определение влажности почвы
    if (analogRead(2) <= 820) // Если очень влажная почва
     {lcd.setCursor(8, 1); lcd.setCursor(0,1); //Первый символ второй строки
   lcd.print("Pochva:"); //Текст второй строки
     lcd.print("Ochen Vlagno"); 
     delay(1000);}//Обновление значения каждые 10 секунд
   else if( analogRead(2)>820 && analogRead(2)<900)//Умеренно влажная
    {lcd.setCursor(8, 1); 
    lcd.print("VLAJNAYA");lcd.setCursor(0,1); //Первый символ второй строки
   lcd.print("Pochva:"); //Текст второй строки
    delay(1000);}//Обновление значения каждые 10 секунд
  else 
    {lcd.setCursor(8, 1);//Если сухая почва 
    lcd.print("SUHAYA");lcd.setCursor(0,1); //Первый символ второй строки
   lcd.print("Pochva:"); //Текст второй строки
    delay(1000);}//Обновление значения каждые 10 секунд
    
    
    //Определение температуры
    
    
    byte i;
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8];
  float celsius, fahrenheit;
   
  if ( !ds.search(addr)) {
    
    ds.reset_search();
    delay(250);
    return;
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1);      
   delay(1000);     
  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);        
  
  for ( i = 0; i < 9; i++) {          
    data[i] = ds.read();
   
  }
  
 
//  Преобразование данных в фактическую температуру
 
  int16_t raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; 
    if (data[7] == 0x10) {
        raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } else {
    byte cfg = (data[4] & 0x60);
    if (cfg == 0x00) raw = raw & ~7;  
    else if (cfg == 0x20) raw = raw & ~3;
    else if (cfg == 0x40) raw = raw & ~1; 
 
  }
  celsius = (float)raw / 16.0;
 
 lcd.setCursor(0, 0);
   lcd.print("Temp:");
    lcd.setCursor(8, 0); 
   lcd.print(celsius);
// Конец кода опредления температуры

 }

Черновая версия моего проекта

Клапауций
Offline
Зарегистрирован: 10.02.2013

Желающим проекта могу выслать ящик гвоздей(5кг), молоток(1шт.) и моток двужильного кабеля(100м).

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

zanuda пишет:

Черновая версия моего проекта

там сходите посмотрите, как сделать так что бы датчик не находился постоянно под напряжением... очень пользительно.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Клапауций пишет:

Желающим проекта могу выслать ящик гвоздей(5кг), молоток(1шт.) и моток двужильного кабеля(100м).

БЕСПЛАТНО??? шлите! 

Клапауций
Offline
Зарегистрирован: 10.02.2013

Puhlyaviy пишет:
БЕСПЛАТНО??? шлите!

НЕТ! слать?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Клапауций пишет:

Puhlyaviy пишет:
БЕСПЛАТНО??? шлите!

НЕТ! слать?

а какой размер гвоздей? если заместо гвоздей использовать костыли, которыми рельсы к шпалам прибивают?

Алексей Черноземье
Offline
Зарегистрирован: 31.08.2013

zanuda Вы используете датчик влажности с алиэкспресс?

  Ваша программа аналоговый силнал датчика обрабатывает?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Алексей Черноземье пишет:

zanuda Вы используете датчик влажности с алиэкспресс?

  Ваша программа аналоговый силнал датчика обрабатывает?

а вам по коду не видно что таки ДА аналоговый сигнал обрабатывает :)

а датчик что с али, что из 2 гвоздей суть таже.

Алексей Черноземье
Offline
Зарегистрирован: 31.08.2013

Puhlyaviy помогите набросать проект автоматическим управлением поливом (управление насосом 12 вольт) рассады с использованием датчика влажности? Используя пороговое значение влажности почвы.

Клапауций
Offline
Зарегистрирован: 10.02.2013

Puhlyaviy пишет:
если заместо гвоздей использовать костыли, которыми рельсы к шпалам прибивают?

Я молоток спецом в комплекте продаю - народ обязательно захочет мерять влажность забора/сарая.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Алексей Черноземье пишет:

Puhlyaviy помогите набросать проект автоматическим управлением поливом (управление насосом 12 вольт) рассады с использованием датчика влажности? Используя пороговое значение влажности почвы.

амммм, ну помочь не вопрос, найчинайте делать и ПОМОГАТЬ тут народ вроде никому не отказывается...

только понимайте разницу между ПОМОЧЬ и сделать все за вас..

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Клапауций пишет:

Puhlyaviy пишет:
если заместо гвоздей использовать костыли, которыми рельсы к шпалам прибивают?

Я молоток спецом в комплекте продаю - народ обязательно захочет мерять влажность забора/сарая.

год назад освоил древнию технологию строительства без гвоздей и молотка ( ибо есть дерево которое не любит железа.. чернеет от него... даже балкон по ентой технологии соорудил ( могу фото показать)... так что видимо мне не нада ни гвоздей ни молотка... как нить постаринке обойдусь, а то у вас пересылка наверно стоит дороже чем сами гвозди.

Алексей Черноземье
Offline
Зарегистрирован: 31.08.2013

Сделать за меня. Если возьметесь michka.84@mail.ru

Клапауций
Offline
Зарегистрирован: 10.02.2013

Puhlyaviy пишет:

год назад освоил древнию технологию строительства без гвоздей и молотка ( ибо есть дерево которое не любит железа.. чернеет от него... даже балкон по ентой технологии соорудил ( могу фото показать)... так что видимо мне не нада ни гвоздей ни молотка... как нить постаринке обойдусь, а то у вас пересылка наверно стоит дороже чем сами гвозди.

И, как ты меряешь влажность балкона без гвоздей?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Алексей Черноземье пишет:

Сделать за меня. Если возьметесь michka.84@mail.ru

делать за вас не буду... уже есть проект который занимает почти все свободное... и его еще копать и копать... 

ваш проект собирается из примеров довольно просто.. потратьте день, разберитесь, вам понравится!

от сюда еще никто без помощи не уходил :)

с железной частью там все просто, 2 гвоздя, резистор и блок реле.. ну и ардуина какая у вас там под рукой

вон Лешака попросите он вам поможет с кодом разобратся по шагово, но соотсвественно он не будет за вас пистаь код. а будет просто помогать искать ошибки...

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Клапауций пишет:

И, как ты меряешь влажность балкона без гвоздей?

я его воском покрыл и ему без измерения уже ништяк :)

Алексей Черноземье
Offline
Зарегистрирован: 31.08.2013

Puhlyaviy я Вас понял.

Вопрос такаго характера: Из ардунио недельный таймер с работой от 1сек - 24 часа тоже возможно изготовить?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Алексей Черноземье пишет:

Puhlyaviy я Вас понял.

Вопрос такаго характера: Из ардунио недельный таймер с работой от 1сек - 24 часа тоже возможно изготовить?

да хоть годовой.. примеров таких скечей полный гугл

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Клапауций пишет:

Я молоток спецом в комплекте продаю - народ обязательно захочет мерять влажность забора/сарая.

Для этого достаточно вместо прямых и скучных гвоздей - вложить два штопора. :)

General
Offline
Зарегистрирован: 09.12.2012

Дабы не заводить новой темы хотел бы спросить. 

А какие возможны варианты для передачи данных о влажности почвы до ардуины безпроводным способом ? 

В наличии имеется датчик влажности (хотя тут он как мне кажется будет лишним - подойдут как раз "спицы"), радиомодуль

Т.к. аналоговый сигнал передавать думаю будет морока, то достаточно в принципе определять что почва сухая (подстраивать опытным путем) и отправлять сигнал на arduino. Но как заставить этот сигнал уйти в нужный момент, отправлять не постоянно, а с определенными интервалами, не использовать на каждом свою ардуину? 

Dima85
Offline
Зарегистрирован: 07.01.2013

General пишет:

Дабы не заводить новой темы хотел бы спросить. 

А какие возможны варианты для передачи данных о влажности почвы до ардуины безпроводным способом ? 

В наличии имеется датчик влажности (хотя тут он как мне кажется будет лишним - подойдут как раз "спицы"), радиомодуль

Т.к. аналоговый сигнал передавать думаю будет морока, то достаточно в принципе определять что почва сухая (подстраивать опытным путем) и отправлять сигнал на arduino. Но как заставить этот сигнал уйти в нужный момент, отправлять не постоянно, а с определенными интервалами, не использовать на каждом свою ардуину? 

 

Одними спицами не обойдетесь. Если хочете отказаться от показанного вами датчика влажности придется прикупить парочку резисторов.

По поводу как все это реализовать вам лучше в ветку программирования обратиться.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

General пишет:

А какие возможны варианты для передачи данных о влажности почвы до ардуины безпроводным способом ? 

Голосовое управление. :)

ps: При цене ардуины в несколько баксов - дешевле на каждый подоконник по контроллеру поставить, чем морщить голову и организовывать в квартире филиал микроволновой печи...

Darker
Offline
Зарегистрирован: 14.03.2014

Правильно

Nodit
Offline
Зарегистрирован: 15.01.2014

Питание можно с не с VCC брать, а с любого пина, поднятого в HIGH. Можно и с PWM. Но на мой взгляд это жирно. :)

Пин поднял, напряжение на датчик пошло, снял показания. Пин опустил.

Roman
Offline
Зарегистрирован: 15.02.2013

Andrey_Y_Ostanovsky пишет:

С точки зрения теории (и сохранности электродов), правильнее было бы подавать на одну спицу переменный сигнал с pwm, а на второй мерять его уровень. Но пока до реализации руки не доходят.

Здравствуйте!

Хотел спросить на счет такого метода измерения. Вы бы не могли более подробно рассказать о нем.

Был бы очень признательным за информацию.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Roman пишет:

Хотел спросить на счет такого метода измерения. Вы бы не могли более подробно рассказать о нем. Был бы очень признательным за информацию.

Все просто: включаем на цифровом пине pwm (там идет порядка 1000Гц), дальше через резистор и электролитический конденсатор на 10uF подаем на одну ногу в землю. С другой ноги - снимаем сигнал, через диод, резистор и интегрирующую RC цепочку подаем на АЦП через A0. Номиналы - подбирались от фонаря так, чтобы реагировало на изменение влажности.

Roman
Offline
Зарегистрирован: 15.02.2013

Andrey_Y_Ostanovsky пишет:

Roman пишет:

Хотел спросить на счет такого метода измерения. Вы бы не могли более подробно рассказать о нем. Был бы очень признательным за информацию.

Все просто: включаем на цифровом пине pwm (там идет порядка 1000Гц), дальше через резистор и электролитический конденсатор на 10uF подаем на одну ногу в землю. С другой ноги - снимаем сигнал, через диод, резистор и интегрирующую RC цепочку подаем на АЦП через A0. Номиналы - подбирались от фонаря так, чтобы реагировало на изменение влажности.


Если я правильно понял, то на выходе ШИМ ставим RC цепочку, далее через диод сигнал идёт на ещё одну RC цепочку, и потом нааналоговый вход. И тут сразу несколько вопросов 1) зачем две RC цепочки, 2) зачем диод?
Также, хотелось бы узнать о алгоритме работы, на выходе, я так понимаю должно быть переменное напряжение, но какое оно должно быть? Форма, амплитуда, частота. А также, что мы регистрируемых на входе? Амплитуду, частоту, или и то и другое?
Также хотел уточнить, мне нужно мерять влажность дерева а не почвы. Но принцип измерения у них схожи.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Roman][quote=Andrey_Y_Ostanovsky пишет:

Если я правильно понял, то на выходе ШИМ ставим RC цепочку, далее через диод сигнал идёт на ещё одну RC цепочку, и потом нааналоговый вход. И тут сразу несколько вопросов 1) зачем две RC цепочки, 2) зачем диод? Также, хотелось бы узнать о алгоритме работы, на выходе, я так понимаю должно быть переменное напряжение, но какое оно должно быть? Форма, амплитуда, частота. А также, что мы регистрируемых на входе? Амплитуду, частоту, или и то и другое? Также хотел уточнить, мне нужно мерять влажность дерева а не почвы. Но принцип измерения у них схожи.

На выходе R служит для ограничения тока на ножке (порядка сотни ом, чтобы контроллер не спалить), а C - для того, чтобы в почву шла чистая переменка.

На входе - сигнал выпрямляем, т.к. мы хотим мерять напряжение, а чтобы оно не прыгало во время измерения, между сигналом и землей ставится небольшой конденсатор 1.5uF и (параллельно) разрядный резистор к нему - что-то в районе 100 кОм. Регистрируем показания АЦП и в них же оперируем понятиями "сухая" и "влажная", т.к. показания будут различаться для каждого электрода и солесодержания почвы. Честно говоря, я не уверен, что на более менее сухой древесине оно хоть что-то покажет, хотя можно будет попробовать в выходные, если не забуду. :)

Dragal
Offline
Зарегистрирован: 04.09.2015

Здравствуйте! 

Скажите пожалуйста! Мне нужно измерять влажность почвы в онлайн режиме! Как мне написать программу чтобы доупстим через каждые 5 минут датчик замерял влажность и вывожил на экран значения сигнала (пусть то будет 800 либо 500, не важно, сухие цифры) 

 

AlexRyzh
Offline
Зарегистрирован: 11.11.2015

Тоже приобрел такой датчик на 4 ножки. Разобрался как это чудо работает. 

Подается питание и земля на 2-е ножки, далее на входа цифровой пин и на аналоговый.

С Аналогового считываем показания, которые звисят от влажности. При отсутствии влаги цифра 

1023, а при опускании в воду (раствор солей) стремится к нулю. На самом деле влажность это условно, т.к. показания с аналогового входа будут зависить от электропроводности раствора (или влаги, которую будем мерять).

На цифровом входе появляется 1 или 0 в зависимости есть хоть какая-то влажность или сухо вообще. Т.е. используется как датчик дождя Мокро-1 Сухо-0. 

Ну вот, понимая эту логику, можно составить программный код кому как нравится. Вот например код увлажнение при недостатке влаги и сигнал Отсутствия-наличия влаги вообще.

int _gtv1; //Переменная аналогового сигнала
bool _gtv2; //Переменная состояния "Сухо-Влажно"
byte _gtv3; //Состояние влажности
byte _gtv4;
int _gtv5 = 1000; //Нижний предел влажности (Мало влаги)
int _gtv6 = 200; //Верхний предел влажности (хорошо увлажненная)
bool _trgr1 = 0;
int _cd1;
int _cd2;
bool _trgs1 = 0;
bool _mux1;
bool _mux2;
void setup()
{
pinMode(17, INPUT);
digitalWrite(17, HIGH);
pinMode(14, OUTPUT);
pinMode(15, OUTPUT);

}
void loop()
{



_gtv2 =  (digitalRead (17));
_gtv1 =  (analogRead (2));
if(1) _trgr1 = 0;
if(_gtv2) _trgr1 = 1;
_cd1 = 0;
if(( ((_gtv1) < (_gtv6)) && ((_gtv1) > (_gtv5)) )) {_cd1 =  1;} 
if((_gtv1) > (_gtv6)) {_cd1 =  2;} 
_cd2 = 0;
if(_trgr1) {_cd2 =  1;} 
if(_trgs1) {_cd2 =  2;} 
if(1) _trgs1 = 1;
if(_gtv2) _trgs1 = 0;
if (( (( ((_gtv1) < (_gtv6)) && ((_gtv1) > (_gtv5)) )) || ((_gtv1) > (_gtv6)) )) {
_gtv3 = _cd1;
}
if (( (_trgr1) || (_trgs1) )) {
_gtv4 = _cd2;
}
if((_gtv3) == 0) {_mux1 = 0;}
if((_gtv3) == 1) {_mux1 = 0;}
if((_gtv3) == 2) {_mux1 = 1;}
if((_gtv4) == 0) {_mux2 = 0;}
if((_gtv4) == 1) {_mux2 = 1;}
if((_gtv4) == 2) {_mux2 = 0;}
digitalWrite(14, _mux1);
digitalWrite(15, _mux2);




}