Найти в Дзене

Система освещения с PIR-датчиком и фоторезистором: автоматизация с Arduino

Привет, друзья! Сегодня я хочу поделиться с вами усовершенствованной версией моей системы автоматического управления освещением на базе микроконтроллера Arduino. Этот проект я разработал специально для освещения входной группы на дачном участке в темное время суток. В системе используется фоторезистор для измерения уровня освещенности и PIR-датчик для обнаружения движения. На основе этих данных система управляет реле, которое включает или выключает освещение. Особенность этого проекта в том, что он реализован в корпусе камеры наружного наблюдения. Благодаря этому система выполняет две важные функции: Надеюсь, вам понравится этот проект, и вы найдете его полезным! Схему можно применить с использованием мощных светодиодов и ... со светодиодной лампой с цоколем Е27. Все зависит от вашей фантазии. Ниже приведено подробное описание скетча. Скетч реализует систему автоматического управления освещением, которая: В функции setup() выполняется начальная настройка: Основная логика программы ре
Оглавление

Привет, друзья!

Сегодня я хочу поделиться с вами усовершенствованной версией моей системы автоматического управления освещением на базе микроконтроллера Arduino. Этот проект я разработал специально для освещения входной группы на дачном участке в темное время суток.

В системе используется фоторезистор для измерения уровня освещенности и PIR-датчик для обнаружения движения. На основе этих данных система управляет реле, которое включает или выключает освещение.

Особенность этого проекта в том, что он реализован в корпусе камеры наружного наблюдения. Благодаря этому система выполняет две важные функции:

  1. Отпугивает посторонних, создавая видимость видеонаблюдения (сама камера установлена в другом месте).
  2. Освещает площадку у входной двери.

Надеюсь, вам понравится этот проект, и вы найдете его полезным!

Система освещения с PIR-датчиком и фоторезистором
Система освещения с PIR-датчиком и фоторезистором

Используемые компоненты

  1. Корпус от б/у камеры видео наблюдения;
  2. Микроконтроллер Arduino Nano (1 шт.);
  3. Датчик движения IP45 (1 шт. можно использовать обычный PIR-датчик);
  4. Реле 5V (1 шт.);
  5. Фоторезистор (1 шт. установлен сбоку, на фото не видно);
  6. Провода;
  7. Линза (для имитации объектива).

Схема подключения

Система освещения 
с PIR-датчиком, 
фоторезистор и
светодиодами F5
Система освещения с PIR-датчиком, фоторезистор и светодиодами F5

Схему можно применить с использованием мощных светодиодов и ...

Система освещения 
с PIR-датчиком, 
фоторезистор и
светодиодная лампа Е27
Система освещения с PIR-датчиком, фоторезистор и светодиодная лампа Е27

со светодиодной лампой с цоколем Е27.

Все зависит от вашей фантазии.

Ниже приведено подробное описание скетча.

1. Назначение и функциональность

Скетч реализует систему автоматического управления освещением, которая:

  • Включает свет, если в помещении темно и обнаружено движение.
  • Выключает свет, если движение не обнаружено в течение заданного времени (10 секунд).
  • Мигает светодиодом в темное время суток для визуальной индикации работы системы.
  • Выводит текущее состояние системы (освещенность, состояние PIR-датчика и реле) в монитор порта.

2. Основные компоненты и их подключение

  • Светодиод (LED_PIN = 13): Подключен к цифровому пину D13. Используется для визуальной индикации работы системы в темное время суток.
  • Фоторезистор (PHOTORESISTOR_PIN = A0): Подключен к аналоговому пину A0. Измеряет уровень освещенности.
  • PIR-датчик (PIR_PIN = 2): Подключен к цифровому пину D2. Обнаруживает движение.
  • Реле (RELAY_PIN = 7): Подключено к цифровому пину D7. Управляет включением и выключением освещения.

3. Константы и переменные

Константы

  • LED_PIN, PHOTORESISTOR_PIN, PIR_PIN, RELAY_PIN: Пины, к которым подключены компоненты.
  • BLINK_INTERVAL = 1000: Интервал мигания светодиода (1 секунда).
  • DARKNESS_THRESHOLD = 500: Пороговое значение освещенности. Если значение с фоторезистора ниже этого порога, считается, что в помещении темно.
  • MOTION_TIMEOUT = 10000: Время (10 секунд), в течение которого освещение остается включенным после последнего обнаружения движения.
  • printInterval = 1000: Интервал вывода данных в монитор порта (1 секунда).

Переменные

  • lastBlinkTime: Время последнего изменения состояния светодиода.
  • ledState: Текущее состояние светодиода (включен/выключен).
  • relayOn: Флаг, указывающий, включено ли реле.
  • lastMotionTime: Время последнего обнаружения движения.
  • pirActive: Флаг активности PIR-датчика.
  • lastPrintTime: Время последнего вывода данных в монитор порта.

