라즈베리 파이 B/B+ 보드에서 기본으로 제공하는 직소 퍼즐 방식의 Scratch 2 코딩을 시작해 보자. 어린애들 까지도 배우기가 가능하다고 하는데 과연 주최 측이 과잉 홍보인지 아닌지 알아보기로 한다.
#라즈베리 파이 T bar 연결 LED 배선
라즈베리 파이3 B/B+보드 측면에 제공되는 40개의 인터페이스용 핀들을 사용하여 LED ON OFF를 위한 배선 작업을 준비하자. 어느 디지털 핀 번호를 사용해도 문제가 없겠지만 여기서는 현재 Pi 카메라를 설치한 상태이므로 직접 40개의 인터페이스 핀 들을 대상으로 점퍼선을 직접 설치하기가 용이하지 않으므로 아예 40핀 커넥터와 연결된 리본 케이블에 의해 빵판까지 T bar를 설치하여 배선 작업을 하도록 하자.
LED 배선 원리는 아두이노 보드와 같다고 보면 된다, 공급 전원의 전압도 5V이며 단지 라즈베리 파이 B/B+보드에는 제공하는 핀수가 총 40개로서 전압 공급 핀과 Ground 핀을 제외한 디지털 데이터 핀만 26개에 달한다.
위 사진 오른 쪽에 보면 T bar 의 5V 전원과 GND가 연결되어 있음을 참조하기 바란다. 아울러 사진에서 보듯이 BCM 넘버링 기준으로 16번 핀에 청색 LED 양극을 연결하였으며 동시에 직렬 연결된 220Ω 전류제한 저항의 반대쪽은 GND에 연결한다. 이로서 LED 하나를 ON OFF 해 보기 위한 준비가 완료 되었다.
Scratch 2의 시작
라즈베리 파이 메뉴 의 개발(Programming)에서 Scratch 2를 쉽게 발견할 수 있다.
Scratch 란 용어는 골프에서 핸디를 매길 때에 핸디 0 이 되는 기준 또는 원점을 말한다. 즉 프로 골퍼라면 일반인이 16홀 도는데 72타 안팎으로 스코어를 낼 수 있으면 즉 핸디가 0 인 것이다. 대부분 PGA 출전 프로라면 마이너스의 성적을 보여야 된다. 다시 말해서 Scratch 란 출발점을 뜻한다.
Scratch 2를 클릭하면 나타나게 되는 화면에 주목해 보자. 4개의 영역이 나타난다. 어린애들도 할 수 있는 시스템이므로 여기서 쫄지 말자.
⓵번 영역에서는 action 이 일어난다. 즉 움직이는 애니메이션이 가능하다는 의미이다.
⓶번 영역에서는 스프라이트(Sprite) 이미지를 처리하는 공간이다. 스프라이트란 백그라운드 캔밧 화면상에서 움직을 보여 주는 특정 오브젝트의 이미지를 뜻하며 나침반에서는 나침반 바늘이 스프라이트 이며 두더지 게임에서는 여기 저기서 랜덤하게 튀어 나오는 두더지가 스프라이트가 된다. 현재는 Sctratch 2의 냥이가 스프라이트로 지정되어 잇있다.
⓷번 영역에서는 퍼즐게임 하듯이 이해하기 쉬운 용어로 된 설명을 포함하는 명령 블록들이 나열되어 있다. Costumes 와 Sounds 에도 사용자가 커스마이즈 할 수 있는 여러 명령블록들이 들어 있으나 단지 LED를 주기적으로 ON OFF 시킴에는 사용하지 않을 계획이다.
⓸번 영역은 ⓷번 영역으로부터 퍼즐 블록들을 끌어다 조립하는 곳이다. 즉 퍼즐 블록 에디터로 보면 된다.
라즈베리의 GPIO 인터페이스 핀 사용 지원 라이브러리 모듈 설치
라즈베리 파이 보드의 파이선 코딩에서GPIO를 사용하기 위해서는 RPi.GPIO 라이브러리 모듈의 사전 설치가 필요하듯이 Scratch 2에서는 ⓷번 영역의 More Block을 클릭하여 나오는 메뉴 중에서 Add an EXtension을 선택 클릭하고 나타나는 창에서 Pi GPIO를 선택 OK 버튼을 누르자.
클릭 후에 Add an Extension 버튼 밑에 PI GPIO 와 함께 2개의 퍼즐 블록들이 추가됨을 볼 수 있다. 여기서 ▾를 클릭하여 0∼27번까지 숫자가 나타나면 앞서 연결해둔 LED 의 BCM 넘버 16을 선택 클릭해 두는데 블록을 옮기기 바로 전에 하기 바란다..
그 다음 Motion을 클릭하여 돌아가서 첫 번째 퍼즐 블록인 move 10 steps를 오른 쪽 ⓸번 영역으로 드래그 하여 퍼즐 맞추기 작업을 시작하자.
이어서 Control을 클릭하여 wait 1 secs를 드래그하여 set gpio 퍼즐 블록 밑에 가져다 끼우자.
그 다음은 다시 More Blocks에서 set gpio 의 BCM 번호를 16으로 선택하고 high를 low 로 선택 후 드래그 해다 끼우자.
그 다음은 ⓶번 영역의 스프라이트에서 choose sprite from library 아이콘을 클릭하여 라이브러리 창이 나타나면 두 번째 줄에 있는 화살표를 선채 OK 버튼을 누르면 스프라이트 화면에 화살표 아이콘이 나타난다.
이 작업 후 ⓵번 영역에 냥이 옆에 화살표가 나타난다. 이 화살표를 ⓵번 영역의 적당한 위치에 가져다 둔다. 이 화살표를 클릭할 때(when clicked)를 포착하여 코드가 실행되도록 해야 한다.
⓵번 영역으로 가서 화살표 아이콘을 더블 클릭하면 아무 코드도 없는 ⓸번 영역이 나타난다.
⓷번 영역Events 버튼을 클릭하여 나타나는 퍼즐 블로그들의 메뉴를 살펴보자.
여기서 when this sprite clicked 퍼즐 블록을 오른쪽 ⓸번 영역에 드래그 하자.
이어서 broadcast(message1)를 드래그 해다가 위 퍼즐 조각 밑에다가 끼운 후 message1을 눌러 new message 에 go 를 입력한다.
다시 ⓵번 영역으로 가서 냥이 아이콘을 더블 클릭하면 4개의 퍼즐 블록들이 맞춰져 있는 ⓸번 영역이 나타난다. Events 버튼을 눌러 when I received go 퍼즐 조각을 끌어다 4줄의 퍼즐 조각 위에다 맞춘다.
여기까지 코딩이 완료 되었으면 LED ON OFF를 실행시켜 볼 수 있다. 즉 다시 ⓵번 영역으로 가서 화살표 아이콘을 클릭하면서 LED가 ON OFF 됨을 다음 동영상에서 처럼 확인해 보자.
Scratch 가 어린이들도 배우기 쉽다는 건 완전히 헛소문이라고 보면 된다. 현재 필자는 앱인벤터 사용에 능숙한 편이며 아두이노 우노, NodeMCU, WeMos, 32비트 LOLIN보드를 비롯하여 라즈베리 파이 파이선, PC 의 아나콘다에 이르기까지 상당히 능숙하게 사용하는 편인데 LED ON OFF 배선 및 코딩을 해보니 대략 4시간 정도 걸렸다 함은 결국 앱 인벤터에 비해서 난이도 상의 차이가 그다지 없어 보인다.