Датчик дождя Ардуино: MH Sensor Series для уровня воды при протечке

Вопросы и ответы

Шаг 1. Инструменты и компоненты

Для этого проекта нам понадобятся:

  • Ардуино Нано
  • Ультразвуковой модуль HC-SR04
  • ЖК дисплей
  • ЖК-дисплей I2c
  • Блюдо для хлеба
  • Провода
  • Емкость с водой

Как использовать датчик расхода воды с Arduino

Необходимые материалы

  • Плата Arduino Uno
  • Щиток датчика Grove для Arduino
  • Датчик расхода воды

Подключение электроники

Для подключения используются 3 провода:

  • Красный для Vcc
  • Черный для GND
  • Желтый для импульсного выхода.

Для плат на базе Atmega 328, таких как Arduino UNO и Seeeduino V4.2, есть два цифровых контакта, которые можно использовать в качестве прерывания. Цифровой вывод 2 для прерывания 0 и цифровой вывод 3 для прерывания 1. Мы используем вывод D2 для обнаружения импульсного выхода датчика расхода воды. Если вы используете базовый экран Seeeduino + Grove, просто подключите датчик расхода воды к разъему D2. Если вы используете другую плату Arduino, используйте перемычки для подключения к правильному выводу.

Подключение датчика расхода воды к Arduino

Программа для Arduino

Конечно, вы можете использовать digitalread () в функции LOOP для чтения выходных данных датчика расхода воды. Считайте плюс один, когда сигнал высокий. Однако этот подход не работает в реальном времени, и программе потребуется определенное время для ожидания каждого запуска, пока не появятся новые импульсы. Для таких требовательных приложений реального времени мы обычно используем прерывание. Когда обнаруживается нарастающий фронт импульса, запускается прерывание, считая плюс один.

Сила сигнала

Затем откройте свою Arduino IDE и скопируйте приведенный ниже код. Загрузите код в Arduino.

Установите скорость передачи 9600 в последовательном мониторе. По мере того, как вода течет, значение расхода будет отображаться в соответствующем окне.

Калибровка

Чтобы получить точные показания датчика уровня воды, рекомендуется сначала откалибровать его для конкретного типа воды, которую вы собираетесь контролировать.

Как известно, чистая вода не проводит электричество. Фактически, именно минералы и примеси делают его проводящим. Следовательно, датчик может быть более или менее чувствительным в зависимости от типа используемой воды.

Прежде чем вы начнете отслеживать данные или запускать какие-либо обработчики событий, вы должны увидеть, какие показания вы фактически получаете от своего датчика.

Используя приведенный выше рисунок, обратите внимание, какие значения дает ваш датчик, когда он полностью высохнет, когда он частично погружен в воду и когда полностью погружен в воду.

Например, используя ту же схему, что и выше, вы увидите на последовательном мониторе значения, подобные следующим:

  • когда датчик сухой: 0;
  • при частичном погружении в воду: ~ 420;
  • при полном погружении: ~ 520.

Рисунок 6 Калибровка датчика уровня воды
Рисунок 6 — Калибровка датчика уровня воды

Этот тест может проводиться методом проб и ошибок. Как только вы получите хороший контроль над этими показаниями, вы можете использовать их в качестве пороговых значений, если вы намереваетесь предпринять какие-либо действия. В следующем примере мы именно это и сделаем.

Шаг 2. Начало работы с HC-SR04

HC-SR04 или ультразвуковой датчик — это электронное устройство, которое работает по принципу передачи и отражения. Этот датчик имеет два контакта, называемых TRIG и ECHO.

Функция выхода ECHO — излучать волны в канал. Эти волны проходят через среду как волна и отражаются, когда сталкиваются с объектом или препятствием на своем пути. Мы вычисляем время, затраченное на излучение и отражение, и, используя это значение, определяем расстояние до препятствия, которое приближается к нам.

Ультразвуковой датчик подключается к Nano следующим образом:

  • Вывод TRIG подключен к цифровому выводу на Nano 9
  • Вывод ECHO подключен к цифровому выводу Nano 10
  • Контакт VCC подключается к плюсу макета
  • Вывод GND подключен к минусу макета

Распиновка датчика уровня воды

Этот датчик уровня воды очень прост в использовании и имеет всего 3 контакта для подключения.

Рисунок 3 Распиновка датчика уровня воды
Рисунок 3 — Распиновка датчика уровня воды

Контакт S (сигнал) — это аналоговый выход, который будет подключен к одному из аналоговых входов на вашей плате Arduino.

Контакт + (VCC) подает питание на датчик. Рекомендуется питать датчик напряжением от 3,3 до 5 В. Обратите внимание, что напряжение на аналоговом выходе будет зависеть от напряжения питания, подаваемого на датчик.

— (GND) — земля.

Скетч для проекта с сигнализацией

Ниже приведен тестовый код, который активирует акустический сигнал на вышеупомянутом цифровом выходе 6 с временной задержкой, чтобы исключить ложные срабатывания в случае случайного попадания воды в датчик. Работа осуществляется через переменную, которая обновляется каждую секунду и действует как порог — curCounter. Тревога активируется, когда значение, передаваемое датчиком, становится меньше 300. Задержка между обнаружением влажности и звуковым сигналом составляет чуть более 30 секунд.

