메인
home
소프트웨어
home
🌌

라즈베리파이 피코 : 기초

학습모듈 작성자 : 상암고 교사 성원경
최근 업데이트 날짜 : 24년 10월 23일

학습 목차

라기-1. 라즈베리파이 피코 란?
라기-2. 라즈베리파이 피코 시물레이션
라기-3. 라즈베리파이 피코 IDE Thonny 설정 및 구동하기
내부 led
서보모터
외부 led 3개

[라기-1] 라즈베리파이 피코란?

라즈베리파이 피코는 디지털 신호 1, 0을 활용하여 각종 전자부품(LED, 모터, 센서) 등을 제어하는 마이크로 컨트롤러이다.
라즈베리파이 VS 라즈베리파이 피코
라즈베리파이는 랜포트와 hdmi 포트가 있는 리눅스 운영체제 기반 소형 컴퓨터 모듈이다.
라즈베리파이 와 피코는 같은 라즈베리파이 재단에서 출시한 제품이란 공통점 외에는 용도 자체가 다르기 때문에 같은 비교군은 아니다.
마이크로 컴퓨터 모듈 비교군
피코와 타사 마이크로컨트롤러 비교
학생을 가르치는 교사 입장에서 느낀 3가지 컨트롤러 차이점
구분
아두이노 우노 R3
마이크로비트 V2.2
라즈베리파이 피코 W
장점
MCU의 근본. 프로젝트에 참고할 만한 오픈소스가 매우 많다. 또한 외부적력을 12V까지 받을 수 있어서 외부 전원 장치 없이 모터를 많이 쓰는 프로젝트에 적합.
라디오 통신 모듈, 스위치, 도트매트릭스, 온습도 센서, 기울기 센서, 마이크 등 조그만 기판 하나에 이미 웬만한 하드웨어 부품들이 탑재 되어 있음. 블록 코딩, 파이썬, 자바스크립트 등 다양한 언어 지원.
와이파이 모듈이 있음. 정품 가격이 저렴함. 마이크로 파이썬을 지원함. 크기가 작음.
단점
C언어 기반.
가격이 비쌈. 추가 전자부품 연결시에 확장 보드를 추가로 구매해야하는데 확장 보드도 비쌈. 그나마 링비트 확장 보드 가격이 합리적임. 내부 전압이 3.3V만 지원해서 외부 5V 모터 쓸 때에는 외부 확장 보드가 필수임.
우리나라에 재고가 많이 없어서 배송이 오래 걸리는 경우가 많음. 아직까지 5핀 usb를 씀. 외부 전력을 6V 까지만 받을 수 있음. 아직 오픈소스가 다른 보드 만큼 많지는 않음.
가격
호환(OEM) : 7000원 ~ 12000원 정품 보드 : 약 3만원
정품보드 : 약 22000원 확장보드 : 10000원 ~ 40000만원
정품보드 : 약 6000원 ~ 12000원
비고
최근 출시된 아두이노 R4는 마이크로파이썬 지원 및 WiFi 통신 기능 추가 됨. 하지만 아직 비쌈.
MS에서 지원하고 있는 웹기반 개발 환경이 편리하고 최적화가 잘되어 있음.
최근 더 저렴해지고 성능이 좋아진 피코2 보드가 출시됨(2024.8 출시)
라즈베리파이 피코 모델의 분류
H : 헤더핀 납땜 유무
W : 와이파이 통신 지원 유무
라즈베리파이 피코2 와의 비교
곧 라즈베리파이 피코 2 W 출시를 기대해 봅니다..
라즈베리파이 피코 WH 핀맵
내부 LED는 GPIO 25번에 내부적으로 연결되어 있다.
피코를 활용해서 어떤 프로젝트 들을 할 수 있을까?
1.
웹 통신을 활용한 피코 LED 깜빡이기
2.
티처블 머신과 연동한 피코 프로젝트
3.
릴레이 모듈과 음성인식 모델의 피코 프로젝트
4.
피코 블루투스 통신과 RC카
5.
피코 인피니트 미러 by 김주현 장학사(서울시교육청 직진과)
5.
rp2040 전자 악세사리 만들기 by 김주현 장학사(서울시교육청 직진과)
6.
4족 로봇 웹-블루투스 제어 프로젝트
7.
그 외에 유튜브 자료들은?
pico
rp2040 zero

[라기-2] 라즈베리파이 피코 시물레이션

시물레이션 사이트 : 피코 내장 LED 제어 코드
기존 시물레이션에서 led를 추가해서 내장 led와 함께 깜빡이게 해주세요.

라기-3. 라즈베리파이 피코 IDE Thonny 설정 및 구동하기

1.
Thoony IDE 다운받기
처음 옵션
standard
한국어
→ Lets go !
처음 시작 화면
기본 코드 작성을 해보자.
라즈베리파이 피코를 연결하자
선택
내부 LED 깜빡이는 코드
import machine import utime # GPIO 25 핀을 출력 모드로 설정 led = machine.Pin("LED", machine.Pin.OUT) # 무한 루프에서 0.5초마다 LED를 토글합니다. while True: led.toggle() utime.sleep(0.5)
Python
복사
외부 3개 LED 깜빡이는 코드
from machine import Pin from time import sleep # LED 핀 번호 설정 led_pins = [27, 22, 18] # LED 객체 생성 leds = [Pin(pin_num, Pin.OUT) for pin_num in led_pins] while True: for led in leds: # 모든 LED 끄기 for l in leds: l.off() # 현재 LED 켜기 led.on() sleep(1) # 1초 동안 대기
Python
복사
서보모터 제어 코드
from machine import Pin, PWM from time import sleep # 서보모터가 연결된 핀 번호 설정 (예: GP15) servo = PWM(Pin(15)) servo.freq(50) # 서보모터의 주파수 설정 (50Hz) # 최소, 중간, 최대 듀티 사이클 값 설정 min_duty = 1638 # 약 1ms 펄스 폭에 해당 (5% 듀티 사이클) mid_duty = 4915 # 약 1.5ms 펄스 폭에 해당 (7.5% 듀티 사이클) max_duty = 8192 # 약 2ms 펄스 폭에 해당 (10% 듀티 사이클) try: while True: print("0도 위치로 이동") servo.duty_u16(min_duty) sleep(1) print("90도 위치로 이동") servo.duty_u16(mid_duty) sleep(1) print("180도 위치로 이동") servo.duty_u16(max_duty) sleep(1) except KeyboardInterrupt: servo.deinit()
Python
복사