이 세션에서는 Raspberry Pi와 조이스틱 을 인터페이스 할 것 입니다. 조이스틱은 주로 다양한 게임을하는 데 사용됩니다. USB 유형 조이스틱은 연결하기 쉽지만 오늘은 Raspberry Pi GPIO 핀을 통해 조이스틱 을 연결할 것입니다. 이는 많은 경우에 유용합니다.
Raspberry Pi 및 조이스틱 모듈:
조이스틱 은 다양한 모양과 크기로 제공됩니다. 일반적인 조이스틱 모듈 은 아래 그림과 같습니다. 이 조이스틱 모듈은 일반적으로 아날로그 출력을 제공하며이 모듈에서 제공하는 출력 전압은 이동 방향에 따라 계속 변경됩니다. 그리고 마이크로 컨트롤러를 사용하여 이러한 전압 변화를 해석함으로써 움직임의 방향을 알 수 있습니다. 이전에는 AVR 마이크로 컨트롤러와 조이스틱을 사용했습니다.
이 조이스틱 모듈에는 보시다시피 두 개의 축이 있습니다. X 축과 Y 축입니다. JOY STICK의 각 축은 전위차계 또는 냄비에 장착됩니다. 이 팟의 중간 지점은 Rx와 Ry로 쫓겨납니다. 따라서 Rx와 Ry는이 팟에 대한 가변 포인트입니다. 조이스틱이 대기 상태 일 때 Rx와 Ry는 전압 분배기 역할을합니다.
조이스틱을 수평 축을 따라 움직이면 Rx 핀의 전압이 변경됩니다. 마찬가지로 수직 축을 따라 이동하면 Ry 핀의 전압이 변경됩니다. 따라서 2 개의 ADC 출력에 4 개의 조이스틱 방향이 있습니다. 스틱을 움직이면 각 핀의 전압이 방향에 따라 높거나 낮습니다.
아시다시피 Raspberry Pi에는 내부 ADC (Analog to Digital Converter) 메커니즘이 없습니다. 따라서이 모듈은 Pi에 직접 연결할 수 없습니다. Op-amp 기반 비교기를 사용하여 전압 출력을 확인합니다. 이 OP-Amp는 Raspberry Pi에 신호를 제공하고 Pi는 신호에 따라 LED를 토글합니다. 여기에서는 4 개의 LED를 사용하여 4 개의 방향으로 조이스틱의 움직임을 표시했습니다. 마지막에 데모 비디오 를 확인하십시오.
17 개의 GPIO 핀 각각은 + 3.3V보다 높은 전압을 가질 수 없으므로 연산 증폭기 출력은 3.3V보다 높을 수 없습니다. 따라서 우리는 연산 증폭기 LM324를 선택 했으며이 IC에는 3V에서 작동 할 수있는 쿼드 연산 증폭기가 있습니다. 이 IC를 사용하면 Raspberry pi GPIO 핀의 출력에 적합한 출력이 있습니다. 여기에서 Raspberry Pi의 GPIO 핀에 대해 자세히 알아보십시오. 또한 좋은 IoT 프로젝트와 함께 Raspberry Pi 튜토리얼 시리즈를 확인하십시오.
필요한 구성 요소:
여기 에서는 Raspbian Jessie OS와 함께 Raspberry Pi 2 Model B를 사용하고 있습니다. 모든 기본 하드웨어 및 소프트웨어 요구 사항은 이전에 논의되었으며, 시작하려면 Raspberry Pi 소개 및 Raspberry PI LED Blinking에서 찾아 볼 수 있습니다.
- 1000µF 커패시터
- 조이스틱 모듈
- LM324 연산 증폭기 IC
- 1KΩ 저항기 (12 개)
- LED (4 개)
- 2.2KΩ 저항 (4 개)
회로도:
조이스틱의 네 방향을 감지하기 위해 LM324 IC 내부에 네 개의 OP-AMP 비교기가 있습니다. 아래는 데이터 시트 의 LM324 IC 다이어그램입니다.
Raspberry Pi와 조이스틱 모듈 을 인터페이싱 하기 위해 수행되는 연결은 아래 회로도에 나와 있습니다. U1: A, U1: B, U1: C, U1: D는 LM324 내부의 비교기 4 개를 나타냅니다. 회로도에서 각 비교기를 해당 핀 번호와 함께 표시했습니다. LM324 IC의.
작동 설명:
Y 축을 따라 조이스틱의 움직임을 감지하기 위해 OP-AMP1 또는 U1: A와 OP-AMP2 또는 U1: B가 있고 X 축을 따라 Joystick의 움직임을 감지하기 위해 OP-AMP3 또는 U1이 있습니다.: C 및 OP-AMP4 또는 U1: D.
OP-AMP1은 Y 축을 따라 조이스틱의 아래쪽 움직임을 감지합니다.
비교기 U1: A의 음극 단자에는 2.3V (1K 및 2.2K의 분압 회로 사용)가 제공되고 양극 단자는 Ry에 연결됩니다. Y 축을 따라 조이스틱을 아래로 움직이면 Ry 전압이 증가합니다. 이 전압이 2.3V보다 높아지면 OP-AMP는 출력 핀에서 + 3.3V 출력을 제공합니다. OP-AMP의이 HIGH 로직 출력은 Raspberry Pi에 의해 감지되고 Pi는 LED를 토글하여 응답합니다.
OP-AMP2는 Y 축을 따라 조이스틱의 위쪽 움직임을 감지합니다.
비교기 U1: B의 음극 단자에는 1.0V (2.2K 및 1K 분압 회로 사용)가 제공되고 양극 단자는 Ry에 연결됩니다. Y 축을 따라 조이스틱을 위로 움직이면 Ry 전압이 감소합니다. 이 전압이 1.0V보다 낮아지면 OP-AMP 출력이 Low가됩니다. OP-AMP의이 LOW 로직 출력은 Raspberry Pi에 의해 감지되고 Pi는 LED를 토글하여 응답합니다.
OP-AMP3는 X 축을 따라 조이스틱의 왼쪽 움직임을 감지합니다.
비교기 U1: C의 음극 단자에는 2.3V (1K 및 2.2K 분압 회로 사용)가 제공되고 양극 단자는 Rx에 연결됩니다. 조이스틱을 x 축을 따라 왼쪽으로 움직이면 Rx 전압이 증가합니다. 이 전압이 2.3V보다 높아지면 OP-AMP는 출력 핀에서 + 3.3V 출력을 제공합니다. OP-AMP의이 HIGH 로직 출력은 Raspberry Pi에 의해 감지되고 Pi는 LED를 토글하여 응답합니다.
OP-AMP4는 X 축을 따라 조이스틱의 오른쪽 움직임을 감지합니다.
비교기 U1: 4의 음극 단자에는 1.0V (2.2K 및 1K 분압 회로 사용)가 제공되고 양극 단자는 Rx에 연결됩니다. 조이스틱을 x 축을 따라 오른쪽으로 움직이면 Rx 전압이 감소합니다. 이 전압이 1.0V보다 낮아지면 OP-AMP 출력이 Low가됩니다. OP-AMP의이 LOW 로직 출력은 Raspberry Pi에 의해 감지되고 Pi는 LED를 토글하여 응답합니다.
이렇게하면 조이스틱의 네 방향을 결정하는 네 가지 논리가 모두 Raspberry Pi에 연결됩니다. Raspberry Pi는 이러한 비교기의 출력을 입력으로 취하고 LED를 토글하여 그에 따라 응답합니다. 다음은 Python 코드를 사용하여 터미널에 조이스틱의 방향을 인쇄 한 것처럼 Raspberry Pi의 터미널에 표시된 결과입니다.
파이썬 코드와 비디오 는 아래와 같습니다. 코드는 쉽고 코드에 제공된 주석으로 이해할 수 있습니다.