- Модуль Raspberry Pi и джойстика:
- Необходимые компоненты:
- Принципиальная электрическая схема:
- Рабочее объяснение:
В этом сеансе мы собираемся подключить джойстик к Raspberry Pi. Джойстик в основном используется для различных игр. Хотя джойстики типа USB подключить легко, но сегодня мы собираемся подключить джойстик через контакты Raspberry Pi GPIO, во многих случаях это пригодится.
Модуль Raspberry Pi и джойстика:
Джойстики бывают разных форм и размеров. Типичный модуль джойстика показан на рисунке ниже. Этот модуль джойстика обычно обеспечивает аналоговые выходы, и выходное напряжение, обеспечиваемое этим модулем, постоянно меняется в соответствии с направлением, в котором мы его перемещаем. И мы можем узнать направление движения, интерпретируя эти изменения напряжения с помощью микроконтроллера. Ранее мы использовали микроконтроллер AVR с джойстиком.
Как видите, этот модуль джойстика имеет две оси. Это ось X и ось Y. Каждая ось JOY STICK крепится к потенциометру или горшку. Средние точки этих горшков вытесняются как Rx и Ry. Таким образом, Rx и Ry являются переменными точками для этих горшков. Когда джойстик находится в режиме ожидания, Rx и Ry действуют как делители напряжения.
Когда джойстик перемещается по горизонтальной оси, напряжение на выводе Rx изменяется. Аналогично, когда он перемещается по вертикальной оси, напряжение на выводе Ry изменяется. Итак, у нас есть четыре направления джойстика на двух выходах АЦП. Когда ручка перемещается, напряжение на каждом контакте повышается или понижается в зависимости от направления.
Как мы знаем, Raspberry Pi не имеет внутреннего механизма АЦП (аналого-цифрового преобразователя). Таким образом, этот модуль нельзя подключить напрямую к Pi. Мы будем использовать компараторы на базе операционных усилителей для проверки выходных напряжений. Эти операционные усилители подают сигналы на Raspberry Pi, а Pi переключает светодиоды в зависимости от сигналов. Здесь мы использовали четыре светодиода, чтобы указать движение джойстика в четырех направлениях. Посмотрите демонстрационное видео в конце.
Каждый из 17 контактов GPIO не может принимать напряжение выше +3,3 В, поэтому выходы операционного усилителя не могут быть выше 3,3 В. Поэтому мы выбрали операционный усилитель LM324, эта ИС имеет четырехъядерный операционный усилитель, который может работать при напряжении 3 В. С этой IC у нас есть подходящие выходы для выходов для наших контактов Raspberry pi GPIO. Узнайте больше о выводах GPIO Raspberry Pi здесь. Также ознакомьтесь с нашей серией руководств по Raspberry Pi вместе с некоторыми хорошими проектами IoT.
Необходимые компоненты:
Здесь мы используем Raspberry Pi 2 Model B с Raspbian Jessie OS. Все основные требования к оборудованию и программному обеспечению обсуждаются ранее, вы можете найти их во введении Raspberry Pi и мигании светодиода Raspberry PI, чтобы начать работу, кроме того, что нам нужно:
- Конденсатор 1000 мкФ
- Модуль джойстика
- LM324 ИС операционного усилителя
- Резистор 1КОм (12 шт.)
- LED (4 шт.)
- Резистор 2,2 кОм (4 шт.)
Принципиальная электрическая схема:
Внутри LM324 IC есть четыре компаратора OP-AMP для определения четырех направлений джойстика. Ниже приведена схема микросхемы LM324 из ее таблицы данных.
Подключения, которые выполняются для сопряжения модуля джойстика с Raspberry Pi, показаны на принципиальной схеме ниже. U1: A, U1: B, U1: C, U1: D указывает четыре компаратора внутри LM324. Мы показали каждый компаратор на принципиальной схеме с соответствующим номером контакта. микросхемы LM324.
Рабочее объяснение:
Для обнаружения движения джойстика по оси Y у нас есть OP-AMP1 или U1: A и OP-AMP2 или U1: B, а для обнаружения движения джойстика по оси X у нас есть OP-AMP3 или U1.: C и OP-AMP4 или U1: D.
OP-AMP1 обнаруживает движение джойстика вниз по оси Y:
На отрицательный вывод компаратора U1: A подается напряжение 2,3 В (с использованием схемы делителя напряжения на 1 кОм и 2,2 кОм), а положительный вывод подключается к Ry. При перемещении джойстика вниз по оси Y напряжение Ry увеличивается. Когда это напряжение поднимается выше 2,3 В, OP-AMP выдает + 3,3 В на свой выходной контакт. Этот ВЫСОКИЙ логический выход OP-AMP будет обнаружен Raspberry Pi, и Pi ответит переключением светодиода.
OP-AMP2 обнаруживает движение джойстика вверх по оси Y:
На отрицательный вывод компаратора U1: B подается напряжение 1,0 В (с использованием схемы делителя напряжения на 2,2 кОм и 1 кОм), а положительный вывод подключается к Ry. При перемещении джойстика вверх по оси Y напряжение Ry уменьшается. Как только это напряжение опускается ниже 1,0 В, на выходе OP-AMP становится низкий уровень. Этот логический выход LOW OP-AMP будет обнаружен Raspberry Pi, и Pi ответит переключением светодиода.
OP-AMP3 определяет перемещение джойстика влево по оси X:
На отрицательный вывод компаратора U1: C подается 2,3 В (с использованием схемы делителя напряжения на 1 кОм и 2,2 кОм), а положительный вывод подключается к Rx. При перемещении джойстика влево по оси x напряжение Rx увеличивается. Когда это напряжение поднимается выше 2,3 В, OP-AMP выдает + 3,3 В на свой выходной контакт. Этот ВЫСОКИЙ логический выход OP-AMP будет обнаружен Raspberry Pi, и Pi ответит переключением светодиода.
OP-AMP4 определяет правостороннее движение джойстика по оси X:
На отрицательный вывод компаратора U1: 4 подается напряжение 1,0 В (с использованием схемы делителя напряжения на 2,2 кОм и 1 кОм), а положительный вывод подключается к Rx. При перемещении джойстика вправо по оси x напряжение Rx уменьшается. Как только это напряжение опускается ниже 1,0 В, на выходе OP-AMP становится низкий уровень. Этот логический выход LOW OP-AMP будет обнаружен Raspberry Pi, и Pi ответит переключением светодиода.
Таким образом, все четыре логики, определяющие четыре направления джойстика, подключаются к Raspberry Pi. Raspberry Pi принимает выходы этих компараторов в качестве входов и соответствующим образом реагирует, переключая светодиоды. Ниже приведены результаты, показанные на терминале Raspberry Pi, поскольку мы также распечатали направление джойстика на терминале, используя наш код Python.
Код и видео на Python приведены ниже. Код прост и понятен по комментариям, данным в коде.