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

Самодельная сигнализация на Raspberry Pi Pico

8 min read Hardware Обновлено 31 Dec 2025
Самодельная сигнализация на Raspberry Pi Pico
Самодельная сигнализация на Raspberry Pi Pico

Изображение пиктограммы сигнализации

Микроконтроллеры часто используются в коммерческих системах безопасности, например в охранных сигнализациях. Готовые решения могут быть дорогими, но простую сигнализацию можно собрать самостоятельно за небольшие деньги — на примере недорогого Raspberry Pi Pico. В этой инструкции показано, как на его основе сделать мобильную охранную систему на базе PIR (пасивного инфракрасного) датчика: он фиксирует присутствие человека и запускает мигание светодиода и звуковой сигнал. Код на MicroPython делает проект доступным для начинающих.

Что потребуется

  • Raspberry Pi Pico с припаянными мужскими пинами (male headers)
  • Макетная плата (breadboard)
  • LED (любой цвет)
  • Резистор 330 Ом
  • Активный пьезозуммер (buzzer)
  • PIR‑модуль HC‑SR501
  • 4 шт. перемычек «мама‑мама» (M2M)
  • 3 шт. перемычек «мама‑папа» (M2F)

Примечание: если вы не хотите паять пины к Pico, можно купить модель с уже установленными заголовками.

Связано: краткое знакомство с Raspberry Pi Pico — компактной и дешёвой платой для проектов.

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

Перед подключением посмотрите на маркировку контактов на нижней стороне Pico и на нумерацию физических контактов на верхней стороне платы — они нумеруются от 1 до 40 против часовой стрелки от левого края micro‑USB разъёма.

Маркировка контактов GPIO на плате Pi Pico

Вид сверху на плату Pi Pico

На макетной плате вставьте Pico так, чтобы его пины оказались в отверстиях с одного торца. Плотно прижмите плату, чтобы обеспечить надёжный контакт. Затем с помощью перемычек подключите PIR‑модуль к Pico так: VCC PIR → 5V VBUS на Pico, OUT → GP28, GND → GND. Ниже — реальная схема подключения для наглядности.

Схема подключения сигнализации на Pico

Соедините шинку GND макетной платы (обычно отмеченную синей линией) с другим контактом GND на Pico (например, физический контакт 23). Для светодиода вставьте его ножки по разные стороны центрального разделителя макетной платы: короткая ножка (катод) идёт на шину заземления, длинная (анод) — через резистор 330 Ом к GP15. Резистор ограничит ток и защитит светодиод и Pico.

Пьезозуммер поставьте аналогично: короткая ножка или чёрный провод на GND, длинная ножка или красный провод (часто помечен ‘+’) на GP14.

Important: если ваш зуммер потребляет больше тока, чем способен дать вывод Pico, используйте транзистор (NPN или MOSFET) и отдельное питание для зуммера, чтобы не перегружать плату.

Программирование сигнализации

Нужно установить MicroPython на Pico и загрузить программу. Последовательность простая:

  1. Скачайте MicroPython для Raspberry Pi Pico с официального сайта Raspberry Pi.
  2. Подключите Pico к компьютеру через micro‑USB, удерживая кнопку BOOTSEL.
  3. Подождите, пока Pico появится как внешний накопитель.
  4. Перетащите файл .uf2 MicroPython на Pico — плата автоматически перезагрузится и установит интерпретатор.

Для редактирования и загрузки кода мы используем Thonny — простой IDE, который уже предустановлен в Raspberry Pi OS или доступен для Windows/macOS/Linux.

Скачайте Thonny и запустите. Подключив Pico, в правом нижнем углу окна Thonny выберите интерпретатор MicroPython (Raspberry Pi Pico).

Меню выбора интерпретатора в Thonny

Добавьте в главное окно Thonny следующий код (сохраните как alarm.py или main.py для автономной работы):

import machine
import utime

# Настройка пинов
pir = machine.Pin(28, machine.Pin.IN, machine.Pin.PULL_DOWN)
led = machine.Pin(15, machine.Pin.OUT)
buzzer = machine.Pin(14, machine.Pin.OUT)

