라즈베리 파이 딥 스위치
전자 장치에서 DIP(듀얼 인라인 패키지) 스위치는 기기 주소 설정, 기능 전환 등 구성 작업에 널리 사용됩니다. 이 튜토리얼의 목적은 Raspberry Pi에서 DIP 스위치를 사용하는 방법을 탐구하는 것입니다. 특히, 다음 내용을 다룰 예정입니다:
- DIP 스위치의 이해 및 작동 원리
- DIP 스위치를 Raspberry Pi에 연결하기
- DIP 스위치의 ON/OFF 상태를 읽도록 Raspberry Pi 프로그래밍하기
- DIP 스위치로 설정된 숫자 값을 읽도록 Raspberry Pi 프로그래밍하기
Hardware Preparation
1 | × | Raspberry Pi 4 Model B | Amazon | |
1 | × | DIP Switch | Amazon | |
1 | × | Breadboard | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (추천) Screw Terminal Block Shield for Raspberry Pi | 쿠팡 | Amazon | |
1 | × | (추천) USB-C Power Cable with On/Off Switch for Raspberry Pi 4B | Amazon | |
1 | × | (추천) Plastic Case and Cooling Fan for Raspberry Pi 4B | Amazon | |
1 | × | (추천) HDMI Touch Screen Monitor for Raspberry Pi | Amazon |
DIP 스위치에 대하여
DIP 스위치는 주로 장치를 구성하는 데 사용되며, 다양한 산업 및 응용 분야에서 장치 주소, 통신 설정, 보안 코드, 작동 모드, 시스템 선호도와 같은 매개변수를 사용자가 설정할 수 있도록 합니다.
DIP 스위치는 여러 개의 작은 슬라이드 스위치가 함께 포장된 것입니다. 각 슬라이드 스위치는 "포지션"이라고 불립니다. DIP 스위치는 포지션의 수에 따라 다양한 유형이 있습니다. 예를 들어, 2포지션, 4포지션, 5포지션, 6포지션, 8포지션, 10포지션 DIP 스위치가 있습니다.
DIP 스위치는 구성 가능한 숫자를 나타낼 수 있습니다. 스위치의 각 위치는 숫자의 비트에 해당합니다. 위치를 켜기(ON)와 끄기(OFF)로 전환함으로써 원하는 숫자를 설정할 수 있습니다.
핀아웃
DIP 스위치는 두 줄의 핀으로 구성되며, 각 줄의 핀 수는 사용할 수 있는 스위치 위치 수와 일치합니다. 예를 들어, 4포지션 DIP 스위치는 총 8개의 핀을 포함하고 있으며, 각각의 측면에 4개의 핀으로 균등하게 나뉩니다. DIP 스위치 구조에서 서로 반대편에 있는 핀 쌍은 슬라이드 스위치를 나타냅니다. 특히 두 측면의 핀을 구분할 필요가 없으며, 서로 교환할 수 있습니다.
작동 방식
DIP 스위치에서 스위치가 ON 위치에 있으면 스위치가 작동되었거나 닫힌 것을 의미합니다. 이는 전기 연결이 설정되어 전류가 스위치를 통해 통과할 수 있음을 나타냅니다.
반대로, 스위치가 OFF 위치에 있을 때는 스위치가 분리되거나 열려 있음을 나타냅니다. 이 상태에서는 전기 연결이 끊어져 전류가 스위치를 통해 흐를 수 없습니다.
명확히 하기 위해:
- ON 위치: 폐회로를 나타내며, 전류 흐름을 허용합니다.
- OFF 위치: 개회로를 나타내며, 전류 흐름을 방해합니다.
스위치의 한쪽을 GND에 연결하고 다른 쪽을 Raspberry Pi 핀에 연결한 다음, Raspberry Pi 핀을 풀업 디지털 입력으로 설정하면, 아래 표는 스위치 위치와 Arduino에서 읽은 값 간의 관계를 보여줍니다.
DIP switch position | Binary representation | Circuit state | Raspberry Pi pin state |
---|---|---|---|
ON | 1 | CLOSED | LOW |
OFF | 0 | OPEN | HIGH |
다음 부분에서는 예를 들어 4-포지션 DIP 스위치를 사용할 것입니다. 2-포지션 DIP 스위치, 3-포지션 DIP 스위치, 5-포지션 DIP 스위치, 6-포지션 DIP 스위치, 8-포지션 DIP 스위치, 10-포지션 DIP 스위치에 쉽게 적용할 수 있습니다...
Wiring Diagram
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
배선 구성을 간단하고 체계적으로 만들기 위해, Raspberry Pi용 스크루 터미널 블록 실드 사용을 권장합니다. 이 실드는 아래와 같이 더욱 안정적이고 관리하기 쉬운 연결을 제공합니다:
라즈베리 파이 코드 - DIP 스위치
우리는 두 개의 코드 조각을 통해 배울 것입니다:
- DIP 스위치의 개별 위치에 대한 ON/OFF 상태 읽기.
- 위치를 숫자로 인코딩하기.
Raspberry Pi 코드 - DIP 스위치의 ON/OFF 상태 읽기
Detailed Instructions
- Raspberry Pi에 Raspbian 또는 다른 Raspberry Pi 호환 운영 체제가 설치되어 있는지 확인하세요.
- Raspberry Pi와 PC가 동일한 로컬 네트워크에 연결되어 있는지 확인하세요.
- 라이브러리를 설치해야 하는 경우 Raspberry Pi가 인터넷에 연결되어 있는지 확인하세요.
- Raspberry Pi를 처음 사용하는 경우, Raspberry Pi 설정 방법을 참조하세요.
- Linux 및 macOS에서는 내장된 SSH 클라이언트를 사용하고 Windows에서는 PuTTY를 사용하여 SSH를 통해 PC를 Raspberry Pi에 연결하세요. SSH를 통해 PC를 Raspberry Pi에 연결하는 방법을 참조하세요.
- RPi.GPIO 라이브러리가 설치되어 있는지 확인하세요. 설치되어 있지 않으면 다음 명령어를 사용하여 설치하세요:
- 위 배선도에 따라 배선을 하세요.
- Python 스크립트 파일 dip_switch.py를 생성하고 다음 코드를 추가하세요.
- 파일을 저장하고 다음 명령어를 터미널에서 실행하여 Python 스크립트를 실행하세요:
- 디핑 스위치의 각 위치를 하나씩 켭니다.
- 터미널에서 결과를 확인합니다.
스크립트는 터미널에서 Ctrl + C를 누를 때까지 무한 루프에서 계속 실행됩니다.
라즈베리 파이 코드 - DIP 스위치 상태를 숫자로 인코딩하기
Detailed Instructions
- Python 스크립트 파일 dip_switch_encode.py을(를) 생성하고 다음 코드를 추가하세요:
- 파일을 저장하고 터미널에서 다음 명령어를 실행하여 Python 스크립트를 실행하세요:
- DIP 스위치의 각 위치를 하나씩 켜세요.
- 시리얼 모니터에서 결과를 확인하세요. 아래와 같이 보입니다.
각 슬라이드 스위치의 위치에 따라 값이 달라질 수 있음을 유의하세요. 아래 표는 4-포지션 DIP 스위치의 ON/OFF 위치와 정수 값 간의 매핑을 보여줍니다:
Position-1 | Position-2 | Position-3 | Position-4 | Binary Value | Decimal Value |
---|---|---|---|---|---|
OFF | OFF | OFF | OFF | 0000 | 0 |
OFF | OFF | OFF | ON | 0001 | 1 |
OFF | OFF | ON | OFF | 0010 | 2 |
OFF | OFF | ON | ON | 0011 | 3 |
OFF | ON | OFF | OFF | 0100 | 4 |
OFF | ON | OFF | ON | 0101 | 5 |
OFF | ON | ON | OFF | 0110 | 6 |
OFF | ON | ON | ON | 0111 | 7 |
ON | OFF | OFF | OFF | 1000 | 8 |
ON | OFF | OFF | ON | 1001 | 9 |
ON | OFF | ON | OFF | 1010 | 10 |
ON | OFF | ON | ON | 1011 | 11 |
ON | ON | OFF | OFF | 1100 | 12 |
ON | ON | OFF | ON | 1101 | 13 |
ON | ON | ON | OFF | 1110 | 14 |
ON | ON | ON | ON | 1111 | 15 |
Video Tutorial
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.