#include <WiFi.h>
#include <DHT.h>
#define DHTPIN 2 // Пін, на якому підключено датчик DHT22
#define DHTTYPE DHT22 // Тип датчика DHT (DHT22)
#define LED_PIN 23 // Пін, на якому підключено світлодіоди
#define BUZZER_PIN 12 // Пін, на якому підключено бузер
#define RELAY_PIN 3 // Пін, на якому підключено реле
DHT dht(DHTPIN, DHTTYPE);
const char *ssid = "Wokwi-GUEST"; // Назва вашої WiFi мережі
const char *password = ""; // Пароль вашої WiFi мережі
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(LED_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(RELAY_PIN, OUTPUT);
connectToWiFi();
}
void loop() {
float temperature = dht.readTemperature(); // Отримання значення температури
float humidity = dht.readHumidity(); // Отримання значення вологості
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println(" %");
if (temperature > 30 || humidity > 80) { // Умова виявлення пожежі
activateAlarm(); // Активація сигналізації та надсилання сповіщення
accessControl(false); // Розмежування доступу
} else {
accessControl(true); // Відновлення доступу
}
delay(5000); // Затримка перед наступною перевіркою
}
void connectToWiFi() {
Serial.println("Connecting to WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting...");
}
Serial.println("Connected to the WiFi network");
}
void activateAlarm() {
Serial.println("Fire detected! Activating alarm...");
digitalWrite(LED_PIN, HIGH); // Включення світлодіодів
tone(BUZZER_PIN, 2000); // Включення бузера
delay(5000); // Пауза для тривалості сигналу
digitalWrite(LED_PIN, LOW); // Вимкнення світлодіодів
noTone(BUZZER_PIN); // Вимкнення бузера
}
void accessControl(bool allowAccess) {
if (allowAccess) {
Serial.println("Access granted!");
digitalWrite(RELAY_PIN, LOW); // Відкриття доступу
} else {
Serial.println("Access denied!");
digitalWrite(RELAY_PIN, HIGH); // Закриття доступу
}
}