Skip to content

Raspberry Pi LED practice (with Thonny IDE)

김선영 edited this page Oct 2, 2024 · 27 revisions

Raspberry Pi LED practice (with Thonny IDE)


목차


전기 전자 이론

아날로그와 디지털신호

image
  • 아날로그 신호: 연속적인 값으로 표현되는 신호, 실제 환경에서 얻은 데이터를 처리
  • 디지털 신호: 이산적인 값으로 표현되는 신호로 0과 1로 구성된 bit형태로 정보 전달, 컴퓨터 휴대폰 데이터를 처리하는데 사용

실습 부품 정보

PIN MAP

Untitled (20)

GPIO 핀의 주요 기능:

  • 입력: 스위치 등 외부 장치로부터 신호 수신
  • 출력: LED 같은 장치 제어
  • PWM: 서보 모터와 같은 장치의 속도 및 위치 제어

GPIO 제어 방식:

  • Python의 RPi.GPIO 라이브러리 사용
  • C/C++, Scratch, Node.js 등 다양한 언어로 제어 가능

기타 부품(브래드보드, LED, 저항)

Untitled (23)

5. 통신 프로토콜

Raspberry Pi는 다양한 통신 프로토콜을 지원하여 외부 장치와의 데이터 교환을 가능하게 합니다.

I2C (Inter-Integrated Circuit)

  • 특징: 마스터-슬레이브 방식의 양방향 통신
  • : SDA (데이터), SCL (클럭)
  • 속도: 기본 100kHz, 최대 3.4MHz
  • 활용: 온도 센서, RTC, LCD 디스플레이 등

SPI (Serial Peripheral Interface)

  • 특징: 마스터-슬레이브 방식의 동기식 통신
  • : MOSI, MISO, SCK, CS
  • 속도: MHz 단위의 빠른 데이터 전송
  • 활용: 고해상도 디스플레이, SD 카드, DAC 등

UART (Universal Asynchronous Receiver-Transmitter)

  • 특징: 비동기식 직렬 통신
  • : TX (전송), RX (수신)
  • 활용: 시리얼 콘솔, GPS 모듈, 블루투스 모듈

비교:

프로토콜 속도 복잡성 필요 핀 수
SPI 빠름 높음 4+
I2C 중간 중간 2
UART 느림 낮음 2

6. PCIe (Peripheral Component Interconnect Express)

  • 고속 데이터 전송을 위한 직렬 통신 인터페이스
  • Raspberry Pi 4 및 그 이상의 모델에서 PCIe 레인 제공
  • Raspberry Pi Compute Module 4 (CM4)에서 PCIe 2.0 x1 레인 사용 가능 (최대 5Gbps)

전기/전자 이론

플로팅(floating) 현상

  • 라즈베리파이에서 택트(Tact) 스위치를 연결할 때 저항을 사용하지 않고 연결한다면 스위치를 누를때와 누르지 않을때 차이가 없게된다.
  • 이유 : 플로팅 현상때문인데, 떠 있는 상태로 신호가 0(LOW)과 1(HIGH)사이에 애매한 위치에 떠 있기 때문에 발생함.

LED 실습 1 : GPIO 라이브러리 사용

Python in Raspberry Pi 5

(OS에서 파이썬 에디터 사용을 알아보려면 클릭하세요!)

라즈베리파이5는 최신 os를 설치하면 자체적으로 파이썬이 설치되어있음!

Thonny IDE 편집기

thonny

좌측 상단 메뉴에 개발탭 살펴보면 Thonny 편집기는 자체적으로 설치되어 있음.

Nano 편집기

sudo nano [파일이름].py

Nano 편집기 사용방법은 위 명령어로 파일 생성 후, 편집기에 내용을 추가하면 됩니다.

image

코드

연결 구조

연결방법

라즈베리파이 LED
GPIO 12 VCC
GND GND

실습 결과


LED 실습 2 : Pull-up 저항 예시

