Гид по технологиям

Arduino-сигнализация: датчик движения, мигающие огни и пронзительная сирена

6 min read Электроника Обновлено 02 Jan 2026
Arduino-сигнализация: датчик, мигающие огни и сирена
Arduino-сигнализация: датчик, мигающие огни и сирена

сигнализация-на-ардуино

В этом проекте мы обнаруживаем движение и “пугаем” незваного гостя пронзительным звуком и мигающими огнями. Цель — показать, как собрать такое устройство полностью с нуля: сначала тестируем каждую часть по отдельности, затем объединяем в единый скетч.

Важно: это учебный проект. Он может напугать соседского кота или сестру, но не заменяет полноценных средств безопасности.

Что понадобится

  • Плата Arduino (Uno / Nano / совместимая)
  • Ультразвуковой модуль HC-SR04 (или PIR-датчик — более подходящий для дверей, но дороже)
  • Пьезоизлучатель (пиезобуззер)
  • RGB-светодиодная лента 5 В (с MOSFET/драйвером, если лента потребляет существенный ток)
  • Провода, макетная плата, источник питания 5 В для ленты

Примечание: не запитывайте длинную LED-ленту напрямую с 5 В пина Arduino — используйте отдельный блок питания и общую землю.

Структура статьи

  • Тестируем RGB-ленту (мигающие огни)
  • Подключаем и тестируем HC-SR04 (датчик расстояния)
  • Тестируем пьезоизлучатель
  • Собираем полный скетч и отлаживаем
  • Советы по питанию, отладке и альтернативы

Важно: всегда подключайте общий провод (GND) между Arduino и внешними источниками питания.

Подготовка проводки — постепенно

Не снимайте и не переделывайте полностью сборку на каждом шаге. Постепенно добавляйте новые модули поверх проверенной схемы. К моменту интеграции у вас должна получиться примерно такая схемa:

готовая-проводка

Мигающие огни

Подключите RGB-ленту так же, как в базовом руководстве по RGB, используйте PWM-выходы Arduino для управления каналами. Не меняйте номера пинов, если хотите повторять примеры ниже (мы используем 10, 11 и 9 — они поддерживают PWM).

Для быстрой проверки можно загрузить простой скетч, который моргает цветами. Если всё подключено правильно, вы увидите мигание.

тест-rgb

Датчик расстояния HC-SR04

На модуле SR04 четыре вывода: VCC, GND, TRIG и ECHO.

  • VCC → +5 В
  • GND → GND
  • TRIG → цифровой пин 6
  • ECHO → цифровой пин 7

sr04-модуль

Для упрощения работы мы будем использовать библиотеку NewPing. Скачайте её и поместите в папку Libraries вашей IDE Arduino, затем перезапустите среду.

Откройте монитор порта (115200 бод) и запустите тестовый скетч — вы должны увидеть вывод измерений расстояния в сантиметрах с периодичностью около 20 измерений в секунду.

вывод-ping

Пояснение: NewPing возвращает время в микросекундах между посылкой и приёмом эха. Для перевода в сантиметры используется константа US_ROUNDTRIP_CM.

Пьезоизлучатель

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

Тональность генерируется посредством изменения частоты сигнала. Пьезо может потребовать небольшой транзистор/драйвер для более громкого звука, но для теста достаточно прямого подключения.

Кодирование: объединяем всё вместе

Создайте новый скетч с именем Alarm и поэтапно объединяйте переменные и объявления из тестов. Ниже — весь объединённый рабочий пример. Перед использованием убедитесь, что установлены библиотеки NewPing и NewTone.

#include 
#include 

// Выбор PWM-выходов для RGB-ленты
#define RED_PIN    10
#define GREEN_PIN  11
#define BLUE_PIN    9

#define TRIGGER_PIN 6  // TRIG на ультразвуковом датчике
#define ECHO_PIN    7  // ECHO на ультразвуковом датчике
#define MAX_DISTANCE 100 // Максимальная дальность пинга в сантиметрах, для детейлирования можно увеличить

#define ALARM 3 // Пьезо на пине 3

float sinVal;
int toneVal;

// Инициализация NewPing (пины TRIG, ECHO и максимально измеряемая дистанция)
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
boolean triggered = false; // Состояние срабатывания

void setup(){
  // Настройка пинов для RGB-ленты
  pinMode(RED_PIN, OUTPUT);
  pinMode(BLUE_PIN, OUTPUT);
  pinMode(GREEN_PIN, OUTPUT);

  // Сброс значений света
  analogWrite(RED_PIN, 0);
  analogWrite(BLUE_PIN, 0);
  analogWrite(GREEN_PIN, 0);

  // Пьезо
  pinMode(ALARM, OUTPUT);

  Serial.begin(115200); // Для отладки

  // Небольшая задержка перед запуском главного цикла (даёт время отступить)
  delay(5000);
}

// Вспомогательная функция для отправки RGB-значения одним вызовом
void color(unsigned char red, unsigned char green, unsigned char blue)
{
  analogWrite(RED_PIN, red);
  analogWrite(BLUE_PIN, blue);
  analogWrite(GREEN_PIN, green);
}

// Функция тревоги: мигающие огни + пьезо
void alarm(){
  // Запускаем цикл формирующий звуковой эффект и мигающий свет
  for (int x = 0; x < 180; x++) {
    // Получаем синус для модуляции частоты
    sinVal = sin(x * (3.1412 / 180.0));
    toneVal = 2000 + (int)(sinVal * 1000.0);

    // Включаем тон (NewTone — неглобально совместима с NewPing по прерываниям без конфликта)
    NewTone(ALARM, toneVal);

    // Мигаем цветами: чередуем красный и жёлтый
    if (x % 2 == 0) color(255, 0, 0); // красный
    else color(255, 255, 0); // желтый

    delay(10); // Небольшая задержка для ритма
  }

  // Остановим тон
  NewTone(ALARM, 0);
}

