У цій сесії ми збираємося взаємодіяти джойстик з Raspberry Pi. Джойстик в основному використовується для гри в різні ігри. Хоча джойстики типу USB легко підключити, але сьогодні ми збираємось підключити джойстик через шпильки Raspberry Pi GPIO, це стане в нагоді у багатьох випадках.
Модуль Raspberry Pi та джойстик:
Джойстики доступні різних форм і розмірів. Типовий модуль джойстика показаний на малюнку нижче. Цей модуль джойстика зазвичай забезпечує аналогові виходи, а вихідні напруги, що забезпечуються цим модулем, постійно змінюються відповідно до напрямку, в якому ми його рухаємо. І ми можемо отримати напрямок руху, інтерпретуючи ці зміни напруги за допомогою якогось мікроконтролера. Раніше ми використовували мікроконтролер AVR з джойстиком.
Цей модуль джойстика має дві осі, як ви можете бачити. Вони бувають віссю X та Y. Кожна вісь JOY STICK прикріплена до потенціометра або каструлі. Середні точки цих горщиків вибиваються як Rx та Ry. Отже, Rx та Ry є змінними точками до цих горщиків. Коли джойстик знаходиться в режимі очікування, Rx та Ry діють як дільник напруги.
Коли джойстик переміщується вздовж горизонтальної осі, напруга на штифті Rx змінюється. Подібним чином, коли він переміщується по вертикальній осі, напруга на штифті Ry змінюється. Отже, ми маємо чотири напрямки джойстика на двох виходах АЦП. Коли ручку переміщують, напруга на кожному штифті падає високо або низько залежно від напрямку.
Як ми знаємо, Raspberry Pi не має внутрішнього механізму АЦП (аналого-цифрового перетворювача). Отже, цей модуль не можна підключити безпосередньо до Pi. Ми будемо використовувати компаратори на основі Op-amp для перевірки вихідних напруг. Ці OP-підсилювачі подають сигнали на Raspberry Pi, а Pi перемикає світлодіоди залежно від сигналів. Тут ми використали чотири світлодіоди для позначення руху джойстика в чотирьох напрямках. Перевірте демонстраційне відео в кінці.
Кожен з 17 контактів GPIO не може приймати напругу вище + 3,3 В, тому виходи Op-підсилювача не можуть бути вище 3,3 В. Тому ми вибрали операційний підсилювач LM324, цей мікросхем має чотириканальний операційний підсилювач, який може працювати на 3В. За допомогою цієї мікросхеми ми маємо відповідні виходи для виходів для наших шпильок Raspberry pi GPIO. Дізнайтеся більше про GPIO-шпильки Raspberry Pi тут. Також перегляньте наші навчальні серії Raspberry Pi разом із декількома хорошими проектами IoT.
Необхідні компоненти:
Тут ми використовуємо Raspberry Pi 2 Model B з ОС Raspbian Jessie. Усі основні вимоги до обладнання та програмного забезпечення обговорювались раніше, ви можете переглянути їх у Вступі про Raspberry Pi та Світлодіодний індикатор Raspberry PI для початку, крім того, що нам потрібно:
- Конденсатор 1000 мкФ
- Модуль джойстика
- LM324 Op-amp IC
- Резистор 1 кОм (12 штук)
- Світлодіодні (4 штуки)
- Резистор 2,2 кОм (4 штуки)
Кругова діаграма:
Всередині мікросхеми LM324 IC є чотири компаратори OP-AMP для виявлення чотирьох напрямків джойстика. Нижче наведена схема LM324 IC з його таблиці.
Підключення, які виконуються для взаємодії модуля джойстика з Raspberry Pi, показані на схемі нижче. U1: A, U1: B, U1: C, U1: D вказує на чотири компаратори всередині LM324. Ми показали кожен компаратор на принциповій схемі з відповідним контактом №. з LM324 IC.
Робоче пояснення:
Для виявлення руху джойстика вздовж осі 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 В (за допомогою схеми дільника напруги на 1K та 2,2K), а позитивний термінал підключений до 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 стає низьким. Цей НИЗЬКИЙ логічний вихід OP-AMP буде виявлений Raspberry Pi, а Pi реагує перемиканням світлодіода.
OP-AMP3 визначає рух лівого боку джойстика вздовж осі X:
Негативний висновок компаратора U1: C забезпечений 2,3 В (з використанням схеми дільника напруги на 1K та 2,2K), а позитивний висновок підключений до Rx. При переміщенні джойстика, що залишається вздовж його осі х, напруга Rx збільшується. Як тільки ця напруга перевищує 2,3 В, OP-AMP забезпечує вихід + 3,3 В на своєму вихідному контакті. Цей ВИСОКИЙ логічний вихід OP-AMP буде виявлений Raspberry Pi, а Pi реагує, перемикаючи світлодіод.
OP-AMP4 виявляє рух джойстика вправо вздовж осі X:
Негативний висновок компаратора U1: 4 забезпечений 1,0 В (за допомогою схеми дільника напруги на 2,2 К та 1 К), а позитивний висновок підключений до Rx. При русі джойстика вправо вздовж його осі х, напруга Rx зменшується. Як тільки ця напруга опускається нижче 1,0 В, вихід OP-AMP стає низьким. Цей НИЗЬКИЙ логічний вихід OP-AMP буде виявлений Raspberry Pi, а Pi реагує перемиканням світлодіода.
Таким чином усі чотири логіки, які визначають чотири напрямки джойстика, підключаються до Raspberry Pi. Raspberry Pi приймає виходи цих компараторів як входи і відповідно реагує, перемикаючи світлодіоди. Нижче наведені результати, показані на терміналі Raspberry Pi, оскільки ми також надрукували напрямок джойстика на терміналі, використовуючи наш код Python.
Код і відео Python наведено нижче. Код є простим і зрозумілим за допомогою коментарів, наведених у коді.