калибровка датчика уровня воды

Шаг 3. Подключение ЖК-дисплея

жК-дисплей 16×2 Arduino сначала припаян к I2C. Я использую только драйвер I2C, чтобы устранить беспорядок и большое количество перемычек, что позволяет подключать больше датчиков и устройств вывода. I2c имеет 4 контакта, достаточных для работы ЖК-дисплея, в то время как традиционный ЖК-дисплей имеет 12 контактов. Ниже приводится краткое описание выводов I2C.

  • Линия данных (SDA): эта линия или линия передачи I2C используется для передачи данных от передатчика к приемнику. В этой строке передается символ, отображаемый на ЖК-дисплее.
  • Линия синхронизации (SCL): это линия управления I2C, которая определяет скорость передачи символов, как импульс синхронизации в традиционных триггерах.

I2C подключаются следующим образом:

  • Вывод SDA подключен к аналоговому выводу A5
  • Контакт SCL подключается к аналоговому контакту A4
  • Контакт VCC подключается к плюсу макета
  • Вывод GND подключен к минусу макета

Мы закончили с оборудованием, теперь перейдем к коду.

Базовый пример определения уровня воды

После того, как схема будет собрана, загрузите следующий эскиз в Arduino.

После загрузки скетча откройте окно последовательного монитора, чтобы увидеть вывод Arduino. Вы должны увидеть значение 0, когда датчик ничего не касается. Чтобы увидеть, как определяется вода, вы можете взять стакан с водой и медленно погрузить в него датчик.

Рисунок 5 Вывод показаний датчика уровня воды
Рисунок 5 — Вывод показаний датчика уровня воды

Датчик не предназначен для полного погружения в воду, поэтому будьте осторожны при экспериментировании, чтобы только открытые дорожки на печатной плате контактировали с водой.

Объяснение

Скетч начинается с объявления контактов Arduino, к которым подключены контакты датчика + (VCC) и S (сигнал).

Затем мы определяем переменную val, в которой хранится текущее значение уровня воды.

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

В функции loop () мы периодически вызываем функцию readSensor () с интервалом в одну секунду и печатаем возвращаемое значение.

Функция readSensor () используется для получения текущего уровня воды. Включает датчик, ждет 10 миллисекунд, считывает аналоговое значение с датчика, выключает датчик, а затем возвращает аналоговое значение.

Принцип работы датчика расхода воды

Чтобы объяснить, как работает поток воды, давайте откроем крышку и посмотрим.

Датчик расхода воды снят

Все компоненты YF-402

Компоненты датчика расхода воды

Принцип работы датчика расхода воды довольно прост. Основными компонентами являются датчик Холла, колесо турбины и магнит. Вода поступает через входное отверстие и выходит через выходное отверстие. Поток воды вращал колесо, и магнит на колесе вращался вместе с ним. Вращение магнитного поля активирует датчик эффекта Холла, который излучает прямоугольные волны высокого и низкого уровня (импульс).

Для каждого вращения колеса объем текущей воды составляет определенное количество, а также количество выходящих прямоугольных волн. Следовательно, мы можем рассчитать расход воды, посчитав количество прямоугольных волн (импульсов).

Подключение датчика протечки и дождя к ардуино

Для подключения датчика к ардуино вам понадобится сама плата (UNO, Mega, Nano или любая другая) и сам датчик. Если вы хотите контролировать интенсивность осадков, рекомендуется размещать датчик не горизонтально, а под определенным углом, чтобы скопившиеся капли стекали вниз.
Схема подключения датчика дождя и утечки Arduino

Схема подключения модуля датчика утечки к Arduino:

  • VCC (вход питания) — должен соответствовать подключенной цепи Arduino по напряжению и току. То есть в данном случае 5В;
  • GND — заземление;
  • АО — аналоговый выход;
  • DO — цифровой выход.

Подключаем аналоговый выход к аналоговому выводу микроконтроллера, например А1. Цифровой выход соответственно подключен к одному из цифровых выводов. Напряжение может подаваться с вывода 5V платы Arduino, земля соединена с землей.

При подключении датчиков утечки в реальных проектах необходимо обеспечить защиту электронной части модуля от влаги!

Пример проекта дождевой сигнализации

Приведем пример использования акустического сигнала в виде зуммера, подключенного к цифровому выходу D6. При желании вместо сигнализации можно подключить реле и выполнять различные операции с открытием сети. В скетче мы будем передавать полученные данные на дверной монитор через интерфейс UART.

Шаг 4. Код (скетч)

Код довольно простой. Кроме того, сейчас мы добавляем некоторые другие библиотеки для работы с ЖК-дисплеем I2C: LiquidCrystal_I2C, Wire.

Убедитесь, что вы ввели правильный адрес I2C в коде, адрес I2C по умолчанию — 0x3f.

Скопируйте и вставьте следующий код в IDE Arduino, выберите Arduino Nano и правильный порт, затем нажмите «Загрузить».

Читайте также: Операционные системы для Raspberry Pi 3 Model B

Оцените статью
Блог про Arduino