Давайте посмотрим, как использовать датчик луча разрыва в сценарии Python на Raspberry Pi! У меня было несколько из них на некоторое время, но, наконец, охватило, чтобы распаться в другой день.
Датчики луча разрыва определяют объекты, пересекающие свою линию «Vision», используя инфракрасные. Они приходят в две части:
- Эмиттер: испускает луч инфракрасного света. У него есть две провода – один для власти, другой для земли.
- Приемник: при указанном излучателе, получает луч инфракрасного элемента. У него есть три провода – один для мощности, один для земли, и третий используется для данных.
И эмиттер, и приемник должны быть подключены к источнику мощности 5 В (Adafruit, скажем, 3.3V также будет работать, но ожидает более короткий диапазон), и вы можете использовать тот же источник для обоих, если вы хотите. Оба также нуждаются в заземлении, но они не должны делиться одним.
Эмиттер и приемник работают вместе, чтобы, когда что-то проходит между ними, разбив инфракрасный луч, происходит событие, которое ваш код может забрать и использовать. Эти события обнаруживаются с помощью третьего провода на приемнике для подключения к PI PI PI GPIO на PI, установленном в качестве входа. Из перспективы настройки и кодирования датчики луча разрыва являются очень похожим входным входом в кнопку или магнитные дверные датчики I написано около Отказ
Эти датчики довольно дешевые, я получил мой из Adafruit ( Part Pare здесь ) за пару долларов каждый. Они продают их в различных размерах – в основном тем больше размер, тем дальше вы можете разместить их и все же ожидаю, что они будут работать. Я бы представил, что более крупные также действительно нуждаются в мощности 5 В, а не на 3,3 В, но я не пробовал их.
Я собираюсь использовать несколько этих датчиков в более крупном проекте в будущем. Для этого поста я просто пробежу, как проволочать один до PI и как написать базовый сценарий Python, который зажигает события всякий раз, когда датчик состояния изменяется.
Проводка
Я использовал макет для проволоки датчика к PI следующим образом:
- Красные провода на оба излучателе и приемнике подключены к 5В Power Pins на Pi.
- Черные провода на оба излучателе, так и на приемнике подключены к наземным контактам на PI.
- Белый провод на приемнике подключен к GPIO 17 на PI.
Программное обеспечение
Я написал простой сценарий Python, чтобы во всякий раз, когда изменяет состояние датчика …
Код разрушается на две части, настройки и обработку событий … сначала настроек:
- В строке 3 я устанавливаю PIN-код GPIO, к которому подключен провод данных получателя. Я использовал 17, любой доступный порт GPIO будет работать.
- В строке 11 GPIO установлен на режим нумерации Broadcom.
- Строка 12 настраивает GPIO 17, чтобы быть введенным, с включенным подтягивающим резистором. Если вы хотите узнать больше о настройке пинов GPIO с Python, Sparkfun имеет хорошее руководство Отказ
- Линия 13 сообщает модуль GPIO, который мы хотим запустить функцию
break_beam_callback
Всякий раз, когда государственные изменения GPIO 17. - Строка 15 останавливает программу из выхода, пока не сделаем с ней, ожидая, когда пользователь нажимает ввод.
- Если пользователь нажимает Enter, мы убираем ресурсы GPIO в строке 16 перед выходом.
Функция, которая обрабатывает события от датчика, называется break_beam_callback
и определяется в строке 5. Вот как это работает:
- Функция принимает параметр,
канал
, это не используется в этом случае, но требуется сделать его обратным вызовом для модуля GPIOadd_event_detect
. функция. Он содержит PIN-код PIN-кода GPIO, из которого произошло событие. - Линия 6 проверяет, если PIN 17 высокий или низкий.
- Если это так, строка 7 выполняет и сообщает, что луч был восстановлен (что-то, что ранее блокировало вид приемника эмиттера, теперь ушел).
- Если PIN 17 низкий, строка 9 выполняется и сообщает, что луч был сломан (что-то просто заблокировало вид приемника излучателя).
Это все, что есть к этому!
Демо время!
Вот быстрое демонстрационное видео, показывающее эту настройку в использовании для отчета, когда автомобиль проходит через датчик … Это то, что я хочу сделать больше в более крупном проекте, над которым я работаю, но больше на это позже!
Вы делаете что-нибудь интересное с PI и датчиками? Если это так, я хотел бы услышать об этом. Оставьте мне записку в комментариях ниже, или найди меня на Twitter Отказ
(Главное фото Дэвид Андерсон на Бессмысленно )
Оригинал: “https://dev.to/simonprickett/using-a-break-beam-sensor-with-python-and-raspberry-pi-402d”