Подключение инфракрасного датчика к Raspberry Pi

Как мы знаем, Raspberry Pi является "великолепной" платформой разработки различных электронных систем. В отличие от других подобных платформ ее отличает высокая производительность, основанная на использовании микропроцессора с архитектурой ARM. Также она очень удобна для создания различных проектов тематики интернета вещей (Internet of Things, IoT) благодаря встроенному Wi-Fi.

Внешний вид подключения инфракрасного датчика к плате Raspberry Pi

В данной статье мы рассмотрим подключение инфракрасного датчика к плате Raspberry Pi. Подобные датчики находят широкое применение в робототехнике, например, роботах, движущихся вдоль линии или разнообразных счетчиках посетителей. Инфракрасные датчики способны обнаруживать наличие предмета впереди них, а также отличать белый цвет от черного.

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

Необходимые компоненты

  1. Плата Raspberry Pi (купить на AliExpress).
  2. Модуль инфракрасного датчика (купить на AliExpress).
  3. Светодиоды зеленого и красного цвета (купить на AliExpress).
  4. Макетная плата.
  5. Соединительные провода.

Модуль инфракрасного датчика

Инфракрасные датчики (IR sensors) представляют собой устройства, способные обнаруживать объекты перед ними. При наличии объекта перед ними они формируют напряжение 3.3V на своем выходе, при отсутствии объекта на их выход подается напряжение 0V. Эти свойства датчика обеспечиваются благодаря наличию в нем инфракрасной "пары" – передатчика и приемника. Инфракрасный передатчик (IR LED) испускает инфракрасные лучи, которые отражаются от объекта (если он есть) и принимаются инфракрасным приемником (фотодиодом). Сигнал с выхода фотодиода усиливается операционным усилителем (например, LM358). Внешний вид инфракрасного датчика показан на следующем рисунке.

Внешний вид модуля инфракрасного датчика

У инфракрасного датчика всего 3 контакта: 5V, Gnd и Out. В нашем проекте он будет запитываться от контакта 5V платы Raspberry Pi, а его выход будет подключаться к контакту GPIO14 платы. Потенциометр в составе модуля инфракрасного датчика используется для регулировки диапазона работы датчика.

Схема проекта

Схема подключения инфракрасного датчика к плате Raspberry Pi представлена на следующем рисунке.

Схема подключения инфракрасного датчика к плате Raspberry Pi

Питание и земля инфракрасного датчика подключены к контактам 5V и земли платы Raspberry Pi, а выходной контакт датчика подключен к контакту GPIO14 платы. Для индикации состояния проекта мы использовали светодиоды красного и зеленого цвета, подключенные к контактам GPIO3 и GPIO2 платы Raspberry Pi.

Поскольку контакты ввода/вывода платы Raspberry Pi работают с напряжениями 3.3V, то использование резистора для ограничения тока в данном случае не является обязательным. Но, тем не менее, желательно добавить резистор сопротивлением 470 Ом между землей и светодиодами.

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

Объяснение программы для Raspberry Pi

Существует несколько различных способов программирования платы Raspberry Pi – в этом проекте мы использовали Python 3 IDE как наиболее распространенный вариант. Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты. Подробнее про использование языка программирования Python в плате Raspberry Pi можно прочитать в статье про мигание светодиода с помощью данной платы.

В программе нам первым делом необходимо подключить (импортировать) библиотеку для работы с контактами ввода/вывода. Также мы импортируем эту библиотеку RPi.GPIO под именем “IO” (то есть переименовываем ее для использования в программе), то есть далее в программе всегда, когда мы захотим обратиться к контактам ввода/вывода, мы будем использовать слово ‘IO’.

Иногда контакты ввода/вывода (GPIO pins), которые мы собираемся использовать в программе, могут выполнять другие функции. В этом случае во время исполнения программы мы будем получать предупреждения (warnings). Следующей командой мы укажем плате Raspberry Pi на то, чтобы она игнорировала эти предупреждения и продолжала исполнение программы.

Мы можем обращаться к контактам ввода/вывода (GPIO pins) платы Raspberry Pi используя либо номер контакта на плате, либо его функциональный номер. В представленной выше распиновке контактов ввода/вывода можно увидеть, к примеру, что обозначение GPIO26 соответствует контакту PIN 37. То есть в зависимости от того, какой способ обращения к контактам мы выбрали, мы можем обращаться к рассмотренному контакту либо по номеру ‘37’, либо по номеру ‘26’. В данном проекте мы выберем способ обращения к контактам по их функциональным номерам, поэтому используем следующую команду:

Далее мы сконфигурируем 3 контакта в качестве цифровых входов/выходов. С двух контактов мы будем управлять включением/выключением светодиодов, а на третьем контакте мы будем считывать поступающие от инфракрасного датчика сигналы.

Когда объекта перед инфракрасным датчиком нет, мы будем включать светодиод красного цвета и выключать светодиод зеленого цвета.

Если же объект близко к инфракрасному датчику, то мы будем включать светодиод зеленого цвета и выключать светодиод красного цвета.

С помощью команды "While 1:" мы будем формировать бесконечный цикл в программе.

Тестирование работы проекта

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

Внешний вид запущенной программы проекта

Если перед инфракрасным датчиком нет объекта, то должен гореть светодиод красного цвета как показано на следующем рисунке.

Горение в проекте светодиода красного цвета

При появлении объекта перед датчиком светодиод красного цвета должен гаснуть, а светодиод зеленого цвета – зажигаться.

Исходный код программы на Python

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
11 просмотров


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *