Ночной охранный светильник на Arduino
В этом проекте вы создадите ночной охранный светильник с модулем реле, фоторезистором и Arduino.
Ночной охранный светильник включается только тогда, когда темно и обнаружено движение.
Вот основные функции этого проекта:
лампа включается, когда темно И обнаружено движение;
при обнаружении движения лампа остаётся включённой в течение 10 секунд;
когда лампа ВКЛЮЧЕНА и обнаруживает движение, она начинает отсчёт 10 секунд заново;
когда светло, лампа выключена, даже если обнаружено движение.
Рекомендуемые ресурсы
Следующие ресурсы содержат руководства по использованию модуля реле и PIR датчика движения с Arduino, которые могут быть полезны для этого проекта.
Необходимые компоненты
Вот полный список компонентов, необходимых для этого проекта:
Arduino UNO – читайте Лучшие стартовые наборы Arduino
Шнур для лампы (посмотреть на eBay)
Помимо этих электронных компонентов, вам также понадобится разъём сетевого питания, сетевой кабель и патрон для лампочки (шнур для лампы). Мой шнур для лампы показан на рисунке ниже.
Вы можете использовать ссылки выше или перейти на 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();
}
}
Схема подключения
Вот схема подключения для этого проекта.
Примечание: если у вас есть заземляющее (GND) соединение в кабеле сетевого напряжения – жёлто-зелёный кабель – оно должно идти в обход модуля реле, как и синий провод (нейтраль).
Демонстрация
Вот ваша схема в действии:
Заключение
В этом проекте вы создали ночной охранный светильник с фоторезистором и PIR датчиком движения.
Это отличный проект для практики работы с реле и PIR датчиком движения.
Если вам нравятся проекты Arduino, обязательно ознакомьтесь с нашим последним курсом: Arduino Step-by-step Projects – Build 25 Projects