Соединяем Arduino с датчиком влажности почвы FC-28, чтобы определить, когда ваша почва под растениями нуждается в воде.
В этой статье мы собираемся использовать датчик влажности почвы FC-28 с Ардуино. Этот датчик измеряет объемное содержание воды в почве и дает нам уровень влаги. Датчик дает нам на выходе аналоговые и цифровые данное. Мы собираемся подключить его в обоих режимах.
Как работает датчик почвы FC-28?
Датчик влажности почвы состоит из двух датчиков, которые используются для измерения объемного содержания воды. Два зонда позволяют току пройти через почву, которая дает значение сопротивления, что позволяет в итоге измерить значение влаги.
Когда есть вода, почва будет проводить больше электричества, а это значит, что будет меньше сопротивление. Сухая почва плохо проводит электричество, поэтому когда воды меньше, почва проводит меньше электричества, а это значит, что сопротивление будет больше.
Датчик FC-28 можно соединить в аналоговом и цифровом режимах. Сначала мы подключим его в аналоговом режиме, а затем в цифровом.
Спецификация
Спецификации датчика влажности почвы FC-28:
- входное напряжение: 3.3–5V
- выходное напряжение: 0–4.2V
- входной ток: 35mA
- выходной сигнал: аналоговый и цифровой
Распиновка
Датчик влажности почвы FC-28 имеет четыре контакта:
- VCC: питание
- A0: аналоговый выход
- D0: цифровой выход
- GND: земля
Модуль также содержит потенциометр, который установит пороговое значение. Это пороговое значение будет сравниваться на компараторе LM393. Светодиод будет нам сигнализировать значение выше или ниже порогового.
Аналоговый режим
Для подключения датчика в аналоговом режиме нам потребуется использовать аналоговый выход датчика. Датчик влажности почвы FC-28 принимает аналоговые выходные значения от 0 до 1023.
Влажность измеряется в процентах, поэтому мы сопоставим эти значения от 0 до 100, а затем покажем их на последовательном мониторе (serial monitor). Вы можете установить различные значения влаги и повернуть водяную помпу «включено-выключено» согласно этим значениям.
Электрическая схема
Подключите датчик влажности почвы FC-28 к Ардуино следующим образом:
- VCC FC-28 → 5V Arduino
- GND FC-28 → GND Arduino
- A0 FC-28 → A0 Arduino
Код для аналогового выхода
Для аналогового выхода мы пишем такой код:
int sensor_pin = A0; int output_value ; void setup() { Serial.begin(9600); Serial.println("Reading From the Sensor ..."); delay(2000); } void loop() { output_value= analogRead(sensor_pin); output_value = map(output_value,550,0,0,100); Serial.print("Mositure : "); Serial.print(output_value); Serial.println("%"); delay(1000); }
Объяснение кода
Прежде всего, мы определили две переменные: одну для контакта датчика влажности почвы, а другую для хранения выхода датчика.
int sensor_pin = A0; int output_value ;
В функции setup, команда Serial.begin(9600) поможет в общении между Arduino и серийным монитором. После этого, мы напечатаем «Reading From the Sensor …” (англ. — считываем с датчика) на обычном дисплее.
void setup() { Serial.begin(9600); Serial.println("Reading From the Sensor ..."); delay(2000); }
В функции цикла, мы прочитаем значение от аналогового выхода датчика и сохраним значение в переменной output_value. Затем мы сопоставим выходные значения с 0-100, потому что влажность измеряется в процентах. Когда мы брали показания с сухого грунта, значение датчика было 550, а во влажном грунте значение датчика было 10. Мы сопоставили эти значения, чтобы получить значение влаги. После этого мы напечатали эти значения на последовательном мониторе.
void loop() { output_value= analogRead(sensor_pin); output_value = map(output_value,550,10,0,100); Serial.print("Mositure : "); Serial.print(output_value); Serial.println("%"); delay(1000); }
Цифровой режим
Для подключения датчика влажности почвы FC-28 в цифровом режиме мы подключим цифровой выход датчика к цифровому контакту Arduino.
Модуль датчика содержит потенциометр, который использован для того чтобы установить пороговое значение. Пороговое значение после этого сравнивается со значением выхода датчика используя компаратор LM393, который помещен на модуле датчика FC-28. Компаратор LM393 сравнивает значение выхода датчика и пороговое значение, и после этого дает нам выходное значение через цифровой вывод.
Когда значение датчика больше чем пороговое значение, цифровой выход передаст нам 5В, и загорится светодиод датчика. В противном случае, когда значение датчика будет меньше чем это пороговое значение на цифровой вывод передастся 0В и светодиод не загорится.
Электрическая схема
Соединения для датчика влажности почвы FC-28 и Ардуино в цифровом режиме следующие:
- VCC FC-28 → 5V Arduino
- GND FC-28 → GND Arduino
- D0 FC-28 → Пин 12 Arduino
- Светодиод положительный → Вывод 13 Ардуино
- Светодиод минус → GND Ардуино
Код для цифрового режима
Код для цифрового режима ниже:
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); } }
Объяснение кода
Прежде всего, мы инициализировали 2 переменные для соединения вывода светодиода и цифрового вывода датчика.
int led_pin = 13; int sensor_pin = 8;
В функции setup мы объявляем пин светодиода как пин выхода, потому что мы включим светодиод через него. Мы объявили пин датчика как входной пин, потому как Ардуино будет принимать значения от датчика через этот вывод.
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); } }
На этом вводный урок по работе с датчиком FC-28 для Ардуино мы завершаем. Успешных вам проектов.
Общие сведения:
Trema-модуль емкостной датчик влажности почвы — в отличие от резистивных датчиков влажности не подвержен коррозии. Датчик является аналоговым, напряжение на выходе обратно пропорционально влажности почвы. Датчик идеально подходит для наблюдения изменений влажности почвы, для создания систем автоматического полива растений и для мониторинга целостности грунтового трубопровода.
Спецификация:
- Напряжение питания Vcc: 5 В или 3,3 В
- Напряжение на выходе датчика при Vcc 5В: ~3 … 1,75 В; при Vcc 3,3В: ~2 … 1 В
- Выход датчика инверсный
- Максимальный потребляемый ток: < 5,3 мА, при Vcc = 5 В и датчик погружён в грунтовую воду.
- Глубина погружения в почву: 65 мм
- Рабочая температура: 0 … 85 °С
- Габариты: 105х16х7 мм (с учётом колодки выводов)
- Вес: 5 г
Подключение:
В комплекте имеется кабель для быстрого и удобного подключения к Trema Shield.
Выход датчика подключается к любому аналоговому входу Arduino.
Модуль удобно подключать 2 способами, в зависимости от ситуации:
Способ — 1 : Используя провода и Piranha UNO
Используя провода «Папа — Мама», подключаем напрямую к контроллеру Piranha UNO
Способ — 2 : Используя проводной шлейф и Shield
Используя 3-х проводной шлейф, к Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO
Питание:
Входное напряжение питания 5 В или 3,3 В, постоянного тока, подаётся на выводы Vcc (V) и GND (G) датчика. Датчик можно подключить к постоянному питанию (тип подключения 1), а можно управлять питанием датчика (тип подключения 2) если подавать питание на датчик с любого информационного вывода, тогда функцией digitalWrite() можно включать или выключать датчик. При таком подключении нужно дать датчику время для включения генератора частоты, примерно 50 миллисекунд.
Питание датчика от информационного вывода (тип подключения 2), возможно, благодаря низкому энергопотреблению датчика (потребляемый ток 3мА).
Подробнее о модуле:
Модуль использует технологию шунтирования высокой частоты за счет чего электроды датчика физически не контактируют с почвой и не подвержены коррозии. Датчик возвращает инверсное значение: чем больше влажность, тем ниже показания. Максимальные показания — датчик находится в воздухе, минимальные — датчик находится в воде по линию пиктограммы деревьев (65мм).
В зависимости от влажности почвы, при питании 5 вольт показания датчика находятся в диапазоне от ~3 до ~1.75 вольт; при питании 3,3 вольта от ~2 до ~1. Соответственно, диапазон показаний функции analogRead() будет зависеть от напряжения питания датчика.
График зависимости выходного напряжения датчика от влажности почвы при питании 5В
Примеры:
Считывание показаний с датчика:
Показания датчика считываются вызовом функции analogRead(номер_вывода);
Тип подключения 1:
Тип подключения 2: датчик запитан от выводов A0 и A1.
Так как датчик является инверсным, для удобства чтения данных можно воспользоваться встоенной функцией map(), которая в следующем скетче преобразует и инвертирует «сырые» показания датчка в диапазон от до 100:
Описание функции map():
- Синтаксис: map(ПЕРЕМЕННАЯ, НАЧАЛЬНОЕ НИЖНЕЕ ЗНАЧЕНИЕ, НАЧАЛЬНОЕ ВЕРХНЕЕ ЗНАЧЕНИЕ, КОНЕЧНОЕ НИЖНЕЕ ЗНАЧЕНИЕ, КОНЕЧНОЕ ВЕРХНЕЕ ЗНАЧЕНИЕ);
- ПЕРЕМЕННАЯ — переменная или функция, возвращающая значение int;
- НАЧАЛЬНОЕ НИЖНЕЕ ЗНАЧЕНИЕ — начальное значение входного диапазона для конвертирования. В данном случае оно больше чем верхнее для инвертирования результата
- НАЧАЛЬНОЕ ВЕРХНЕЕ ЗНАЧЕНИЕ — конечное значение входного диапазона. В данном случае оно меньше нижнего для инвертирования результата.
- КОНЕЧНОЕ НИЖНЕЕ ЗНАЧЕНИЕ — начальное значение выходного диапазона
- КОНЕЧНОЕ ВЕРХНЕЕ ЗНАЧЕНИЕ — конечное значение выходного диапазона
Применение:
- Система автополива растений, сбор информации об изменениях влажности почвы, контроль протечек грунтового трубопровода, контроль уровня воды
Ссылки:
Содержание
- Обзор
- Технические характеристики модуля
- Пример использования
- Часто задаваемые вопросы FAQ
Обзор датчика влажности почвы Arduino
Датчик влажности почвы Arduino предназначен для определения влажности земли, в которую он погружен. Он позволяет узнать о недостаточном или избыточном поливе ваших домашних или садовых растений. Подключение данного модуля к контроллеру позволяет автоматизировать процесс полива ваших растений, огорода или плантации (своего рода «умный полив»).
Модуль состоит из двух частей: контактного щупа YL-69 и датчика YL-38, в комплекте идут провода для подключения.. Между двумя электродами щупа YL-69 создаётся небольшое напряжение. Если почва сухая, сопротивление велико и ток будет меньше. Если земля влажная — сопротивление меньше, ток — чуть больше. По итоговому аналоговому сигналу можно судить о степени влажности. Щуп YL-69 соединен с датчиком YL-38 по двум проводам. Кроме контактов соединения с щупом, датчик YL-38 имеет четыре контакта для подключения к контроллеру.
- Vcc – питание датчика;
- GND – земля;
- A0 — аналоговое значение;
- D0 – цифровое значение уровня влажности.
Датчик YL-38 построен на основе компаратора LM393, который выдает напряжение на выход D0 по принципу: влажная почва – низкий логический уровень, сухая почва – высокий логический уровень. Уровень определяется пороговым значением, которое можно регулировать с помощью потенциометра. На вывод A0 подается аналоговое значение, которое можно передавать в контроллер для дальнейшей обработки, анализа и принятия решений. Датчик YL-38 имеет два светодиода, сигнализирующих о наличие поступающего на датчик питания и уровня цифрового сигналы на выходе D0. Наличие цифрового вывода D0 и светодиода уровня D0 позволяет использовать модуль автономно, без подключения к контроллеру.
Технические характеристики модуля
- Напряжение питания: 3.3-5 В;
- Ток потребления 35 мА;
- Выход: цифровой и аналоговый;
- Размер модуля: 16×30 мм;
- Размер щупа: 20×60 мм;
- Общий вес: 7.5 г.
Пример использования
Рассмотрим подключение датчика влажности почвы к Arduino. Создадим проект индикатора уровня влажности почвы для комнатного растения (ваш любимый цветок, который вы иногда забываете поливать). Для индикации уровня влажности почвы будем использовать 8 светодиодов. Для проекта нам понадобятся следующие детали:
- Плата Arduino Uno
- Датчик влажности почвы
- 8 светодиодов
- Макетная плата
- Соединительные провода.
Соберем схему, показанную на рисунке ниже
Запустим Arduino IDE. Создадим новый скетч и внесем в него следующие строчки: Аналоговый вывод датчика подключен к аналоговому входу Arduino, который представляет собой аналого-цифровой преобразователь (АЦП) с разрешением 10 бит, что позволяет на выходе получать значения от 0 до 1023. Значение переменных для полного полива (minvalue) и сильной сухости почвы (maxvalue) получим экспериментально. Большей сухости почвы соответствует большее значение аналогового сигнала. С помощью функции map масштабируем аналоговое значение датчика в значение нашего светодиодного индикатора. Чем больше влажность почвы, тем больше значение светодиодного индикатора (количество зажженных светодиодов). Подключив данный индикатор к цветку, мы издали можем видеть на индикаторе степень влажности и при определять необходимость полива.
Часто задаваемые вопросы FAQ
1. Не горит светодиод питания
- Проверьте наличие и полярность подаваемого на датчик YL-38 питания (3,3 – 5 В).
2. При поливе почвы не загорается светодиод индикации влажности почвы
- Настройте потенциометром порог срабатывания. Проверьте соединение датчика YL-38 с щупом YL-69.
3. При поливе почвы не изменяется значение выходного аналогового сигнала
- Проверьте соединение датчика YL-38 с щупом YL-69.
- Проверьте наличие щупа в земле.
Используемые источники:
- https://arduinoplus.ru/testiruem-pochvu-s-arduino-i-datchikom-vlazhnosti-fc-28/
- https://wiki.iarduino.ru/page/capacitive-soil-moisture-sensor/
- https://3d-diy.ru/wiki/arduino-datchiki/datchik-vlazhnosti-pochvy-arduino/