Подключение датчика влажности почвы к Arduino
Аналоговый датчик влажности
Датчик влажности почвы к Arduino — питание 5 В, земля и AO на аналоговый вход A0–A5. analogRead() вернёт 0–1023: ближе к 1023 — суше, к нулю — мокрее.
Схема подключения датчика влажности почвы к Arduino
| Датчик влажности почвы | Arduino Uno |
|---|---|
| AO | A0 |
| VCC | 5V |
| GND | GND |
Схема из примера «Arduino Uno: датчик влажности почвы».
Выводы Датчик влажности почвы
| Вывод | Назначение |
|---|---|
| AO | аналоговый выход: ниже напряжение — влажнее |
| DO | цифровой выход компаратора, порог задаёт подстроечник |
| VCC | питание модуля |
| GND | общий провод |
Код для Arduino
// Влажность почвы: из отсчётов АЦП - в проценты.
//
// Напряжение на AO тем ниже, чем почва влажнее. Два числа ниже - замеры
// вашего датчика в сухом воздухе и в стакане с водой; у каждого
// экземпляра они свои.
const int SOIL = A0;
const int LED = 8;
const int RAW_DRY = 1023; // в воздухе
const int RAW_WET = 0; // в воде
const int WATER_BELOW = 30; // ниже этого процента пора поливать
void setup() {
Serial.begin(9600);
pinMode(LED, OUTPUT);
}
void loop() {
int raw = analogRead(SOIL);
int percent = map(raw, RAW_DRY, RAW_WET, 0, 100);
percent = constrain(percent, 0, 100);
digitalWrite(LED, percent < WATER_BELOW);
Serial.print("сырое значение: ");
Serial.print(raw);
Serial.print(", влажность: ");
Serial.print(percent);
Serial.println(percent < WATER_BELOW ? "% — пора поливать" : "%");
delay(500);
}
Скетч можно править и запускать в симуляторе без платы и установки среды.
Что учесть на Arduino
- Чтобы защитить электроды, питайте модуль с цифрового вывода и включайте на время замера.
- Для автоматического полива добавьте гистерезис: включайте полив ниже одного порога, выключайте выше другого.
В железе
Электроды резистивного щупа разрушаются от постоянного тока: дорожки покрываются коррозией за недели. Питайте модуль с цифрового вывода и включайте его только на время замера. Погружать щуп можно только до границы дорожек: плата с электроникой должна оставаться сухой. Ёмкостные датчики (с пометкой capacitive) не корродируют, но обычно имеют только аналоговый выход.
Частые ошибки при подключении к Arduino
- Читать влажность на каждом проходе
loop()и поливать по одному замеру: шум даст лишние включения. Усредняйте и берите паузу. - Подключить AO к цифровому выводу: останется только «выше или ниже половины питания», без градаций.
- Постоянное питание щупа: электроды окисляются, показания уплывают, через месяцы датчик перестаёт работать.
- Забыли, что шкала обратная: «большое число» — это сухо, а не мокро.
- Замеры не откалиброваны: числа из чужого примера дают проценты, не имеющие отношения к вашему датчику.
- Щуп погружён выше границы дорожек: вода попадает на плату и компаратор.
Ещё по теме
Другие детали для Arduino
HC-SR04DHT22 (AM2302)BME280DS3231SSD1306 OLED 0,96″LCD 1602 с I2CMAX7219TM1637Модуль релеKY-040Клавиатура 4×4HX711ФоторезисторМодуль microSDRGB-светодиодСервопривод SG9074HC595Шаговый двигательКнопкаПотенциометрПьезопищалкаСветодиодПолзунковый переключательHC-SR501TTP223MQ-2LM35Джойстик KY-023DHT11HTU21D