[아두이노] ScratchX로 아두이노 제어

IOT/아두이노|2019. 10. 4. 09:00

[아두이노] ScratchX로 아두이노 제어



지난 시간에 S4A 스크래치로 아두이노를 제어하는 방법을 알아 보았습니다. S4A 스크래치 말고도 다른 스크래치로도 아두이노를 제어 한다고 했었죠. S4A 스크래치는 해당 스크래치 프로그램을 PC에 설치 한 뒤에 아두이노를 연결했지만 이번에 배울 스크래치는 온라인 상에서 웹브라우저로 아두이노를 연결하여 제어 할 수 있는 ScratchX에 대해 이야기를 하고자 하겠습니다. 유사하게 국산 엔트리도 있지만 우선 ScratchX로 아두이노를 실험해 봅시다.

1. ScratchX



스크래치 형태로 여러가지 실험을 할 수 있는 베타 버전입니다. 오래 전 부터 베타 버전이였는데 아직도 베타 버전이네요. 온라인 상에서 스크래치x는 외부 하드웨어와 연동하여 다양한 실험을 할 수 있는 서비스를 제공하고 있습니다.


위 그림을 보시는 것처럼 다양한 확장 프로그램들 제공합니다. 원하는 실험을 선택하시면 해당 실험에 맞는 스크래칙 블록들이 세팅되어 있어서 특정한 전용 실험이 가능합니다. 첫번째 이미지는 아두이노인데 아두이노와 연결하여 실험할 수 있는 확장프로그램으로 생각하시면 됩니다.

2. 스크래치 플러그인 설치


온라인 상에서 스크래치 프로그램을 사용하기 위해서 Adobe 플래시 플레이어가 설치되어 있어야 합니다. 이 부분은 ScrtchX 사이트에 가셔서 해당 확장프로그램을 실행시켜보시면 Adobe 플래시 플레이어가 안깔려 있으면 설치하라는 멘트가 나오고 설치되어 있으면 활성화 할지를 선택하라는 멘트가 나올꺼에요. 여러분들이 직접 설치가 안되었으면 설치하고 활성화 안되었으면 활성화 시키면 됩니다. 이부분은 설명이 필요 없겠죠.

플러그인 설치하셔야 외부 아두이노와 연결을 할 수 있습니다.




플러그인 다운로드 주소로 가시면 Mac과 윈도우 버전으로 나뉘고 크롬과 다른웹 브라우저로 나뉩니다. 참고로 플러그인을 설치한다고 무조건 다 실행되지는 않습니다.

윈도우 64bit 운영체제에서는 크롬버전을 설치를 해도 연결이 안됩니다.


다른 웹브라우저용 플러그인을 설치를 해도 대부분 위처럼 연결이 안되거나 아예 플러그인이 인식이 대부분 안되네요.


위 그림처럼 파이어폭스에서 빨간불로 플러그인 인식이 안되더군요. 알아보니깐 윈도우 64bit에서는 안되고 32bit 특정 버전을 설치하면 인식이 된다고 하네요.

오기가 생겨서, 크롬, 파이어폭스, 오페라, 익스플로우, 엣지, 웨일, 오페라 네온, 스윙 브라우저들을 다 실행 시켜보았습니다. 연결인 안되는 노란불이 들어오거나 플러그인 인식이 안되는 빨간불이 들어오더군요. 딱 하나 스윙 브라우저가 정상적으로 인식이 되었습니다.

스윙 브라우저를 찬양하라!


스윙 브라우저에서 정상적으로 아두이노가 연결이 되었네요. 정상 연결인 초록불이 들어 왔습니다. 안되면 파이어폭스 특정 버전으로 다시 설치 할까 했는데 그럴 필요가 없어졌네요. 스윙 브라우저로 정상적으로 플러그인이 작동해도 다행이였어요.

3. 아두이노 펌웨어