4. Функция setup()

В функции setup() выполняется начальная настройка:

  • Настраиваются пины светодиода, PIR-датчика и реле на выход или вход.
  • Инициализируется Serial-порт для вывода данных на компьютер.

5. Функция loop()

Основная логика программы реализована в функции loop(). Она выполняется циклически.

5.1. Чтение данных с датчиков

  • Фоторезистор: С помощью функции analogRead(PHOTORESISTOR_PIN) считывается значение уровня освещенности.
  • PIR-датчик: С помощью функции digitalRead(PIR_PIN) проверяется, обнаружено ли движение.

5.2. Управление реле

  • - Если уровень освещенности ниже порогового значения (lightValue < DARKNESS_THRESHOLD):
  • - Если движение обнаружено (pirDetected == true) и реле выключено (relayOn == false), реле включается, устанавливаются флаги relayOn и pirActive, а также обновляется время последнего обнаружения движения.
  • - Если движение обнаружено, но реле уже включено, просто обновляется время последнего обнаружения движения.
  • - Если реле включено, но движение не обнаружено в течение времени MOTION_TIMEOUT (10 секунд), реле выключается, а флаги relayOn и pirActive сбрасываются.
  • - Если уровень освещенности выше порогового значения, реле выключается (если оно было включено), и флаги сбрасываются.

5.3. Мигание светодиода

  • - Светодиод мигает только в темное время суток (lightValue < DARKNESS_THRESHOLD).
  • - Если прошло больше или равно 1000 мс с момента последнего изменения состояния светодиода, его состояние меняется на противоположное.

5.4. Вывод данных в монитор порта

  • Каждую секунду (printInterval = 1000) в монитор порта выводятся текущие значения:
  • Уровень освещенности (lightValue).
  • Состояние PIR-датчика (pirDetected).
  • Состояние реле (relayOn).

5.5. Задержка

В конце каждой итерации цикла loop() добавляется задержка на 50 мс (delay(50)), чтобы снизить нагрузку на процессор.

6. Логика работы системы

1. В темноте:

  • Если PIR-датчик обнаруживает движение, реле включается, и освещение загорается.
  • Освещение остается включенным в течение 10 секунд после последнего обнаружения движения.
  • Если движение не обнаружено в течение 10 секунд, реле выключается.
  • Светодиод мигает каждую секунду, указывая на работу системы.

2. На свету:

  • Реле всегда выключено, независимо от состояния PIR-датчика.
  • Светодиод не мигает.

3. Мониторинг:

  • В монитор порта выводятся данные об освещенности, состоянии PIR-датчика и реле.

7. Оптимизации и улучшения

  1. Оптимизация условий: Условия для управления реле и активности PIR-датчика теперь находятся внутри проверки на темноту, что позволяет избежать ненужных проверок, когда светло.
  2. Вывод статуса: Добавлен вывод статуса фоторезистора, PIR-датчика и реле в монитор порта. Это упрощает отладку и мониторинг работы системы.

8. Пример использования

Эта система может быть использована для автоматического управления освещением в помещении. Например:

  • В темное время суток, когда кто-то входит в комнату, освещение автоматически включается.
  • Если в течение 10 секунд движение не обнаруживается, освещение выключается.
  • На свету система не реагирует на движение, чтобы избежать ненужного включения освещения.

9. Возможные улучшения

  1. Добавление регулировки порога освещенности через потенциометр.
  2. Использование более сложной логики для управления освещением (например, учет времени суток).
  3. Добавление возможности ручного управления реле через кнопку.

Этот скетч является простым, но эффективным примером автоматизации на основе Arduino.

Готовый скетч с описанием и фотографиями найдете по ссылкам:

Скачать на Яндекс Диск ...

Скачать на Github ...

И ещё, если Вы решили всерьез погрузиться в мир Arduino и в этом деле новичок, я настоятельно рекомендую приобрести:

Набор для начинающих Starter Kit Arduino с Arduino Uno R3 — это идеальный старт для тех, кто хочет погрузиться в мир электроники и программирования. Включающий всё необходимое для первых шагов, он содержит Arduino Uno — микроконтроллер, USB-кабель для подключения к компьютеру, макетную плату на 830 контактов, светодиоды разного цвета, набор резисторов и множество других компонентов.

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

С Набором для начинающих с Arduino Uno R3 вы сможете создавать разнообразные проекты, от простых визуальных эффектов до сложных интерактивных систем, и получить базовые знания по работе с Arduino.

Спасибо за внимание и до новых встреч! Желаю вам успехов в ваших начинаниях и новых творческих побед.

Ставьте 👍, если считаете, что статья была полезна.

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

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