#include <DHTesp.h>
//Визначаємо піни згідно з твоєю схемою
#define PIN_TRIG 4 //Фіолетовий дріт
#define PIN_ECHO 2 //Помаранчевий дріт
#define PIN_DHT 25 //Зелений дріт
DHTesp dht;
unsigned long lastMeasureTime = 0;
const unsigned long measureInterval = 1000; //Інтервал вимірювання — 1 секунда
void setup() {
Serial.begin(115200);
Serial.println("Система локальної безпеки запускається...");
//Конфігурація пінів ультразвукового датчика
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
//Ініціалізація датчика температури DHT22
dht.setup(PIN_DHT, DHTesp::DHT22);
Serial.println("Система готова. Очікування даних...");
Serial.println("---------------------------------");
}
void loop() {
//Перевірка датчиків раз на секунду без блокування процесора
if (millis() - lastMeasureTime >= measureInterval) {
lastMeasureTime = millis();
checkSensors();
}
}
//Функція заміру відстані, температури та аналізу небезпеки
void checkSensors() {
//РОБОТА З УЛЬТРАЗВУКОМ (HC-SR04)
//Подача короткого імпульсу на TRIG для старту вимірювання
digitalWrite(PIN_TRIG, LOW);
delayMicroseconds(2);
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
//Рахуємо час повернення ультразвукової хвилі
long duration = pulseIn(PIN_ECHO, HIGH);
//Перераховуємо час у реальну відстань в сантиметрах
float distance = duration * 0.034 / 2;
//Виводимо поточну відстань у Serial Monitor
Serial.print("Відстань: ");
if (duration == 0) {
Serial.println("Помилка зчитування з HC-SR04!");
} else {
Serial.print(distance);
Serial.println(" см");
}
//Логіка перевірки небезпечної зони (ближче ніж 25 см)
if (distance < 25 && distance > 0) {
Serial.println("!!! УВАГА !!! СМС: НЕБЕЗПЕКА !!! ОБ'ЄКТ НАДТО БЛИЗЬКО !!!");
}
//РОБОТА З ТЕМПЕРАТУРОЮ (DHT22)
TempAndHumidity data = dht.getTempAndHumidity();
if (dht.getStatus() == DHTesp::ERROR_NONE) {
Serial.print("Температура: ");
Serial.print(data.temperature);
Serial.print(" °C | Вологість: ");
Serial.print(data.humidity);
Serial.println(" %");
} else {
Serial.println("Помилка зчитування з DHT22!");
}
Serial.println("---------------------------------");
}