# Обработчик прерывания от PIR
def pir_handler(pin):
    # небольшая задержка для дебаунса и исключения ложных срабатываний
    utime.sleep_ms(100)
    if pin.value():
        print("Motion detected. Intruder alert!")
        # мигаем и подаём звуковой сигнал в цикле
        for i in range(50):
            led.toggle()
            buzzer.toggle()
            utime.sleep_ms(100)

# Регистрируем прерывание на фронт сигнала
pir.irq(trigger=machine.Pin.IRQ_RISING, handler=pir_handler)

# Держим скрипт живым (в некоторых средах это не обязательно)
while True:
    utime.sleep(1)

Пояснения к коду: мы импортируем модули machine и utime, создаём объекты для PIR, светодиода и зуммера, назначая соответствующие GPIO (GP28, GP15 и GP14). Для PIR указан режим PULL_DOWN — это подтяжка к нулю, чтобы вход был определён по умолчанию. Далее настраиваем прерывание IRQ_RISING (срабатывание на переходе от 0 к 1), которое вызывает функцию pir_handler. В ней мы ставим маленькую паузу 100 мс, чтобы снизить вероятность дребезга и ложных срабатываний, затем при активном сигнале включаем серию миганий и писков.

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

  • При сохранении кода в alarm.py и запуске на Pico при движении перед PIR загорается/мигает светодиод и слышен зуммер.
  • Система не срабатывает при отсутствии движения и не зависает спустя минуту работы.
  • При сохранении кода как main.py и подаче питания от пауэрбанка программа работает автоматически после включения.

Настройка чувствительности PIR и времени срабатывания

HC‑SR501 оснащён двумя маленькими подстроечными резисторами (обычно обозначенные как Sx и Tx). Один — для регулировки чувствительности, второй — для установки длительности выдаваемого сигнала.

  • Поверните Sx против часовой стрелки, чтобы увеличить чувствительность; по часовой — уменьшить.
  • Поверните Tx, чтобы изменить длительность сигнала. При полном повороте против часовой стрелки вы получите минимальную задержку — примерно 1 секунду (в зависимости от модуля).

Модуль в базовой конфигурации реагирует примерно в радиусе 360°; чтобы ограничить зону обзора, можно поместить модуль в картонную втулку от бумажного полотенца или туалетной бумаги и направить её в нужную сторону.

Notes: фермы PIR‑модулей отличаются по качеству. Если ваш модуль нестабилен, попробуйте другой экземпляр или увеличить задержку в коде для борьбы с ложными тревогами.

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

  • Нет реакции при движении: проверьте питание VBUS (5 В) на Pico и что PIR подключён к правильному контакту GP28; убедитесь, что используете правильный режим подтяжки (PULL_DOWN).
  • Зуммер не звучит: проверьте полярность и тип зуммера (активный vs пассивный). Для пассивного зуммера нужен генератор звука (PWM), для активного — один цифровой сигнал.
  • Светодиод горит постоянно: проверьте соединения, отсутствие короткого замыкания на выводах и правильную настройку пинов в коде.
  • Частые ложные срабатывания: уменьшите чувствительность на модуле (Sx), добавьте программное подавление повторных срабатываний (например, блокировку на 1–2 секунды после первого обнаружения).

Чеклист для тестирования

  • Правильная распиновка VCC, GND, OUT на PIR
  • LED через резистор к GP15
  • Buzzer к GP14 с учётом тока
  • MicroPython установлен на Pico
  • Thonny подключён и выбран интерпретатор MicroPython
  • Прерывание от PIR работает (см. вывод в консоли Thonny)

Питаение, автономность и переносимость

Чтобы сделать сигнализацию мобильной, сохраните программу как main.py и подключите пауэрбанк к micro‑USB порта Pico. Pico автоматически запустит main.py при включении питания.

Советы по выбору пауэрбанка:

  • Выбирайте модели без автоматического отключения при низком токе (некоторые пауэрбанки «усыпляют» устройство при малом потреблении). Для стабильной работы подойдёт пауэрбанк с функцией постоянного режима или с достаточной минимальной нагрузкой.
  • Если используете дополнительные датчики или активные модули, обратите внимание на суммарный ток и при необходимости используйте внешний источник питания для периферии.

Безопасность при работе с питанием

  • Не подавайте на выводы Pico напряжение выше допустимого. VBUS — 5 В, но GPIO не должны видеть более 3.3 В.
  • При подключении внешних устройств, потребляющих заметный ток, применяйте транзисторные ключи или драйверы.

Корпус, монтаж и эстетика

Для домашнего использования удобно установить Pico и компоненты в небольшой пластиковый или 3D‑напечатанный корпус. Обеспечьте вентиляционные отверстия для PIR и отверстия для звука зуммера. Фиксация модулей на панели можно выполнить с помощью винтов, двустороннего скотча или держателей‑панелей.

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

  • Добавить журнал событий на SD‑карту или в локальный файл: логирование с отметкой времени поможет понять, когда и как часто срабатывает система.
  • Отправка уведомлений: при срабатывании PIR можно отправлять PUSH/HTTP‑запрос на сервер или на телефон через Wi‑Fi модуль (ESP32) или использовать Bluetooth Low Energy для локальных уведомлений.
  • Управление питанием: добавить режим сна и пробуждения для экономии энергии, если устройство должно работать долго от батареи.
  • Использовать внешние транзисторы или драйверы для управления более мощными сиренами или дополнительными нагрузками.

Тесты и критерии приёмки

  • Тест 1: При медленном прохождении перед PIR система должна срабатывать и показывать событие в консоли.
  • Тест 2: При быстром махе рукой в зоне покрытия — должно тоже срабатывать (короткая серия).
  • Тест 3: Оставить систему включённой на 24 часа — проверить стабильность и отсутствие утечек памяти/зависаний.
  • Тест 4: Сохранить как main.py и подключить к пауэрбанку — устройство должно автоматически запускаться после подачи питания.

Критерии приёмки — совпадают с результатами тестов: надёжные срабатывания при движении, отсутствие ложных срабатываний в покое, корректный автоматический запуск от пауэрбанка.

Короткий глоссарий

  • PIR: пассивный инфракрасный датчик движения, фиксирует изменение теплового фона.
  • GPxx: обозначение GPIO‑пина на Raspberry Pi Pico.
  • VBUS: питание 5 В, доступное на Pico при подключении USB.
  • IRQ: прерывание — механизм вызова функции при наступлении события на входе.

Факт‑бокс

  • PIR HC‑SR501 имеет подстроечные регуляторы чувствительности и длительности сигнала.
  • Для минимальной задержки после срабатывания обычно требуется повернуть регулятор Tx в крайнее положение (примерно 1 секунда).
  • Код использует аппаратные прерывания для мгновенной реакции на событие.

Часто задаваемые вопросы

Q: Можно ли использовать другой PIR‑модуль?
A: Да, при условии совместимого уровня сигналов (3.3–5 В) и возможности подключить OUT к цифровому входу Pico.

Q: Что делать, если пауэрбанк отключает питание при простое?
A: Выберите пауэрбанк с режимом постоянного питания или добавьте нагрузку (резистор/мигающий индикатор), чтобы поддерживать минимальный ток.

Q: Нужно ли ставить защиту на GPIO?
A: При стандартных подключениях защиты не требуется, но при подаче внешних напряжений выше 3.3 В или при возможных выбросах — используйте делители напряжения или диоды защиты.

Итог

Самодельная сигнализация на Raspberry Pi Pico — это недорогой и наглядный проект для изучения работы с GPIO, прерываниями и внешними датчиками. Она удобна как стационарное устройство для комнаты, так и как мобильный вариант в корпусе на пауэрбанке. По желанию систему можно расширять: вести лог, отправлять уведомления или подключать дополнительные датчики.

Important: перед установкой в постоянное место убедитесь, что датчик надежно закреплён и исключены возможные ложные срабатывания из‑за бытовых факторов (сквозняк, нагревательные приборы, животные).

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

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

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство