Самодельная сигнализация на 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 разъёма.
На макетной плате вставьте Pico так, чтобы его пины оказались в отверстиях с одного торца. Плотно прижмите плату, чтобы обеспечить надёжный контакт. Затем с помощью перемычек подключите PIR‑модуль к Pico так: VCC PIR → 5V VBUS на Pico, OUT → GP28, GND → GND. Ниже — реальная схема подключения для наглядности.
Соедините шинку GND макетной платы (обычно отмеченную синей линией) с другим контактом GND на Pico (например, физический контакт 23). Для светодиода вставьте его ножки по разные стороны центрального разделителя макетной платы: короткая ножка (катод) идёт на шину заземления, длинная (анод) — через резистор 330 Ом к GP15. Резистор ограничит ток и защитит светодиод и Pico.
Пьезозуммер поставьте аналогично: короткая ножка или чёрный провод на GND, длинная ножка или красный провод (часто помечен ‘+’) на GP14.
Important: если ваш зуммер потребляет больше тока, чем способен дать вывод Pico, используйте транзистор (NPN или MOSFET) и отдельное питание для зуммера, чтобы не перегружать плату.
Программирование сигнализации
Нужно установить MicroPython на Pico и загрузить программу. Последовательность простая:
- Скачайте MicroPython для Raspberry Pi Pico с официального сайта Raspberry Pi.
- Подключите Pico к компьютеру через micro‑USB, удерживая кнопку BOOTSEL.
- Подождите, пока Pico появится как внешний накопитель.
- Перетащите файл .uf2 MicroPython на Pico — плата автоматически перезагрузится и установит интерпретатор.
Для редактирования и загрузки кода мы используем Thonny — простой IDE, который уже предустановлен в Raspberry Pi OS или доступен для Windows/macOS/Linux.
Скачайте Thonny и запустите. Подключив Pico, в правом нижнем углу окна Thonny выберите интерпретатор MicroPython (Raspberry Pi Pico).
Добавьте в главное окно 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: перед установкой в постоянное место убедитесь, что датчик надежно закреплён и исключены возможные ложные срабатывания из‑за бытовых факторов (сквозняк, нагревательные приборы, животные).
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone