•
학습모듈 작성자 : 상암고 교사 성원경
•
최근 업데이트 날짜 : 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
복사