01. 라즈베리파이4에 대한 설명 및 환경세팅 - EnglishNo/EmbeddedSystem GitHub Wiki

라즈베리파이4에 대하여

image
  • 2019년에 출시된 싱글보드 컴퓨터.
  • 쿼드코어 ARM Cortex-A72 프로세서와 LPDDR4 RAM을 탑재.
  • USB 3.0, 기가비트 이더넷, Wi-Fi, 블루투스를 기본으로 내장하고 있어, 운영체제를 설치해 미니 PC처럼 사용하거나 파이썬으로 GPIO 핀을 제어하는 프로젝트에 많이 활용.

아두이누와 라즈베리파이4의 차이 및 공통점

Arduino 계열 MCU 보드 Raspberry Pi SBC
펌웨어 중심 Linux 운영체제
빠른 기동, 낮은 전력 멀티태스킹, 파일, 네트워크
정밀한 센서, 모터 제어 웹, DB, 카메라, AI
운영체제 없이 반복 제어 여러 서비스를 동시에 실행
임베디드 시스템에 사용, 요구사항에 따라 함께 구성

라즈베리파이4 모델 종류

2GB 4GB 8GB
RAM 2GB LPDDR4 4GB LPDDR4 8GB LPDDR4
추천 용도 간단한 파이썬 실습, 기초 교육 범용 (가장 무난) 딥러닝, 멀티태스킹, 서버
이유 가격이 많이 낮지만, 단순한 GPIO 제어나 headless(화면 없이) 서버 용도로만 쓸 경우 가장 많이 팔리며, 브라우저, 터미널, 파이썬 작업을 동시에 돌려도 버벅임 없이 돌아가고, 처음 구매인 경우 OpenCV 같은 이미지 처리 라이브러리를 쓰거나 여러 서비스를 동시에 돌리는 경우

라즈베리파이4 핀맵 - GPIO 40핀 구성

image
핀 종류 설명
3.3V (1, 17번) 저전압 센서 전원 공급
5V (2, 4번) 고전력 장치 전원 공급
GND (6, 9, 14, 20, 25, 30, 34, 39번) 접지()
GPIO (2-27번) 디지털 입출력, I2C, SPI, UART 등

용어 설명

  • 접지 : 전기 회로와 장비를 안전하게 보호하기 위해 전류를 땅으로 흐르게 함.
  • I2C : 두개의 선(SDA, SCL)으로 마이크로컨트롤러, 센서, 메모리, 디스플레이 등의 여러 장치를 연결할 수 있는 동기식 직렬 통신.
    • SDA (Serial Data Line) : 데이터 송수신용 선
    • SCL (Serial Clock Line) : 클럭 신호용 선 (CPU의 처리 속도를 결정)
  • SPI : 마이크로컨트롤러와 주변 장치 간의 데이터 교환을 위해 사용.
  • UART : 두 장치 간 간단한 배선으로 데이터를 주고받을 수 있도록 설계된 비동기 직렬 통신.

라즈베리파이4 초기화 및 설정

  1. 기본정보 시스템 터미널에서 확인

# 장치 이름과 IP 주소
hostname
hostname -I

# 운영체제와 커널
cat /etc/os-release
uname -a

# CPU, 메모리, 저장공간
lscpu
free -h
df -h

# 날짜와 시간
timedatectl status

