라즈베리파이 & 임베디드 기초

2026. 1. 10. 11:11📚 Linux

🍓 라즈베리파이 & 임베디드 기초 학습 정리

1. 라즈베리파이 (Raspberry Pi) 개요

  • 정의: SBC (Single Board Computer). 많은 리눅스 및 임베디드 SW 개발자가 교육용으로 다루는 훌륭한 MPU.
  • 역할: GUI 원격 제어기로서 Edge Device와 DB 사이에서 중계 및 제어 역할을 담당.
  • 라즈베리파이 5 스펙 (Model B):
    • 칩셋: Broadcom BCM2712
    • CPU: 2.4GHz ARM Cortex-A76 쿼드코어
    • RAM: 8GB
    • 통신: WiFi, BLE (Bluetooth 5.0), 이더넷 등
    • IDE: Thonny Python IDE 내장 (Python 주로 사용)

2. 전기전자 기초

🔹 전압과 전류

임베디드 장치는 적절한 용량의 전기가 공급되어야 고장나지 않고 동작합니다.

  • 전압 (Voltage, V): 전하가 갖는 전위의 차이. (압력)
  • 전류 (Current, A): 단위 시간당 흐르는 전하의 양. (흐름)
  • 전력 (Power, W): W = V * A
  • 멀티미터 측정:
    • 병렬 연결: 전압 측정
    • 직렬 연결: 전류 측정
  • 전원: 임베디드는 주로 직류(DC)를 사용하며, 항상 VCC(+)GND(-)를 가짐.

🔹 저항 (Resistor)

  • 역할: 전기의 흐름을 방해하여 원하는 전압/전류를 맞춤 (과전류 방지).
  • 주요 저항 색띠:
    • 220Ω: 빨/빨/갈 (4띠), 빨/빨/검/갈 (5띠)
    • 10kΩ: 갈/검/주
  • 브레드보드: 빨간색 라인(VCC), 파란/검정 라인(GND) 연결.

🔹 정격 전압/전류 (Rating)

  • 정격: 기기가 동작하는 데 필요한 표준 값.
  • 규칙: 공급 전압은 정격과 일치해야 하며, 공급 전류는 정격보다 커야 함.
  • 라즈베리파이 5 전원: 5V / 5A (정품 어댑터 권장).
  • GPIO 전기 규격:
    • 공급 전압: 최대 3.3V
    • 핀당 최대 전류: 16mA
    • 모든 핀 총 전류: 1A

3. 임베디드 개발 방식

🔹 개발 형태 분류

  1. Bare-metal (Firmware):
    • OS 없이 하드웨어 위에서 직접 동작하는 코드 작성.
    • 주로 작은 MCU(마이크로컨트롤러) 개발 시 사용.
  2. RTOS (Real Time OS):
    • 실시간성을 보장하는 가벼운 OS 사용.
  3. Embedded Linux:
    • 리눅스 기반의 풍부한 개발 도구와 생태계 활용. (라즈베리파이 해당)

🔹 크로스 컴파일 (Cross Compile)

  • 정의: 개발 환경(PC)과 실행 환경(타겟 보드)의 아키텍처가 다를 때 사용하는 컴파일 방식.
  • 이유: 개발 PC(Host)의 성능이 임베디드 보드(Target)보다 훨씬 우수하기 때문에, PC에서 컴파일하여 실행 파일만 보드로 전송하여 실행함.

4. GPIO 제어 및 실습

🔹 GPIO (General Purpose Input Output)

  • 정의: 칩 제작사가 용도를 고정하지 않고, 사용자가 자유롭게 H/W를 연결해 제어하도록 만든 핀.
  • 제어 방법:
    1. Device Driver: 리눅스 커널 레벨에서 제어.
    2. Library: 랩핑(Wrapping)된 함수를 사용하여 쉽게 제어.
  • Pinout 가이드: https://pinout.xyz/

🔹 파이썬 라이브러리

  1. gpiozero (추천): 초보자가 사용하기 쉽도록 직관적으로 설계됨.
  2. RPi.GPIO: 더 세부적인 로우 레벨 설정이 가능함.

🔹 LED 제어 실습 코드 (led.py)


from gpiozero import LED
from time import sleep

red = LED(14)  # GPIO 14번 핀에 연결

while True:
    red.on()   # High 신호 (켜기)
    sleep(1)
    red.off()  # Low 신호 (끄기)
    sleep(1)

실행: python3 led.py

주의: LED는 긴 쪽이 +, 짧은 쪽이 -. 사용하지 않는 모듈은 분리(특히 GND).

5. 스위치와 플로팅(Floating) 상태

🔹 플로팅 상태란?

스위치를 누르지 않았을 때, 핀의 전압이 High(1)인지 Low(0)인지 확정할 수 없는 불안정한 상태.

모든 MCU 입력 핀에서 발생 가능.

🔹 해결 방법 (Pull-up / Pull-down)

저항을 사용하여 평소 상태(Default)를 고정해 줌.

풀업 (Pull-up):

평소(스위치 Open)에 High 상태 유지.

스위치를 누르면 Low가 됨.

VCC 쪽에 저항 연결.

선호: 노이즈 제거 및 회로 보호에 유리하여 더 많이 사용됨.

풀다운 (Pull-down):

평소에 Low 상태 유지.

스위치를 누르면 High가 됨.

GND 쪽에 저항 연결.

Tip: 라즈베리파이 GPIO 핀에는 내부 풀업 회로가 내장되어 있어, 소프트웨어적으로 설정하거나 자동으로 적용되는 경우가 많습니다.

🛠️ 기타 팁

VNC 접속 불가 시: Raspberry Pi Configuration → Interfaces → VNC 활성화(Enable) 체크.

회로 연결 순서: 항상 3.3V와 GND를 먼저 연결하여 기준 전위를 잡을 것.

'📚 Linux' 카테고리의 다른 글

[Linux] Build System 이해  (0) 2026.01.12
[Raspberry pi] sensor  (1) 2026.01.10
[Linux] 원격접속 / 사용자와 파일 권한  (0) 2026.01.05
[Linux] vi / plugin  (0) 2026.01.05
Linux Shell  (0) 2026.01.02