Raspberry Pi. Урок 12. Сенсоры движения.

В этом уроке Вы узнаете, как использовать цифровые выводы GPIO-коннектора с датчиком открывания двери и пассивным инфракрасным датчиком движения.

learn_raspberry_pi_overview.jpg

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

Детали

В этом проекте Вам понадобятся:

learn_raspberry_pi_pirsensor_MED.jpg

Пассивный инфракрасный датчик 

learn_raspberry_pi_magnetdoorswitch_MED.jpg

Магнитный датчик открывания двери

learn_raspberry_pi_cobbler.jpg

Pi Cobbler

learn_raspberry_pi_breadboard_half_web.jpg

Макетная плата размера 0,5

learn_raspberry_pi_jumpers_web.jpg

Набор джамперов

learn_raspberry_pi_pi.jpg

Raspberry Pi

Аппаратное обеспечение

Мы собираемся подключить оба сенсора к Raspberry Pi одновременно. Ни одному из сенсоров не требуются дополнительные компоненты.

learn_raspberry_pi_breadboard.png

У пассивного инфракрасного сенсора есть сокет и провод. Убедитесь в том, что сокет правильно расположен (как на картинке ниже) и что красный провод подключен к 5В, черный к GND, а желтый — к 18 на Cobbler’е.

learn_raspberry_pi_pir_closeup.jpg

Хотя пассивному инфракрасному сенсору требуется 5В питания, он совместим и с 3,3В Pi, поэтому его можно подключить напрямую к GPIO.

В дверном переключателе есть так называемый язычковый переключатель. Два контакта находятся внутри стеклянной трубки, которая заключена в пластик. Когда магнит (другой белый блок) находится рядом с язычковым переключателем, контакты притягиваются и переключатель закрывается. Поскольку это всего лишь переключатель, провода могут соединяться в любом порядке.

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

Программное обеспечение

Программа к этому проекту просто выдает сообщение каждый раз, когда фиксируется движение или когда магнит убирается от двери.

Программа использует библиотеку Rpi.GPIO. Смотрите Урок 4.

import time

import RPi.GPIO as io

io.setmode(io.BCM)

 

pir_pin = 18

door_pin = 23

 

io.setup(pir_pin, io.IN) # activate input

io.setup(door_pin, io.IN, pull_up_down=io.PUD_UP) # activate input with PullUp

 

while True:

if io.input(pir_pin):

print(«PIR ALARM!»)

if io.input(door_pin):

print(«DOOR ALARM!»)

time.sleep(0.5)

Программа задает pir_pin как обычный вывод, потому что пассивный инфракрасный сенсор имеет цифровой вывод 3,3В или 0В, в отличии от door_pin. Переключатель не генерирует напряжение для цифрового ввода. Таким образом, цифровой ввод использует дополнительный аругмент (pull_up_down=io.PUD_UP). Это активирует внутренний резистор, который задает ввод как HIGH (поднятый), разве что что-то сильнее (например переключатель присоединенный к GND) толкнет его в позицию LOW.

Затем цикл программы считывает каждый ввод по очереди и выдает соответствующее сообщение. Помните, что предупреждение переключателя двери активируется, когда магнит убирается от сенсора, а не наоборот.

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

Есть множество способов получить результат, как на картинке ниже. Наверное, самый простой — подключить Raspberry Pi используя SSH (смотрите Урок 6) открыть редактор и ввести команду:

nano switches.py

Затем сохраните файл (CTRL-x).

learn_raspberry_pi_ssh_edit.png

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

Запустите программу от имени администратора используя команду:

sudo python switches.py

Вы увидите трассировку в терминале, когда Вы двигаете магнит или открываете пассивный инфракрасный датчик.