# Python
python3 --version

  • 주의 : hostname -I, cat /etc/os-release, uname -a, lscpu, free -h, df -h, timedatectl status 등은 리눅스 환경이 아닌 운영체제에선 사용 불가.
    • 대체 방안 1)
      • https://bellard.org/jslinux/ 해당 사이트에서 대신 사용해서 확인. 단, 해당 사이트에서 볼 수 있는 시스템 정보는 실제 PC 사양이 아닌 가상화 환경의 사양.
    • 대체 방안 2)
      • 윈도우 환경에서 사용 가능한 대체할 수 있는 명령어 사용.
        • ipconfig : 네트워크 어댑터별 IP 주소 출력. IPv4 주소 항목을 확인하면 됨.
        • ver : 윈도우 OS의 버전 번호를 간단히 출력.
        • systeminfo : OS 이름, 빌드 버전, 시스템 제조업체, 시스템 종류(64비트 여부) 등 전체 사양을 한눈에 표시.
        • powershell "Get-CimInstance Win32_Processor | Select-Object Name" : 탑재된 Intel 또는 AMD CPU 모델명 출력.
        • powershell "Get-CimInstance Win32_LogicalDisk | Select-Object DeviceID, FreeSpace, Size" : 드라이브 문자(DeviceID), 남은 용량(FreeSpace), 전체 용량(Size)이 바이트 단위로 출력.
        • date /t : 현재 설정된 날짜 출력.
        • time /t : 현재 설정된 시각 출력.
  1. 파이썬으로 실행환경 확인

from datetime import datetime
import platform
import socket

print("Hello, Raspberry Pi!") # Hello, Raspberry Pi!
print("Host:", socket.gethostname()) # Host: raspberrypi, 라즈베리파이가 없는 지금은 노트북 이름으로 출력.
print("Python:", platform.python_version()) # Python: 3.x.x
print("Time:", datetime.now()) # Time: 2026-...

# 실행 (터미널에서)
python3 hello.py

  • 라즈베리파이 OS의 호스트 이름이 출력되기 위해선)
    • 라즈베리파이에 SSH 접속을 하거나 직접 터미널을 열어 코드 실행.
  • 라이브러리 및 함수 설정)
    • datetime : 파이썬에서 날짜와 시간 데이터를 조작하고 계산하기 위해 사용하는 표준 라이브러리.
      • from datetime import datetime를 통해 datetime이라는 모듈(파일) 내부에서 핵심 기능을 담고 있는 datetime 클래스를 직접 불러와 간결하게 내장 함수 사용.
      • datetime.now() 함수를 통해 현재 로컬 날짜와 시각을 담은 객체 반환.
    • platform : 파이썬이 실행되는 운영체제 및 하드웨어 환경 정보를 확인하는 표준 라이브러리.
      • platform.python_version()를 통해 현재 파이썬 버전 반환.
    • socket : 네트워크 연결을 형성하고 기기 간에 데이터를 주고받는 통신 기능을 제공하는 표준 라이브러리.
      • socket.gethostname()를 통해 현재 통신 장치의 호스트 이름을 반환.
  1. 업데이트

# 패키지 목록 갱신과 업그레이드
sudo apt update
sudo apt upgrade

# Raspberry Pi 설정
sudo raspi-config

# 재부팅
sudo reboot

# 안전한 종료
sudo shutdown -h now
# 또는
sudo poweroff

# 활동 LED가 멈춘 뒤 전원 분리

  • 주의 : 해당 명령어(apt, raspi-config, reboot, shutdown, sudo)들은 리눅스(라즈베리파이 OS 및 데비안 계열 리눅스) 전용 명령어이므로, 윈도우 명령 프롬프트(CMD)에선 그대로 사용 불가.
    • sudo : 최고 관리자(root) 권한으로 명령어 실행.
    • apt update / apt upgrade : 데비안/우분투/라즈베리파이 OS 전용 패키지 관리자로, 소프트웨어 목록을 갱신하고 업데이트.
    • raspi-config
      • 라즈베리파이 OS 전용 텍스트 기반 시스템 설정 툴.
      • 다른 일반 리눅스(Ubuntu, Fedora 등)나 윈도우에는 아예 존재하지 않는 라즈베리파이 독점 명령어.
    • reboot : 리눅스 시스템 즉시 재부팅.
    • shutdown -h now / poweroff : -h(halt) 옵션과 now 키워드를 사용해 시스템을 안전하게 종료.
⚠️ **GitHub.com Fallback** ⚠️