Як підключити датчик вологості ґрунту до Arduino?
Опубликованно 11.08.2018 06:08
Коли ви їдете кудись далеко на певний термін часу? Ваші кімнатні квіти нікому поливати, тому доводиться просити допомоги у ваших сусідів, які, в свою чергу, можуть халатно ставитися до цього. В результаті до вашого приїзду рослини будуть відчувати себе погано. Щоб цього не сталося, можна зробити систему автоматичного поливу. Для цієї мети нам знадобиться Arduino і датчик вологості грунту. У статті розглянемо приклад підключення і роботи з датчиком FC-28. Він зарекомендував себе з позитивного боку, з допомогою нього були створені тисячі проектів. Про датчику FC-28
Датчиків для визначення вологості землі безліч, але найпопулярнішим є модель FC-28. У нього низька ціна, завдяки чому широко використовується всіма радіоаматорами в своїх проектах. Застосовується датчик вологості ґрунту з Arduino. У нього є два зонди, які проводять електричний струм через землю. Виходить, що якщо ґрунт вологий, то опір між зондами менше. При сухій землі, відповідно, опір більше. Arduino приймає ці значення, порівнює і при необхідності включає, наприклад насос. Датчик здатний працювати як з цифровим режимом, так і з аналоговим, обидва варіанти підключення ми розглянемо. Застосовується FC-28 в основному в дрібних проектах, наприклад, при автоматичному поливі одного конкретного рослини, так як використовувати у великих масштабах його незручно в силу розмірів і недоліків, які ми також розглянемо.
Де купити
Справа в тому, що в російських магазинах датчики для роботи з Arduino коштують відносно дорого. Середня ціна на цей датчик в Росії варіюється від 200 до 300 рублів, в той же час як в Aliexpress цей же датчик коштує всього лише якихось 30-50. Націнка величезна. Звичайно, можна ще зробити датчик для вимірювання вологості ґрунту своїми руками, але про це нижче. Про підключення
Підключається датчик вологості до Arduino дуже легко. У комплекті з ним йдуть компаратор і потенціометр для регулювання чутливості датчика, а також для встановлення граничного значення при підключенні за допомогою цифрового виходу. Сигнал при виході, як вже згадувалося вище, може бути цифровим і аналоговим.
Підключення за допомогою цифрового виходу
Підключається практично так само, як і аналоговий: VCC - 5V на Arduino. D0 - D8 на платі на Arduino. GND - земля.
Як вже згадувалося вище, на модулі датчика розташовані компаратор і потенціометр. Працює все наступним чином: за допомогою потенціометра ми встановлюємо граничне значення нашого датчика. FC-28 порівнює значення з граничним, і після цього відправляє значення в Arduino. Припустимо, значення датчика вище порогового, в такому випадку датчик вологості ґрунту на Arduino передає 5V, якщо менше - 0V. Все дуже просто, але більш точні значення - у аналогового режиму, тому рекомендується використовувати його.
Електрична схема підключення виглядає так, як зображено на фото вище. чином
Програмний код для Arduino при використанні цифрового режиму наведено нижче.
int led_pin =13; int sensor_pin =8; void setup() { pinMode(led_pin, OUTPUT); pinMode(sensor_pin, INPUT); } void loop() { if(digitalRead(sensor_pin) == HIGH){ digitalWrite(led_pin, HIGH); } else { digitalWrite(led_pin, LOW); delay(1000); } }
Що ж робить наш код? Першим ділом були позначені дві змінні. Перша змінна - led_pin - служить для позначення світлодіода, а друга - для позначення датчика вологості землі. Далі ми оголошуємо контакт світлодіода як вихід, і контакт датчика як вхід. Це потрібно для того, щоб ми могли отримати значення, і при необхідності включити світлодіод, щоб візуально побачити, що значення датчика вище порогового. У циклі ми зчитуємо значення з датчика. Якщо значення вище граничного - включаємо світлодіод, якщо нижче - вимикаємо. Замість світлодіода може бути і насос, тут все залежить від вас. Аналоговий режим
Для підключення за допомогою аналогового виходу потрібно працювати з A0. Ємнісний датчик вологості грунту в Arduino приймає значення від 0 до 1023. Підключаємо датчик наступним чином: VCC підключаємо на 5V до Arduino. GND на датчику підключаємо до GND на платі Arduino. A0 підключаємо до A0 на Arduino.
Далі в Arduino прописуємо код, наведений нижче.
int sensor_pin = A0; int output_value ; void setup() { Serial.begin(9600); Serial.println("Читаємо сенсор"); delay(2000); } void loop() { output_value= analogRead(sensor_pin); output_value = map(output_value,550,0,0,100); Serial.print("Вологість "); Serial.print(output_value); Serial.println("%"); delay(1000); }
Отже, що ж робить цей програмний код? Першим ділом були задані змінні. Перша змінна потрібна, щоб визначити контакт датчика, а інша буде зберігати результати, які ми будемо отримувати за допомогою датчика. Далі ми зчитуємо дані. У циклі ми записуємо в створену нами змінну output_value значення з датчика. Потім розраховується відсоток вологості грунту, після чого виводимо їх на монітор порту. Електрична схема підключення зображена нижче.
Своїми руками
Вище було розглянуто, як підключити датчик вологості ґрунту до Arduino. Проблема цих датчиків в тому, що вони недовговічні. Справа в тому, що вони дуже сильно схильні до корозії. Деякі фірми роблять датчики зі спеціальним покриттям, щоб збільшити термін служби, але це все одно не те. Також розглядається варіант використання датчика не часто, а тільки коли потрібно. Наприклад, є програмний код, де кожну секунду датчик зчитує значення щодо вологості ґрунту. Можна продовжити термін служби, якщо включати його, наприклад, один раз в день. Але якщо і це вам не підходить, то можна зробити своїми руками датчик вологості грунту. Arduino різниці не відчує. В принципі, система така ж. Просто замість двох сенсорів можна поставити свої і використовувати при цьому матеріал, який менше піддається корозії. Ідеально, звичайно, використовувати золото, але, враховуючи його ціну, це вийде дуже дорого. Взагалі, дешевше виходить купувати, враховуючи ціну FC-28.
Плюси і мінуси
У статті були розглянуті варіанти підключення датчика вологості ґрунту до Arduino, також були представлені приклади програмного коду. FC-28 є дійсно хорошим датчиком для визначення вологості грунту, але які ж конкретні плюси і мінуси цього датчика?
Плюси: Ціна. Цей датчик має дуже низьку ціну, тому кожен радіоаматор зможе купити і спорудити свою систему автоматичного поливу для рослин. Звичайно, при роботі з великими масштабами цей датчик не підійде, але він для цього не призначений. Якщо потрібен датчик могутніше - SM2802B, то за нього і віддати доведеться немаленьку суму. Простота. Освоїти роботу з цим датчиком вологості грунту в Arduino може кожен. Всього кілька проводів, пара рядків коду - і все. Контроль вологості грунту зроблений.
Мінуси: Схильність до корозії. Це єдиний недолік цих датчиків. Але, враховуючи ціну, на це і очі можна закрити. В першу чергу ці датчики були зроблені скоріше для навчання, ніж для практичного використання у великих проектах. Автор: Инсаф Галієв 3 Серпня, 2018
Категория: Технологии