Ночной охранный светильник на Arduino

В этом проекте вы создадите ночной охранный светильник с модулем реле, фоторезистором и Arduino.

Ночной охранный светильник на Arduino - демонстрация

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

Вот основные функции этого проекта:

  • лампа включается, когда темно И обнаружено движение;

  • при обнаружении движения лампа остаётся включённой в течение 10 секунд;

  • когда лампа ВКЛЮЧЕНА и обнаруживает движение, она начинает отсчёт 10 секунд заново;

  • когда светло, лампа выключена, даже если обнаружено движение.

Рекомендуемые ресурсы

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

Необходимые компоненты

Вот полный список компонентов, необходимых для этого проекта:

Компоненты для проекта ночного охранного светильника на Arduino

Помимо этих электронных компонентов, вам также понадобится разъём сетевого питания, сетевой кабель и патрон для лампочки (шнур для лампы). Мой шнур для лампы показан на рисунке ниже.

Шнур для лампы - комплект с патроном

Вы можете использовать ссылки выше или перейти на MakerAdvisor.com/tools, чтобы найти все компоненты для ваших проектов по лучшей цене!

Код

Загрузите или скопируйте следующий код в Arduino IDE и загрузите его в плату Arduino.

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

/*
 * Rui Santos
 * Complete Project Details https://randomnerdtutorials.com
 */

// Relay pin is controlled with D8. The active wire is connected to Normally Closed and common
int relay = 8;
volatile byte relayState = LOW;

// PIR Motion Sensor is connected to D2.
int PIRInterrupt = 2;

// LDR pin is connected to Analog 0
int LDRPin = A0;
// LDR value is stored on LDR reading
int LDRReading;
// LDR Threshold value
int LDRThreshold = 300;

// Timer Variables
long lastDebounceTime = 0;
long debounceDelay = 10000;

void setup() {
  // Pin for relay module set as output
  pinMode(relay, OUTPUT);
  digitalWrite(relay, HIGH);
  // PIR motion sensor set as an input
  pinMode(PIRInterrupt, INPUT);
  // Triggers detectMotion function on rising mode to turn the relay on, if the condition is met
  attachInterrupt(digitalPinToInterrupt(PIRInterrupt), detectMotion, RISING);
  // Serial communication for debugging purposes
  Serial.begin(9600);
}

void loop() {
  // If 10 seconds have passed, the relay is turned off
  if((millis() - lastDebounceTime) > debounceDelay && relayState == HIGH){
    digitalWrite(relay, HIGH);
    relayState = LOW;
    Serial.println("OFF");
  }
  delay(50);
}

void detectMotion() {
  Serial.println("Motion");
  LDRReading = analogRead(LDRPin);
  // LDR Reading value is printed on serial monitor, useful to get your LDRThreshold
  //Serial.println(LDRReading);
  // Only turns the Relay on if the LDR reading is higher than the LDRThreshold
  if(LDRReading > LDRThreshold){
    if(relayState == LOW){
      digitalWrite(relay, LOW);
    }
    relayState = HIGH;
    Serial.println("ON");
    lastDebounceTime = millis();
  }
}

Просмотреть исходный код

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

Предупреждение - высокое напряжение

Вот схема подключения для этого проекта.

Схема подключения ночного охранного светильника на Arduino

Примечание: если у вас есть заземляющее (GND) соединение в кабеле сетевого напряжения – жёлто-зелёный кабель – оно должно идти в обход модуля реле, как и синий провод (нейтраль).

Демонстрация

Вот ваша схема в действии:

Ночной охранный светильник на Arduino - демонстрация работы

Заключение

В этом проекте вы создали ночной охранный светильник с фоторезистором и PIR датчиком движения.

Это отличный проект для практики работы с реле и PIR датчиком движения.

Если вам нравятся проекты Arduino, обязательно ознакомьтесь с нашим последним курсом: Arduino Step-by-step Projects – Build 25 Projects