В этом проекте вы освоите работу с аналоговым датчиком нового типа, определяющим уровень влажности. Вы сконструируете систему, которая будет светом и звуком оповещать вас, когда растение нуждается в поливе.
Нам понадобится
- Плата Arduino Uno
- Перемычки
- Светодиод
- Датчик влажности почвы FC-28
- Пьезоизлучатель


В этом проекте вы будете использовать датчик влажности почвы FC-28, его (или его аналог) можно приобрести за пару сотен рублей в Интернете или магазинах, перечисленных в приложении А. Штыри датчика определяют уровень влажности в окружающей почве, пропуская через нее ток и измеряя сопротивление. Влажная почва легко проводит электричество, имея более низкое сопротивление, в то время как сухая почва имеет более высокое сопротивление.

Датчик состоит из двух частей, как показано на рис. 5.1: собственно, сам датчик (а) и его контроллер (б). Два контакта на датчике подключаются к двум соответствующим контактам на одной стороне контроллера (как правило, специальный шлейф для подключения входит в комплект). Другая сторона контроллера содержит четыре контакта, три из которых подключаются к плате Arduino.

Перечислим четыре контакта контроллера, слева направо: АО (аналоговый выход), DO (цифровой выход), GND (заземление) и VCC (питание) (см. рис. 5.2). Вы можете считывать значения, получаемые с контроллера, в среде разработки
Arduino, подключив контроллер с датчиком к компьютеру. В этом проекте нет необходимости в макетной плате, поэтому все компоненты подключаются к плате Arduino напрямую.
Малые показатели датчика указывают на присутствие влаги в почве, а высокие — на ее сухость. Если замеры выдали значение, равное или превышающее 900, у вашего растения серьезный недостаток влаги. В этом случае загорится светодиод, и пьезоизлучатель издаст звук. Пьезоизлучатели — это недорогие излучатели звука, которые мы рассмотрим подробнее при работе над проектом № 7.

Сборка
1. С помощью входящего в комплект шлейфа подключите два контакта датчика к контактам + и — на плате контроллера
2. Подключите три штыря на плате контроллера напрямую к контактам 5V, GND и А0 на плате Arduino. Схема подключения показана в таблице ниже. Контакт D0 не используется.

3. Напрямую к плате Arduino подключите светодиод. Короткая ножка (катод) — к контакту GND, а длинная (анод) — к контакту 13, как показано на рис. 5.4 и в таблице ниже.


4. Подключите черный провод пьезоизлучателя к контакту GND, а красный провод — к контакту 11 платы Arduino.
5. Убедитесь, что ваша цепь соответствует схеме на рис. 5.5, а затем загрузите в память Arduino код скетча, приведенный в разделе «Скетч» далее в этом проекте.

Подключите плату Arduino к компьютеру с помощью USB-кабеля. Откройте панель монитора в среде разработки Arduino, чтобы увидеть значения с датчика. Так вы сможете откалибровать устройство контроля полива вашего растения. В среде разработки отобразится актуальное показание датчика. В нашем случае значение было равно 1000, если датчик не был установлен в почву. Таким образом мы вычислили значение минимальной влажности. Для калибровки этого значения вы можете поворачивать ручку потенциометра на контроллере по часовой стрелке для увеличения сопротивления и против часовой стрелки для уменьшения (см.рис 5.6).
Когда датчик установлен во влажную почву, значение снизится примерно до 400. По мере высыхания почвы значение датчика возрастает, когда оно достигнет 900, загорится светодиод и раздастся звуковой сигнал.


Сначала скетч настраивает контакт А0 платы Arduino на считывание показаний датчика влажности. Затем он настраивает контакт 11 платы Arduino на вывод на пьезоизлучатель, а контакт 13 — на вывод на светодиод. Функция Serial.Println() используется для передачи показаний датчика в среду разработки Arduino, чтобы вы могли увидеть значение влажности на экране.
В своем проекте измените значение в строке:
if(analogRead(0) > 900){
Таким образом, чтобы оно соответствовало показанию сухого датчика (у нас получилось значение 900). Когда почва влажная, значение будет ниже 900, поэтому светодиод и пьезоизлучатель останутся выключенными. Когда значение достигнет 900, это будет означать, что почва высохла, о чем оповестят пьезоизлучатель и светодиод. Так вы узнаете, что растение необходимо полить.
const int moistureA0 = 0; int AO = 0; // Контакт, к которому подключен штырь А0 контроллера int tmp = 0; // Значение аналогового контакта int buzzPin = 11; // Контакт, к которому подключен пьезоизлучатель int LED = 13; // Контакт, к которому подключен светодиод void setup () { Serial.begin(9600); // Передача считываемых Arduino данных в IDE Serial.println ("Датчик влажности почвы"); pinMode(moistureA0, INPUT); pinMode(buzzPin, OUTPUT); // Перевод контакта в режим вывода pinMode(LED, OUTPUT); // Перевод контакта в режим вывода } void loop () { tmp = analogRead( moistureA0); if ( tmp != A0) { A0 = tmp; Serial.print("A = "); // Вывести значение сопротивления датчика в IDE Serial.println(А0); } delay (1000); if (analogRead(0) > 900) { // Если показание датчика превышает 900, подается питание на пьезоизлучатель и на светодиод digitalWrite(buzzPin, HIGH); digitalWrite(LED, HIGH); delay(1000); // Ожидание в 1 секунду digitalWrite(buzzPin, LOW); digitalWrite(LED, HIGH); } else { digitalWrite(buzzPin, LOW); //Если показание датчика меньше 900, питание на пьезоизлучатель и светодиод остаются выключенными digitalWrite(LED, LOW); } }
Теги: