01. 라즈베리파이4에 대한 설명 및 환경세팅 - EnglishNo/EmbeddedSystem GitHub Wiki
- 2019년에 출시된 싱글보드 컴퓨터.
- 쿼드코어 ARM Cortex-A72 프로세서와 LPDDR4 RAM을 탑재.
- USB 3.0, 기가비트 이더넷, Wi-Fi, 블루투스를 기본으로 내장하고 있어, 운영체제를 설치해 미니 PC처럼 사용하거나 파이썬으로 GPIO 핀을 제어하는 프로젝트에 많이 활용.
| Arduino 계열 MCU 보드 | Raspberry Pi SBC |
|---|---|
| 펌웨어 중심 | Linux 운영체제 |
| 빠른 기동, 낮은 전력 | 멀티태스킹, 파일, 네트워크 |
| 정밀한 센서, 모터 제어 | 웹, DB, 카메라, AI |
| 운영체제 없이 반복 제어 | 여러 서비스를 동시에 실행 |
| 임베디드 시스템에 사용, 요구사항에 따라 함께 구성 | |
| 2GB | 4GB | 8GB | |
|---|---|---|---|
| RAM | 2GB LPDDR4 | 4GB LPDDR4 | 8GB LPDDR4 |
| 추천 용도 | 간단한 파이썬 실습, 기초 교육 | 범용 (가장 무난) | 딥러닝, 멀티태스킹, 서버 |
| 이유 | 가격이 많이 낮지만, 단순한 GPIO 제어나 headless(화면 없이) 서버 용도로만 쓸 경우 | 가장 많이 팔리며, 브라우저, 터미널, 파이썬 작업을 동시에 돌려도 버벅임 없이 돌아가고, 처음 구매인 경우 | OpenCV 같은 이미지 처리 라이브러리를 쓰거나 여러 서비스를 동시에 돌리는 경우 |
| 핀 종류 | 설명 |
|---|---|
| 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 : 두 장치 간 간단한 배선으로 데이터를 주고받을 수 있도록 설계된 비동기 직렬 통신.
- 기본정보 시스템 터미널에서 확인
# 장치 이름과 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()를 통해 현재 통신 장치의 호스트 이름을 반환.
-
-
datetime : 파이썬에서 날짜와 시간 데이터를 조작하고 계산하기 위해 사용하는 표준 라이브러리.
- 업데이트
# 패키지 목록 갱신과 업그레이드
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 키워드를 사용해 시스템을 안전하게 종료.