코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2016-03-03 11:22:25
위의 영상은 자동차를 스크래치를 통해 제어하는 동영상입니다.
위의 영상을 보시면 아시겠지만 블루투스를 통해 무선으로 아두이노로 만든 자동차를 움직이는 부분이 나오는데요.
이미 이 글을 읽으신다면 아시겠지만 소프트웨어 교육에서 유명한 스크래치는 세계 곳곳에서 널리 쓰이고 있는 저학년용 코딩 툴입니다.
스크래치는 어린 학생들이 이해하기 힘든 소프트웨어 프로그래밍과 알고리즘 논리를 쉽게 이해할 수 있도록 블록을 드래그 앤 드롭하는 방식으로 이루어져 있습니다.
간편하면서도 직관적으로 만들어졌음에도 다양한 기능들을 빼놓지 않고 있다는 것이 가장 큰 장점입니다.
그 중에서 S4A(Scratch for Arduino)는 스크래치와 아두이노를 결합하여 소프트웨어와 하드웨어 모두를 체험할 수 있도록 도와주는 툴입니다.
<S4A의 로고>
아두이노에 Firmata코드를 업로드 시켜서 지속적으로 아두이노와 스크래치가 UART통신을 통해 스크래치의 코드의 정보를 보내 아두이노의 핀을 실시간으로 제어하는 것이 S4A의 작동원리입니다.
(그 덕분에 스크래치와 연결할 경우 지속적으로 아두이노의 Tx와 Rx LED가 깜빡깜빡거리는 것을 볼 수 있습니다.)
하지만 아두이노에 블루투스를 연결할 경우 그 블루투스와 스크래치를 연결하여 스크래치의 데이터를 아두이노쪽으로 보낼 수 있습니다.
<통신 수식도>
이번 글에서는 HC-06모듈을 사용하여 스크래치와 아두이노를 무선으로 통신하는 방법을 알아보고 LED를 깜빡거려 보겠습니다.
※ 이 글에서는 S4A의 기본 사용법에 대해서는 설명하지 않습니다.
S4A의 기본 사용법에 대해 먼저 파악해야 할 경우에는 아래의 링크를 참고하세요.
S4A 소개와 설치 : http://kocoafab.cc/tutorial/view/380
S4A를 사용하여 LED를 깜빡이기 : http://kocoafab.cc/tutorial/view/381
NO | 부품명 | 수량 | 상세설명 |
1 | 오렌지 보드 | 1 | |
2 | LED | 2 | 아무색이나 2개 |
3 | 330Ω 저항 | 2 | |
4 | 블루투스 모듈 | 1 | HC-06 |
5 | 브레드보드 | 1 | |
6 | 점퍼케이블 |
부품명 | 오렌지 보드 | LED | 330Ω 저항 | 블루투스 모듈 | 브레드보드 | 점퍼케이블 |
파트 |
주의 : 블루투스의 TXD핀과 RXD핀이 위에서 0번핀과 1번핀에 연결되어 있는데 핀에서 UART통신을 하고 있을 때에는 아두이노로 코드 업로드가 되지 않습니다.
UNO의 경우 하드웨어적으로 1개의 UART통신만 가능하기 때문에 업로드 또한 UART통신이므로 동시에 같이할 수 없습니다.
아두이노에 코드 업로드를 하실때에는 0번핀과 1번핀에 연결된 선을 제거 후에 업로드하고 업로드가 끝나면 다시 꽂아주시면 됩니다.
먼저 블루투스가 스크래치와 통신하기 위해서는 블루투스의 통신속도를 38400으로 맞춰주어야 합니다.
보통 9600Baud로 설정이 되어있을텐데요. 바꾸는 작업을 하기 위해서는 ATcommand를 통해 블루투스의 속도를 바꿔주어야 합니다.
아래 코드를 통해 AT모드의 접근이 가능합니다.
※ 만약 기존 사용하던 블루투스 모듈이 통신 속도가 38400으로 설정되어 있다면 이 작업은 건너뛰어도 됩니다.
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(2, 3); //Connect HC-06 TX,RX
void setup()
{
pinMode(8, OUTPUT);
Serial.begin(9600);
Serial.println("Hello!");
// set the data rate for the BT port
BTSerial.begin(9600);
}
void loop()
{
if (BTSerial.available())
Serial.write(BTSerial.read());
if (Serial.available())
BTSerial.write(Serial.read());
}
<HC-06 ATcommand Set 중 통신 속도 변경 명령어>
위의 사진과 같이 ATcommand중 블루투스의 통신 속도를 변경하는 명령어는 AT+BAUD입니다.
여기서는 38400으로 변경할 것이기 때문에 위 코드를 업로드 후에 시리얼 모니터 창에 AT+BAUD6으로 입력해 주시면 됩니다.
정상적으로 설정되었을 경우에는 OK라는 신호를 받을 수 있습니다.
※ 위 코드로 ATcommand가 먹히지 않는 경우에는 외부 프로그램을 통해 쉽게 사용할 수 있습니다.
ATcommand를 사용할 수 있도록 도와주는 프로그램의 경우에는 네이버에서도 쉽게 구할 수 있으니 참고하세요.
블루투스를 스크래치와 사용하기 위해서는 컴퓨터에 블루투스 장치를 추가시켜야 합니다.
이 작업은 데스크탑과 노트북 둘 다 가능합니다. 하지만 데스크탑에서 블루투스를 사용할 경우에는 기본적으로 블루투스가 지원되지 않기 때문에 블루투스 동글이 필요합니다.
<블루투스 동글>
이 글에서는 데스크탑 대신 노트북을 사용하였습니다.(데스크탑과 블루투스 동글이 있음에도 동글 장치를 인식하지 못해 노트북을 사용하였습니다.)
먼저 시작 - 장치 및 프린터에 들어갑니다.
그 다음에 오른쪽 버튼 클릭 - 장치 추가를 눌러서 검색되는 블루투스 중 HC-06에 해당하는 블루투스를 검색하여 추가합니다.
이 글에서는 HC-06의 이름을 scratch로 변경하여 사용하였습니다.
제대로 HC-06이 연결되었을 경우 아래와 같이 장치 추가에서 검색이 됩니다. 검색이 안될 경우 다시 한번 블루투스 모듈의 연결을 확인해 보세요.
다음을 눌러 다음 페이지로 이동하면 아래와 같은 창이 뜨게 되는데 두번째 장치의 연결 코드 입력을 클릭하여 핀번호를 입력합니다.
보통 블루투스의 핀번호를 건드리지 않았을 경우 default값은 1234나 0000으로 저장되어 있습니다.
(이 핀번호 또한 ATcommand를 통해 변경이 가능합니다.)
핀번호를 제대로 입력하였다면 잠시 뒤 제대로 장치를 추가했다는 창과 함게 새로운 포트가 생겼다는 메시지를 오른쪽 하단에서 볼 수 있습니다.
장치관리자에서 확인할 경우 포트탭에서 정상적으로 포트가 잡혀있는 것을 볼 수 있습니다.
이때 블루투스이 포트는 2개가 잡히는데 하나는 송신을 위한 포트이고 하나는 수신을 위한 포트입니다.
편하게 블루투스의 Tx, Rx를 생각하시면 됩니다.
컴퓨터에 블루투스 모듈을 추가하였다면 이제는 컴퓨터에서 S4A를 실행시킵니다.
보통 S4A를 실행하면 자동으로 보드 검색 후 보드의 포트가 인식되는데 여기서는 노트북에 직접 보드를 연결하지 않았기 때문에 보드의 포트가 잡히지 않습니다.
그 대신 현재 활성화된 블루투스 포트가 자동으로 잡히게 됩니다.
만약 블루투스의 포트가 자동으로 잡혔다면 스크래치와 블루투스가 연동이 된 상태입니다.
아래 사진의 경우 COM4번(블루투스 모듈 포트)가 자동으로 잡혀져 있는 상태입니다.
만약에 자동으로 잡히지 않는다면 수동으로 잡아줄 수 있습니다.
아래 사진과 같이 보드 상태창에서 오른쪽 버튼을 눌러 시리얼/USB 포트 선택을 하여 블루투스의 포트를 선택할 수 있습니다.
블루투스의 포트는 2개로 설정되어 있는데 어떤것을 해야할지 모를 경우 둘 중에 아무거나 클릭해보시면 됩니다.
제대로된 포트를 선택할 경우 연결이 되고 아닐 경우에는 연결이 되지 않습니다.
여기까지 와서 S4A와 블루투스 포트가 연결되었다면 이제 코드를 작성하시고 실행하시면 제대로 작동하시는 모습을 확인해 볼 수 있습니다.
아래 코드는 5번핀과 6번핀에 연결된 LED를 키보드로 제어하는 코드입니다. s키와 a키를 통해 무선으로 LED를 제어할 수 있습니다.
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!