아두이노에 펌웨어 소스를 이식해야 하는데 따로 다운로드를 받을 필요가 없습니다. 아두이노 IDE에서 제공되는 펌웨어 소스를 그대로 사용 가능합니다.


위 그림에 표시된 StandardFimata 소스를 아두이노에 이식한 후 ScratchX에 연결 하시면 됩니다.

4. ScratchX 실행


확장프로그램 중 아래 그림처럼 이미지를 클릭해서 들어 가시면 됩니다. 처음 블록 코딩을 잘 모르시는 분은 아래 sample project를 누르시면 됩니다. "blink 예제"가 세팅되어 있거든요.


전 그냥 이미지를 클릭하고 아무것도 되어 있지 않는 빈상태로 들어 갔네요.

추가블록에 아두이노 연결이 성공하면 아두이노 블록들이 표시 됩니다. 아두이노 블록과 스크래치 블록들을 조합하여 1번, 2번 블록을 아래 그림처럼 배치해 보세요.


1번 블록 : 13번 핀을 led A에 연결은 디지털pin으로 출력모드로 led_A~led_D로 4개의 출력모드로 되어 있습니다. 해당 핀을 연결한다는 것은 해당 13번 핀을 디지털 출력모드로 선언으로 이해하시는 것이 좋을 것 같아요.

const byte led_A = 13;
void setup()
{
  pinMode(led_A, OUTPUT);
}

2번 블록 : led_A핀을 켜기(HIGH)->1초대기-> led_A핀을 끄기(LOW) -> 1초대기 를 무한 반복합니다. 즉, 1초 단위로 깜박이는 동작을 수행하게 됩니다.

void loop()
{
  digitalWrite(led_A, HIGH);
  delay(1000); 
  digitalWrite(led_A, LOW);
  delay(1000); 
}

아두이노 코딩을 해보셨다면 대충 어떤 느낌의 블록 코딩인지 아시겠지요.

주의할 점은 스크래치를 실행을 누른다고 무조건 실행이 되지 않습니다. 위 1번 블록을 먼저 클릭해서 세팅을 한 뒤에 실행을 눌러야 정상적으로 동작합니다. 왜! 실행을 눌렀는데 13번 LED가 깜박이지 않는 거야 하고 실수를 범할 수 있으니 꼭 1번 블록 코딩을 먼저 클릭을 한번 한 뒤에 실행버턴을 눌러 실행하시기 바랍니다.

4. 실행


1) 회로도





2) ScratchX에서 블록 코딩



주의 : "when device is connected" 블록은 먼저 수동으로 클릭해서 세팅 한 후 클릭했을 때 실행을 수행하시기 바랍니다 그냥 클릭했을 때 누르면 작동 안해요.

3) 결과


정상적으로 Red LED가 깜박이네요.


마무리


ScratchX로 실험 할 때는 플러그인 문제가 가장 골치거리 입니다. 그리고 플러그인이 가끔 인식이 잘 안될 때가 있습니다. 다시 해당 확장 프로그램을 접속하시거나 아두이노의 USB를 PC에서 분리 했다가 다시 연결해 보세요. 몇번 시도하면 정상적으로 인식 됩니다.

S4A 스크래치 보다는 온라인 상에서 실시간으로 연결 할 수 있다는 장점이 있는데 문제는 플러그인 문제가 브라우저마다 인식 문제가 있기 때문에 불편 합니다. 그래도 따로 프로그램을 설치 할 필요없이 플러그인만 설치하면 되니깐 빠르게 인터넷이 연결 된 아무 PC에서 실험을 할 수 있어 괜찮은 것 같아요.

S4A 스크래치로 아두이노 연결하는 것만 post하기가 약간 그런 것 같아서 다른 스크래치도 다 연결해 보는 실험을 하면 괜찮을 것 같아서 ScratchX와 아두이노 연결 편을 post로 작성해 보았네요. 내일은 엔트리로 연결을 해보겠습니다. 한번에 스크래치와 아두이노 연결 부분을 post로 다 정리해 놓아야 겠어요.


댓글()