Микроконтроллеры часто используются в коммерческих продуктах безопасности, таких как охранная сигнализация. Однако последнее может быть довольно дорогим. Так почему бы не создать самодельный будильник с помощью микроконтроллера Raspberry Pi Pico за 4 доллара?
В нем используется датчик PIR (пассивный инфракрасный), который используется во многих коммерческих системах сигнализации, для обнаружения присутствия злоумышленника. Он идеально подходит для того, чтобы поймать любого, кто крадется в вашу комнату или шныряет у вашего стола, или для защиты вашего хранилища печенья. Используя MicroPython, вы можете запрограммировать свой будильник так, чтобы он реагировал звуковым сигналом и мигалкой.
Чтобы построить сигнализацию, вам понадобится набор стандартных электронных компонентов.
Что вам понадобится:
Примечание. Если вам не нравится паять штекерные разъемы на Raspberry Pi Pico, можно купить Pico с уже прикрепленными разъемами.
Перед тем, как все подключать, посмотрите на нижнюю часть Pico, чтобы увидеть метки контактов.
В верхней части Pico вы также можете увидеть, как работает физическая нумерация контактов, от 1 до 40, против часовой стрелки слева от порта micro-USB.
На макетной плате вставьте штыревые разъемы Pico в отверстия на одном конце. Надавите на него с усилием, чтобы обеспечить хорошее соединение - он должен плотно прилегать. Затем используйте перемычки «female-to-male» для подключения к нему датчика PIR: контакт VCC должен быть подключен к VBUS 5 В Pico, цифровой выход - к GP28, а GND - к контакту GND (например, контакт 3), как показано на рисунке. Схема подключения ниже.
Подключите одну из шин заземления макетной платы (отмеченную синей линией) к другому контакту GND на Pico (например, физическому контакту 23, как здесь). Для проблескового маячка вставьте светодиод в макетную плату так, чтобы его ножки находились по обе стороны от центральной перегородки.
Затем более короткая ветвь (катод) должна быть подключена к той же шине заземления. Более длинная ножка (анод) светодиода должна быть подключена к выводу GP15 через резистор, чтобы ограничить количество электрического тока, проходящего через него, который в противном случае мог бы повредить светодиод или Pico.
Наконец, добавьте зуммер, чтобы издавать звуковой сигнал при срабатывании будильника. Поместите его ножки по обе стороны от центральной перегородки макетной платы и подключите более короткую ножку или черный провод к шине заземления, а более длинную ножку (иногда отмеченную на верхней части зуммера знаком «+») или красный провод к GP14.
Вам нужно будет установить MicroPython на Pico. Этот процесс включает четыре простых шага:
Хотя для MicroPython доступно множество программных IDE (интегрированных сред разработки), здесь мы будем использовать Thonny. Он уже предустановлен в ОС Raspberry Pi (если вы используете компьютер Raspberry Pi, подключенный к Pico), или его можно загрузить для любой компьютерной системы с официального сайта.
Подключив Pico к компьютеру, откройте Thonny. В правом нижнем углу окна Thonny вы увидите версию Python, которую вы используете в данный момент. Щелкните по нему и выберите MicroPython (Raspberry Pi Pico).
Теперь вы готовы запрограммировать охранную сигнализацию на Pico. Добавьте следующие строки кода на главную панель Thonny.
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)
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)
Здесь импортируйте машинные библиотеки и библиотеки utime в верхней части. Затем настройте объекты для PIR, светодиода и зуммера - подключенных к контактам GP28, GP15 и GP14 соответственно.
Обратите внимание, что PIR устанавливается как вход с параметром machine.Pin.IN, с параметром machine.Pin.PULL-DOWN, чтобы установить резистор его вывода Pico в понижающий режим; это означает, что он будет считаться нулевым, пока на него не будет подан электрический ток от срабатывающего пассивного инфракрасного датчика.
Внизу кода устанавливается IRQ (запрос прерывания) для запуска функции pir_handler, как только на входном контакте (GP28) обнаруживается сигнал от датчика PIR.
В самой функции, чтобы избежать повторного срабатывания в течение короткого времени, добавьте задержку в 100мс перед повторной проверкой значения pin-кода и, если оно ненулевое, вызовите сигнал тревоги. Затем он включает и выключает светодиод и зуммер, чтобы мигал свет и издавался звуковой сигнал.
Сохраните программу на свой Pico с соответствующим именем, например alarm.py. Запустите программу, и, когда вы машете рукой над датчиком PIR, должен прозвучать зуммер и быстро мигать светодиод.
Если будильник срабатывает слишком легко или не срабатывает совсем, возможно, вам придется отрегулировать чувствительность датчика PIR. У HC-SR501 есть два пластиковых винта - обычно с маркировкой Sx и Tx - прикрепленных к двум крошечным потенциометрам для регулировки его настроек.
Используя небольшую отвертку, вы можете повернуть винт Sx против часовой стрелки, чтобы увеличить его чувствительность (или наоборот). Вращение винта Tx изменяет время, в течение которого срабатывающий сигнал отправляется после обнаружения вторжения - мы сочли, что лучше всего повернуть его полностью против часовой стрелки, чтобы получить самую короткую задержку в 1 секунду.
По умолчанию PIR будет определять любое движение на 360° вокруг себя. Если вы хотите ограничить область обнаружения, попробуйте поместить ее в нижнюю часть картонной внутренней трубки от рулона туалетной бумаги и повернуть ее в нужном направлении.
Как только ваша охранная сигнализация сработает, как вам нравится, вы можете убрать ее со своего компьютера. Сохранив программу как main.py, вы можете затем отключить ее от компьютера и подключить стандартный мобильный блок питания к его порту micro-USB.
После этого Pico автоматически запустит программу main.py при включении. Поздравляем: теперь у вас есть мобильная охранная сигнализация, которую можно разместить где угодно.