# 블록코딩 파이보 메이커는 Blockly 기반의 블록 코딩을 지원합니다. 기본 블록 외에 파이보를 쉽게 쓸 수 있도록 **openpibo** 파이썬 패키지와 이어진 블록이 있습니다. 블록 코드는 [파이썬 코드] 버튼으로 파이썬으로 볼 수 있습니다. ```{note} 이 페이지는 IDE 툴박스에서 자동으로 만들었습니다(`docs/tools/gen_block_guide.py`). 블록 그림은 툴박스에서 꺼냈을 때의 기본값입니다. 모든 기능은 **파이보 안에서** 돌아가며 인터넷이 필요한 것은 [수집] 분류뿐입니다. ``` ## 블록 구성 ``` Blockly 기본 블록 (Blockly 공식 블록 — 설명은 블록에 마우스를 올리면 나옵니다) ├── 논리 (7) ├── 반복 (5) ├── 수학 (13) ├── 문자 (15) ├── 목록 (12) ├── 색상 (4) ├── 변수 (만들면 생김) └── 함수 (만들면 생김) 파이보 전용 블록 ├── 시작 (1) ├── 소리 (4) ├── 수집 (4) ├── 장치 (8) ├── 동작 (10) ├── 화면 (11) ├── 음성 (8) ├── 시각 (16) ├── 인식 (36) └── 도구 (12) ``` ## 파이보 전용 블록 ### 시작 클릭했을때 코드를 실행합니다. ### 소리 오디오 [폴더 선택 ▾] [파일 선택 ▾] ([80]) 크기로 재생하기 음악 파일을 골라서 원하는 소리 크기로 재생합니다. 오디오 [폴더 선택 ▾] ([audio]) . [mp3 ▾] ([80]) 크기로 재생하기 음악 파일 이름을 적어서 소리를 재생합니다. 오디오 멈추기 재생 중인 소리를 멈춥니다. ([5]) 초 녹음하고 [폴더 선택 ▾] ([audio]) . [wav ▾] 저장하기 설정한 시간 동안 소리를 녹음하고 파일로 저장합니다. ### 수집 위키피디아에서 ([로봇]) 찾아보기 (인터넷 필요!) 위키피디아에서 입력한 내용을 찾아줍니다. *값을 돌려주는 블록* [서울 ▾] 날씨 예보 가져오기 (인터넷 필요!) 선택한 지역의 날씨 정보를 가져옵니다. *값을 돌려주는 블록* [서울 ▾] 날씨의 [오늘 ▾] [예보 ▾] 찾아보기 (인터넷 필요!) 선택한 지역의 특정 날씨 정보를 찾아줍니다. *값을 돌려주는 블록* [속보 ▾] 뉴스에서 [제목 ▾] 찾아보기 (인터넷 필요!) 뉴스에서 입력한 내용을 검색합니다. *값을 돌려주는 블록* ### 장치 RGB ([0]) ([0]) ([0]) ([0]) ([0]) ([0]) 눈 불빛 바꾸기 눈 불빛의 색을 변경합니다. 색상 ([변수 ▾]) ([변수 ▾]) 눈 불빛 바꾸기 색상 변수를 사용해 눈 불빛의 색을 변경합니다. 어댑터 확인하기 어댑터가 연결되어 있는지 확인합니다. *값을 돌려주는 블록* 배터리 확인하기 배터리 상태를 확인합니다. *값을 돌려주는 블록* 시스템 메시지 확인하기 시스템 메시지를 확인합니다. *값을 돌려주는 블록* 사람 감지하기 사람이 있는지 감지합니다. *값을 돌려주는 블록* 터치 감지하기 터치가 감지되었는지 확인합니다. *값을 돌려주는 블록* 버튼 확인하기 버튼이 눌렸는지 확인합니다. *값을 돌려주는 블록* ### 동작 동작 목록 가져오기 사용할 수 있는 동작 목록을 가져옵니다. *값을 돌려주는 블록* 내 동작 목록 가져오기 내 동작(사용자가 만든 동작) 목록을 가져옵니다. *값을 돌려주는 블록* 동작 [동작 선택 ▾] ([1]) 번 실행하기 선택한 동작을 정해진 횟수만큼 실행합니다. 동작 ([wave1]) ([1]) 번 실행하기 입력한 동작을 정해진 횟수만큼 실행합니다. 내 동작 ([나의 모션]) ([1]) 번 실행하기 사용자가 만든 동작을 정해진 횟수만큼 실행합니다. 동작 초기화하기 모든 모터를 초기 상태로 만듭니다. [오른발[0] ▾] 모터를 ([0]) 도로 이동하기 선택한 모터를 정해진 각도로 움직입니다. [오른발[0] ▾] 모터를 ([40]) 속도로 설정하기 선택한 모터의 움직이는 속도를 설정합니다. [오른발[0] ▾] 모터를 ([0]) 가속도로 설정하기 선택한 모터의 가속도를 설정합니다. 모든 모터 ([0,0,0,0,0,0,0,0,0,0]) ([1000]) ms 동안 움직이기 모든 모터를 정해진 시간 동안 움직이도록 설정합니다. ### 화면 화면 글자 크기 ([30]) 설정하기 화면에 보이는 글자 크기를 설정합니다. 좌표 ([0]) ([0]) ([안녕하세요]) 화면에 저장하기 화면에 글자를 저장합니다. 이미지 [폴더 선택 ▾] [파일 선택 ▾] 화면에 저장하기 화면에 선택한 이미지를 저장합니다. 이미지 [폴더 선택 ▾] ([sample]) . [jpg ▾] 화면에 저장하기 화면에 입력한 이미지를 저장합니다. 이미지 ([변수 ▾]) 화면에 저장하기 화면에 이미지 변수를 저장합니다. 좌표 ([0]) ([0]) , ([0]) ([0]) 네모 [채우기 ▾] 화면에 저장하기 화면에 네모를 저장합니다. 좌표 ([0]) ([0]) , ([0]) ([0]) 원 [채우기 ▾] 화면에 저장하기 화면에 원을 저장합니다. 좌표 ([0]) ([0]) , ([0]) ([0]) 선 화면에 저장하기 화면에 선을 저장합니다. 화면 반전하기 화면의 색을 반전합니다. 화면 표시하기 화면에 저장된 내용을 표시합니다. 화면 지우기 화면을 초기화합니다. ### 음성 ([5]) 초 동안 듣고 글자로 바꾸기 파이보 마이크로 듣고, 말이 끝나면 글자로 바꿉니다. 기기 안에서 처리하고 한국어·영어는 자동으로 알아봅니다. 처음 한 번은 준비하느라 몇 초 더 걸립니다. *값을 돌려주는 블록* ([안녕하세요]) 를 [남성 1 ▾] 목소리로 [폴더 선택 ▾] ([tts]) . [mp3 ▾] 에 저장하기(ondevice) 입력한 글자를 파이보 안에서 목소리로 만들어 파일로 저장합니다. 한국어·영어는 자동으로 알아봅니다. ([안녕하세요]) 를 [남성 1 ▾] 목소리 ([80]) 크기로 말하기(ondevice) 입력한 글자를 파이보 안에서 목소리로 만들어 말합니다. 한국어·영어는 자동으로 알아봅니다. ([안녕하세요]) 를 목소리 [폴더 선택 ▾] ([tts]) . [mp3 ▾] 에 저장하기(E-speak) 입력한 글자를 espeak 기계 목소리로 파일에 저장합니다. ([안녕하세요]) 를 목소리 ([80]) 크기로 말하기(E-speak) 입력한 글자를 espeak 기계 목소리로 말합니다. 대화 서버 시작하기(LLM) 대화 서버를 시작합니다. ([안녕하세요]) 대화하기, 역할 (값) (LLM) 대화 서버(LLM)에 글을 보내고 대답을 받습니다. 역할에는 파이보가 어떤 말투·역할로 대답할지 적습니다. *값을 돌려주는 블록* 대화 서버 종료하기(LLM) 대화 서버를 끕니다. ### 시각 사진 찍기 카메라로 사진을 찍습니다. *값을 돌려주는 블록* 이미지 [폴더 선택 ▾] [파일 선택 ▾] 불러오기 선택한 이미지 파일을 불러옵니다. *값을 돌려주는 블록* 이미지 [폴더 선택 ▾] ([image]) . [jpg ▾] 불러오기 입력한 이미지 파일을 불러옵니다. *값을 돌려주는 블록* 이미지 색상 ([변수 ▾]) 매트 만들기 고른 색으로 채운 빈 이미지를 만듭니다. *값을 돌려주는 블록* 이미지 ([변수 ▾]) ⏵ [폴더 선택 ▾] ([image]) . [jpg ▾] 에 저장하기 이미지를 파일로 저장합니다. 이미지 ([변수 ▾]) IDE에 보여주기 이미지 변수를 IDE에서 보여줍니다. 이미지 ([변수 ▾]) OLED에 보여주기 이미지 변수를 OLED에서 보여줍니다. 이미지 ([변수 ▾]) 좌표 ([0]) ([0]) , ([0]) ([0]) 색상 ([변수 ▾]) 굵기 ([2]) 네모 그리기 이미지에 네모를 그립니다. 이미지 ([변수 ▾]) 좌표 ([0]) ([0]) 반지름 ([0]) 색상 ([변수 ▾]) 굵기 ([2]) 원 그리기 이미지에 동그라미를 그립니다. 이미지 ([변수 ▾]) 좌표 ([0]) ([0]) ⏵ ([0]) ([0]) 색상 ([변수 ▾]) 굵기 ([2]) 선 그리기 이미지에 선을 그립니다. 이미지 ([변수 ▾]) 좌표 ([0]) ([0]) 크기 ([30]) 색상 ([변수 ▾]) ([안녕하세요]) 표시하기 이미지에 글자를 표시합니다. 이미지 ([변수 ▾]) [만화 ▾] 바꾸기 이미지의 스타일을 바꿉니다. *값을 돌려주는 블록* 이미지 ([변수 ▾]) 가로 ([100]) 세로 ([100]) 크기 바꾸기 이미지 크기를 바꿉니다. *값을 돌려주는 블록* 6×8 점 그림 점을 눌러 그린 6×8 그림을 이미지로 만듭니다(카메라 화면 크기로 키움). *값을 돌려주는 블록* 8×4 점 그림 점을 눌러 그린 8×4 그림을 이미지로 만듭니다(카메라 화면 크기로 키움). *값을 돌려주는 블록* 8×8 점 그림 점을 눌러 그린 8×8 그림을 이미지로 만듭니다(카메라 화면 크기로 키움). *값을 돌려주는 블록* ### 인식 이미지 ([변수 ▾]) 얼굴 찾기 이미지에서 얼굴을 찾습니다. *값을 돌려주는 블록* 이미지 ([변수 ▾]) 얼굴 ([변수 ▾]) 표시하기 이미지에서 얼굴을 표시합니다. 이미지 ([변수 ▾]) 얼굴 ([변수 ▾]) 분석하기(나이,성별,감정) 이미지에서 얼굴을 분석합니다.(나이,성별,감정) *값을 돌려주는 블록* 이미지 ([변수 ▾]) 얼굴분석 ([변수 ▾]) 표시하기 이미지에서 얼굴분석 결과 표시합니다. 이미지 ([변수 ▾]) 얼굴 ([변수 ▾]) 랜드마크 찾기 이미지에서 얼굴의 랜드마크를 찾습니다. *값을 돌려주는 블록* 이미지 ([변수 ▾]) 얼굴랜드마크 ([변수 ▾]) 표시하기 이미지에서 얼굴의 랜드마크 표시합니다. 얼굴사전 얼굴 사전에 학습된 이름 목록을 가져옵니다. *값을 돌려주는 블록* 이미지 ([변수 ▾]) 얼굴 ([변수 ▾]) ⏵ 이름 ([pibo]) 로 얼굴 사전에 학습하기 이미지에서 얼굴을 이름으로 학습합니다. 이름 ([pibo]) 얼굴 사전에서 지우기 학습된 얼굴 데이터에서 특정 이름을 삭제합니다. 이미지 ([변수 ▾]) 얼굴 ([변수 ▾]) 얼굴 사전에서 확인하기 이미지에서 얼굴이 누구인지 인식합니다. *값을 돌려주는 블록* 얼굴 사전 ⏵ [폴더 선택 ▾] ([facedb]) 저장하기 학습된 얼굴 데이터를 파일로 저장합니다. 얼굴 사전 ⏴ [폴더 선택 ▾] ([facedb]) 불러오기 저장된 얼굴 학습 파일을 불러옵니다. 이미지 ([변수 ▾]) 얼굴 방향/거리 분석하기 인식된 얼굴의 방향과 거리를 분석합니다. *값을 돌려주는 블록* 이미지 ([변수 ▾]) 얼굴 방향/거리 ([변수 ▾]) 표시하기 인식된 얼굴의 방향과 거리를 표시합니다. 사물인식 모델 [폴더 선택 ▾] ([yolo11s]) .onnx 불러오기 사물인식 모델을 불러옵니다.(yolo) 이미지 ([변수 ▾]) 사물 찾기 이미지에서 사물을 찾아냅니다. (80개 종류의 사물) *값을 돌려주는 블록* 이미지 ([변수 ▾]) 사물 찾기(raw) 이미지에서 사물을 찾아냅니다. (80개 종류의 사물) - RAW *값을 돌려주는 블록* 이미지 ([변수 ▾]) 사물 ([변수 ▾]) 표시하기 이미지에서 사물을 표시합니다. (80개 종류의 사물) 이미지 ([변수 ▾]) QR코드 찾기 이미지에서 QR코드를 찾아냅니다. *값을 돌려주는 블록* 이미지 ([변수 ▾]) QR코드 찾기(raw) 이미지에서 QR코드를 찾아냅니다.(RAW) *값을 돌려주는 블록* 이미지 ([변수 ▾]) QR코드 ([변수 ▾]) 표시하기 이미지에서 QR코드를 표시합니다. 이미지 ([변수 ▾]) 포즈 데이터 찾기 이미지에서 사람의 포즈 데이터를 가져옵니다. (17개 좌표) *값을 돌려주는 블록* 이미지 ([변수 ▾]) 포즈 데이터 ([변수 ▾]) 표시하기 이미지에서 사람의 포즈 데이터를 표시합니다. 포즈 데이터 ([변수 ▾]) [자세인식 ▾] 분석하기 포즈 데이터를 분석해 정해진 포즈를 알아냅니다. *값을 돌려주는 블록* 이미지 ([변수 ▾]) 좌표 ([0]) ([0]) , ([0]) ([0]) 트래커 설정하기 이미지의 특정 위치에 트래커를 설정합니다. 이미지 ([변수 ▾]) 추적하기 설정된 트래커로 이미지를 추적합니다. *값을 돌려주는 블록* 이미지 ([변수 ▾]) 추적 결과 ([변수 ▾]) 표시하기 추적 결과를 표시합니다. 손 동작 모델 [gesture_recognizer ▾] 을 불러오기 내장된 손 동작 모델을 불러옵니다. 손 동작 모델 [폴더 선택 ▾] ([gesture_recognizer]) .task 불러오기 손 동작 모델을 불러옵니다. 이미지 ([변수 ▾]) 손 동작 인식하기 이미지에서 손 동작을 인식합니다. *값을 돌려주는 블록* 이미지 ([변수 ▾]) 손 동작 ([변수 ▾]) 표시하기 이미지에서 손 동작을 표시합니다. 이미지 ([변수 ▾]) 길이 ([5]) cm 마커 찾기 이미지에서 마커를 인식합니다. *값을 돌려주는 블록* 이미지 ([변수 ▾]) 마커 ([변수 ▾]) 표시하기 이미지에서 마커를 표시합니다. 분류기 모델 [폴더 선택 ▾] ([모델 이름]) 불러오기 분류기 화면에서 가르치고 저장한 모델을 불러옵니다. 폴더는 mymodel, 칸에 모델 이름을 적습니다. (이미지·손·얼굴·포즈) 분류기 모델로 ([변수 ▾]) 분류하기 불러온 분류기 모델로 이미지를 분류해 가장 알맞은 이름을 돌려줍니다. 손·얼굴·포즈 모델은 화면에 손·얼굴·몸이 안 보이면 빈 글자를 돌려줍니다. *값을 돌려주는 블록* 이미지 ([변수 ▾]) 에 분류기가 본 것 표시하기 바로 전에 [분류기 모델로 … 분류하기] 가 본 것을 그 이미지에 그립니다. 손·포즈는 점과 뼈대, 얼굴은 점, 그리고 종류 이름과 확률을 씁니다. ### 도구 ([1]) 초 동안 기다리기 정해진 시간 동안 멈춥니다. 시간 값 가져오기 현재 시간 값을 가져옵니다. *값을 돌려주는 블록* 현재 시간 확인하기 지금의 시간을 확인합니다. *값을 돌려주는 블록* ( ) 가 ( ) 에 있는지 확인하기 항목이 리스트 안에 있는지 확인합니다. *값을 돌려주는 블록* 사전 ([변수 ▾]) 에서 키 ([키 이름]) 값 가져오기 사전에서 정해진 키에 해당하는 값을 가져옵니다. *값을 돌려주는 블록* 사전 ([변수 ▾]) 에 { ([키 이름]) : ( ) } 추가하기 사전에 정해진 키와 값을 추가합니다. 빈 사전 만들기 빈 사전을 만듭니다. *값을 돌려주는 블록* 리스트 ([변수 ▾]) [ ([0]) : ([0]) , ([0]) : ([0]) ] 값을 ([변수 ▾]) 에 저장하기 리스트의 지정된 범위 값을 저장합니다. [파일 ▾] ([경로]) 있는지 확인하기 파일이나 폴더가 있는지 확인합니다. *값을 돌려주는 블록* ([1]) 글자형으로 바꾸기 변수의 타입을 글자형으로 바꿉니다. *값을 돌려주는 블록* ([1]) [정수형 ▾] 숫자형으로 바꾸기 변수의 타입을 숫자형(정수 또는 소수)으로 바꿉니다. *값을 돌려주는 블록* ([변수 ▾]) ⬉ ([변수 ▾]) ⬈ ([변수 ▾]) 각도 구하기 세 점 사이의 각도 구하기 *값을 돌려주는 블록*