Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Умный датчик полива «Thirst Alert» на Arduino — DIY сигнализация засухи для растений

Компоненты и материалы

Компонент Количество
Микроконтроллер ATmega328P (или Arduino UNO для прототипирования) 1
Кварцевый резонатор 16 МГц 1
Керамические конденсаторы 20 пФ 2
Линейный стабилизатор 7805 (5В) 1
Светодиоды (любые цвета) 2
Резистор 10 кОм 1
Резистор 220 Ом 1
Резистор 470 Ом 1
Колодка переключателей (Slide Switch) 1
Тактильная кнопка C&K PTS 645 1
Пьезоизлучатель (Buzzer) 1
Крона 9В + клемма для неё 1
Датчик влажности почвы SparkFun (с винтовыми клеммами) 1
3D-печатаемый корпус (файл на Thingiverse) 1

Необходимые инструменты

ПО и онлайн-сервисы

История проекта

Признаюсь: я ужасный «родитель» для растений. Не могу понять — переливаю или недоливаю. Но люблю зелень в интерьере. Поэтому создал Thirsty Plant Detector — устройство, которое «говорит» за растения, пискнув как сверчок, когда почва высохла.

В основе — Explorer Uno (ATmega328P), датчик влажности почвы и пьезо-зуммер. Интересный факт: пьезоэлемент может не только издавать звук, но и детектировать вибрации (например, стук). Датчик влажности работает как переменный резистор: два штыря в почве меняют сопротивление (0–1023) в зависимости от влажности. Чем больше воды — тем ниже сопротивление.

Этап 1: Сборка на макетной плате

Сначала собираем на breadboard для проверки кода. Используем Arduino Uno, затем переносим ATmega328P на свою плату. Схема подключения:

Умный датчик полива «Thirst Alert» на Arduino — DIY сигнализация засухи для растений

Можно использовать готовый датчик SparkFun или сделать свой: два металлических штыря (латунные стержни из хобби-магазина), провода и резистор 47 кОм.

Загрузите тестовый скетч: Thirst_Alert.ino. При касании штырей писк должен прекращаться.

Этап 2: Проектирование печатной платы в Patchr

  1. Регистрируемся на Patchr.io (есть 4-минутное видео-руководство).
  2. Используем шаблон Explorer Uno — это готовый Arduino-ядро, не нужно рисовать его заново.
  3. Расширяем контур платы под датчик и зуммер.
  4. Размещаем резистор: один конец — 5В, второй — А0. Добавляем два черезхоловых отверстия под штыри датчика (один к резистору, второй — к GND).
  5. Размещаем зуммер: контакты на GND и Digital Pin 5.
  6. Проверяем схему с макетной платы → Экспорт Gerber → Заказ в Patchr Manufacturing (промокод GoPatchr).

Этап 3: Проектирование корпуса

Пока плата едет, проектируем корпус в Onshape (или TinkerCAD). Размеры платы смотрим во вкладке BRD. Готовый корпус можно скачать с Thingiverse. Если нет 3D-принтера — закажите печать онлайн или соберите корпус из подручных материалов.

Этап 4: Сборка и пайка

Платы пришли — время паять! Используйте проект Patchr и схемы как референс. Зуммер можно припаять прямо на плату (если заложили место) или вывести на проводах к верхней части корпуса.

Всё готово! Теперь ваши растения никогда не умолчат о жажде.

Код (Arduino)

/* Thirst Alert Plant Alarm for Patchr.io
 * Tutorial: www.hackster.io/patchr
 * PCB Design: www.patchr.io
 * November 2019 */
#include "Volume.h" // Библиотека Connor Nishijima (2016)

int sensorPin = A0;
int sensorValue;
int limit = 300; // Порог сухости (настраивается экспериментально)
Volume vol;

void setup() {
  Serial.begin(9600);
  vol.begin();
  vol.setMasterVolume(1.00); // Громкость 0.00–1.00
  vol.delay(500);
}

void loop() {
  sensorValue = analogRead(sensorPin);
  Serial.println(sensorValue);
  
  if (sensorValue > limit) { // Почва сухая
    Serial.println("*cricket*");
    chirp(); // Играем «сверчок»
    vol.delay(random(1000, 30000)); // Случайная пауза 1–30 сек
  } else {
    vol.noTone();
  }
}

void chirp() {
  int freq = random(3700, 4000);
  float volume = random(10, 101) / 100.00;
  int chirpType = 1;
  if (chirpType == 1) {
    int chirpCount = random(1, 3);
    chirp(chirpCount, freq, volume);
  }
}

void chirp(byte times, int freq, float volume) {
  float fadeOut = 1.00;
  while (times > 0) {
    float mv = 0;
    while (mv < 1.00) {
      for (int v = 0; v < 255; v += 4) vol.tone(freq, v * volume * mv * fadeOut);
      for (int v = 255; v > 0; v -= 4) vol.tone(freq, v * volume * mv * fadeOut);
      vol.delay(20); mv += 0.2;
    }
    mv = 1.00;
    while (mv > 0.00) {
      for (int v = 0; v < 255; v += 4) vol.tone(freq, v * volume * mv * fadeOut);
      for (int v = 255; v > 0; v -= 4) vol.tone(freq, v * volume * mv * fadeOut);
      vol.delay(20); mv -= 0.2;
    }
    vol.noTone(); fadeOut -= 0.75; times--;
  }
}

Файлы проекта

Производственный процесс

  1. Итальянские словесные часы на Arduino Nano, NeoPixel, LCD и RTC
  2. Экономия пинов Arduino: подключение 4×3 клавиатуры по трём аналоговым входам
  3. Умная система автополива растений на Arduino Nano
  4. Надежный счетчик кВт·ч на Sigfox с Arduino MKR Fox 1200
  5. Bluetooth-монитор температуры на Arduino Nano с NTC-термистором
  6. DIY Автоматический измеритель емкости (10 пФ – 10 мкФ) на Arduino Nano
  7. Бесконтактный жестовый замок: APDS-9960 + Arduino для безопасного доступа
  8. Набор-компаньон для Arduino Nano — необходимые компоненты и инструменты для DIY-электроники
  9. Гальванически разделённый аналоговый вход для Arduino на LM331 и оптопаре 4N25
  10. Точный тест времени реакции на Arduino UNO