HC-SR501 на ESP8266: запись в MySQL и отправка email при движении

Датчик движения HC-SR501 с ESP8266 — эффективная охранная система. При срабатывании данные записываются в базу MySQL (дата/время/событие), звучит пищалка и отправляется email-уведомление. Проект сочетает датчик температуры DHT, локальный сервер, базу данных и SMTP. Идеально для охраны дома, дачи или офиса: мгновенные письма о движении, логи событий и мониторинг температуры.

HC-SR501 ESP8266 MySQL email уведомления

Возможности системы

Срабатывание HC-SR501 → запись в MySQL с timestamp. Звуковой сигнал (пищалка). Автоматическая отправка email через SMTP. Вывод логов и температуры на веб-страницы. Ограничение частоты уведомлений (раз в минуту). Легко добавить Telegram или PUSH.

Компоненты

  • ESP8266 NodeMCU
  • HC-SR501
  • DHT11/DHT22 (опционально)
  • Пищалка (активная)
  • Локальный сервер (OpenServer/XAMPP)

Подключение

  • HC-SR501: VCC → 5V, GND → GND, OUT → D3
  • DHT: VCC → 3.3V, GND → GND, Data → D4
  • Пищалка: + → D1, – → GND

Настройка сервера

OpenServer: Вкладка Почта → SMTP: smtp.mail.ru, порт 587, TLS, логин/пароль реальной почты.

База данных MySQL

Таблица pir: id (AUTO), datetime (TIMESTAMP), status (TINYINT).

Скетч ESP8266

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#define PIR_PIN D3
#define BUZZER_PIN D1
#define DHT_PIN D4
WiFiClient client;
HTTPClient http;
void setup() {
  pinMode(PIR_PIN, INPUT);
  pinMode(BUZZER_PIN, OUTPUT);
  WiFi.begin("SSID", "PASS");
  while (WiFi.status() != WL_CONNECTED) delay(500);
}
void loop() {
  if (digitalRead(PIR_PIN) == HIGH) {
    for (int i = 0; i < 3; i++) {
      tone(BUZZER_PIN, 1000, 500);
      delay(1000);
    }
    http.begin(client, "http://192.168.1.100/insert_pir.php?status=1");
    http.GET();
    http.end();
    delay(60000); // раз в минуту
  }
  delay(100);
}
при срабатывании PIR (HIGH) издаёт 3 сигнала зуммера по 0,5 с.
отправляет GET-запрос на сервер.
ждёт 60 секунд перед следующим срабатыванием.

PHP insert_pir.php

<?php
include 'connect_db.php';
if (isset($_GET['status'])) {
  $status = $_GET['status'];
  $sql = "INSERT INTO pir (status) VALUES ('$status')";
  mysqli_query($conn, $sql);
  
  mail("your@email.com", "Движение обнаружено!", "Сработал датчик HC-SR501 в " . date("Y-m-d H:i:s"));
}
?>
принимает GET-параметр status.
записывает его в таблицу pir.
отправляет email с уведомлением о срабатывании PIR.

Заключение

Полноценная охранная система: движение → звук → запись в БД → email. Надёжно, быстро, легко расширяемо.

FAQ — HC-SR501 с email и MySQL

Почему пищалка не звучит?

Используйте активную пищалку или модуль с транзистором — ESP не тянет пассивную напрямую.

Письма в спам?

Нормально для новых почт. Добавьте отправителя в контакты или используйте Gmail с app password.

Как ограничить уведомления?

delay(60000) после отправки — раз в минуту.

Добавить температуру в письмо?

Считайте DHT и добавьте в GET-запрос, обработайте в PHP.

Ложные срабатывания?

Настройте потенциометры HC-SR501: чувствительность ниже, время удержания короче.

Работает ли с несколькими датчиками?

Да, разные пины и уникальные GET-параметры (status1=1).

Без звука?

Уберите tone() — только email и БД.

📁 Скачать примеры