embedded-led (1)
  • 풀업 저항(Pull-up) : 저항을 전원쪽에 붙여줘서, 플로팅 현상을 해결하는 방법
  • 스위치가 off로 열려있을 때 전류의 방향은 전원에서 IO핀으로 진행함.
  • IO핀의 값은 HIGH(1)
  • 스위치가 on 닫혀있을 때 전류의 방향은 SWITCH 그라운드로 진행함.
  • IO핀의 값은 LOW(0)
  • 참고: 라즈베리파이는 외부에 풀업 저항을 달지 않고 자체적으로 내부 풀업 저항을 소프트웨어로 사용할 수도 있음.

연결 구조

코드


  • GPIO 16번, 21번은 OUTPUT으로 사용 GPIO 20번은 INPUT으로 사용함.
  • GPIO16번은 풀업으로 사용함.
  • pullup.on()을 통해 1상태를 유지. 항상 업 된 상태를 유지함.
  • 스위치 입력이 없을땐 GPIO20번으로 1 신호가 들어감.
  • 스위치를 누르게 되면 GPIO 20번으로 0이 들어감. GPIO 21번으로 1을 내보내서 LED를 ON 시킴.
  • 플로팅 현상을 풀업 GPIO로 잡을 수 있음

연결방법

라즈베리파이 LED
GPIO 16 (PULL DOWN) SWITCH 1
GPIO 20 (IN) SWITCH 1
GPIO 11 (OUT) LED VCC
GND SWITCH 2
GND LED GND

실습 결과


LED 실습 3 : Pull-down 저항 예시

embedded-led (2)
  • 풀다운 저항(Pull-down) : 풀업 저항과 반대로 저항을 그라운드쪽에 붙여서 플로팅 현상을 해결하는 방법
  • 스위치가 off로 열려있을 때 전류의 방향은 IO핀에서 그라운드으로 진행함.
  • INPUT핀의 값은 LOW(0)
  • 스위치가 on 닫혀있을 때 전류의 방향은 전원에서 IO핀으로 진행함.
  • INPUT핀의 값은 HIGH(1)

연결 구조

  • GPIO 포트를 이용한 방법으로, Tact 스위치로 입력받고 led를 on off 하는 예제. GPIO는 플로팅 현상을 차단하기 위해 사용됨.
  • 택트 스위치는 누르기 전에는 세로줄로 각각 연결되어 있다가 스위치를 누르고 있을 때는 4개의 핀이 모두 연결됨.

연결방법

라즈베리파이 LED
GPIO 16 (PULL DOWN) SWITCH 1
GPIO 20 (IN) SWITCH 1
5V SWITCH 2
GPIO 21 (OUT) LED +
GND LED -

코드

  • GPIO 16번, 21번은 OUTPUT으로 사용하고 GPIO 20번은 INPUT으로 사용함.
  • GPIO 16번은 풀다운으로 사용함.
  • pulldown.off()을 통해 항상 0상태를 유지함. 항상 다운된 상태를 유지함
  • 스위치 입력이 없을땐 GPIO 20번으로 0신호가 들어감 = 아무리 플로팅 해도 0이 들어옴.
  • 스위치를 누르게 되면 GPIO 20번으로 1이 들어감 = GPIO 21번으로 1을 내보내 LED를 ON시킴
  • 플로팅 현상을 풀다운 GPIO를 잡게 된다!

실습 결과


LED 실습 후기

  • 실습 부품들을 정리하고 Fritzing으로 연결 구조를 그리면서 스마트디바이스 수업때 정리했던 지식이 생각나서 복습이 되서 좋았다.
  • 풀업 풀다운 개념을 알게 되었는데, 책 설명을 읽고 실습코드 분석을 작성 하면서 스위치 그라운드, 전원, io핀의 전류 흐름에 따라 input값이 LOW(0) HIGH(1)신호가 들어감을 알게됨!
  • 좀 더 공부할것들이 많아서 제공받은 ppt를 통해서 보고서 수정을 지속해볼 계획이다.

Clone this wiki locally