void loop(){
  if (triggered == true) {
    alarm();
  }
  else {
    delay(50); // Ждём 50 мс между пингами (~20 измерений/с)
    unsigned int uS = sonar.ping(); // Посылаем пинг, получаем время в микросекундах
    unsigned int distance = uS / US_ROUNDTRIP_CM; // Переводим в сантиметры
    Serial.println(distance);

    // Если расстояние меньше порога — срабатывает сигнализация
    // Порог можно изменить по месту, здесь установлен 50 см
    if (distance > 0 && distance < 50) {
      triggered = true;
    }
  }
}

Короткие пояснения по коду:

  • Мы постоянно опрашиваем датчик, получаем расстояние и печатаем его в Serial.
  • Если расстояние меньше порогового значения (здесь 50 см), устанавливаем triggered = true и запускаем alarm().
  • alarm() запускает короткий цикл, генерирующий синусоидально-модулированную тональность и мигающие цвета.

Практические замечания и безопасность

  • Источник питания: если LED-лента длинная или яркая, используйте отдельный 5 В блок питания с достаточной силой тока (многими амперами). Не тяните ток ленты от 5 В пина Arduino.
  • Общая земля: обязательно свяжите GND Arduino и GND внешнего источника питания.
  • Ток и нагрев: контролируйте температуру MOSFET’ов/транзисторов и качество соединений.
  • Датчики PIR лучше подходят для обнаружения человека по движению тела; HC-SR04 чувствителен к преградам и может «видеть» через небольшие проёмы.

Заметка: при тестировании предупредите домашних, чтобы не пугать людей и животных громкими звуками.

Отладка — типичные проблемы и способы решения

  • Нулевой вывод в Serial: проверьте скорость (115200) и подключение питания к модулю SR04.
  • Некорректные показания расстояния: откалибруйте MAX_DISTANCE, проверьте, не мешает ли отражение (блестящие поверхности дают ложные показания).
  • Конфликт прерываний между libraries: если стандартная tone вызывает конфликты с NewPing, используйте NewTone (как в примере) или иначе разделите время выполнения.
  • Лента не светится: проверьте питание 5 В напрямую, проверьте общую землю и наличие MOSFET/транзистора для управления каналами.

Альтернативные подходы и расширения

  • Использовать PIR-датчик (например, HC-SR501) вместо HC-SR04 для надёжного обнаружения людей и снижения ложных срабатываний.
  • Добавить кнопку сброса/отключения, чтобы можно было выключить сигнализацию вручную.
  • Подключить реле и отправлять SMS/уведомление на телефон (через GSM- или Wi‑Fi-модуль).
  • Использовать MOSFET-драйверы для управления мощными светодиодными лентами.

Мини-методология разработки (итеративный подход)

  1. Соберите и проверьте RGB-ленту (мигает, PWM работает).
  2. Соберите и проверьте HC-SR04 отдельно, убедитесь, что Serial показывает расстояние.
  3. Подключите пьезо и протестируйте простую тональность.
  4. Объедините всё в один скетч, сначала без звука — только свет по триггеру.
  5. Добавьте звук, проверяйте конфликт библиотек и питание.

Критерии приёмки

  • Arduino выводит адекватные значения расстояния в Serial.
  • При приближении на порог (≈50 см) RGB-лента начинает мигать.
  • Пьезо генерирует заметный звук при срабатывании.
  • Устройство не перегревается и блок питания держит нагрузку.

Тесты и сценарии проверки

  • Прохожу рукой перед датчиком — система должна сработать.
  • Отключаю питание ленты — Arduino продолжает работать и показывает расстояние.
  • Меняю порог в коде и проверяю, что срабатывание происходит при нужном расстоянии.

Сравнение датчиков (кратко)

  • HC-SR04: хорошо для измерения расстояний и визуальных экспериментов.
  • PIR: лучше для обнаружения живых существ и экономии энергии.

Короткий словарь терминов

  • PWM — широтно-импульсная модуляция для регулировки яркости.
  • PIR — пассивный инфракрасный датчик движения.
  • NewPing / NewTone — библиотеки Arduino для работы с ультразвуком и альтернативной функцией генерации тонов.

Быстрая памятка по безопасности

  • Используйте отдельный источник питания для ленты.
  • Всегда общая земля между устройствами.
  • Не оставляйте громкий сигнал включённым длительное время рядом с домашними животными.

Короткое резюме

  • Сначала тестируйте подсистемы по отдельности.
  • NewPing упрощает работу с HC-SR04, NewTone помогает избежать конфликтов с tone().
  • Обратите внимание на питание и тепловой режим при подключении светодиодных лент.

Если при сборке или компиляции возникают ошибки, опишите текст ошибки и окружение (плата Arduino, версия IDE, установленные библиотеки), и я помогу диагностировать проблему.

Image credit: Fire Alarm via Flickr

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Nearby Share на Android — настройка и использование
Android.

Nearby Share на Android — настройка и использование

Менеджер паролей на Android: автозаполнение
Безопасность

Менеджер паролей на Android: автозаполнение

Восстановление пароля Gmail — пошаговое руководство
Электронная почта

Восстановление пароля Gmail — пошаговое руководство

Найти и изменить пароль Wi‑Fi в Windows 10
Сеть

Найти и изменить пароль Wi‑Fi в Windows 10

Алиасы в Gmail: создание, настройка и безопасность
Email

Алиасы в Gmail: создание, настройка и безопасность

Восстановление доступа к аккаунту Google
Безопасность

Восстановление доступа к аккаунту Google