Arduino Uno 로 HC-06 블루투스 슬레이브 모듈을 사용해 안드로이드 스마트폰 앱으로
28BYJ-48 (5V) 4상 스테핑 모터를 제어해 보는 프로젝트 입니다
HC-06 블루투스 슬레이브 모듈은 다양한 무선 블루투스 프로젝트를 가능하게 합니다
Arduino(아두이노) 나 PC, 안드로이드 폰과 연결하여 다양한 프로젝트를 수행할 수 있습니다
무선이라 편리하며 Google 안드로이드 앱으로 다양하게 응용이 가능 합니다
<HC-06 블루투스 슬레이브 모듈 이미지>
HC-06 블루투스 슬레이브 모듈은 VCC-Voltage, GND-Ground, TXD-Transmit Data, RXD-Receive Data
4핀으로 구성되어 있습니다
EN, STATE 핀이 있지만 대체로 사용하지 않습니다
<HC-06 블루투스 슬레이브 모듈 회로도>
HC-06은 블루투스 2.0 이므로 안드로이드 어플로 연결할때 페어링을 해줘야 하는데 페어링 기본 이름은 HC-06 이며 기본 코드는 1234 입니다
사용된 부품
Arduino Uno R3 (Italy)
미니브래드보드
HC-06 블루투스 슬레이브 모듈
점퍼케이블(숫놈-암놈)
점퍼케이블(숫놈-숫놈)
5V 스테핑 모터 28BYJ-48 & ULN2003 드라이버
구성 배선도
사용된 예제소스
주의사항
첨부된 예제 코드를 아두이노 우노에 업로드 할 때 HC-06 블루투스 모듈은 아두이노 우노와 연결이 안 되어 있는
상태에서 업로드를 마친 후 아두이노 우노와 연결 하도록 합니다, 에러나 업로드가 안되는 경우가 있습니다
이점 주의 하도록 합시다
기본적으로 HC-06 블루투스 모듈은 전원이 인가되면 빨간색 전원LED가 지속적으로 깜박입니다
하지만 어플과 연결해서 페어링에 성공하면 LED는 점등되어 멈추게 됩니다
(전원LED가 들어오지 않는다면 모듈의 문제이거나 모듈의 LED에 문제일수 있습니다)
아두이노와 기본 배선시 데이터를 보낼때 한쪽에서는 데이터를 받아줘야 하기 때문에블루투스 모듈 RX -------- 아두이노 TX블루투스 모듈 TX -------- 아두이노 RX의 배선으로 연결 해 줘야 합니다
프로젝트를 위해서는 블루투스 안드로이드 어플이 필요합니다 (하단 링크를 클릭해 다운 받으세요)
블루투스 모듈을 제어하기 위해서 "Serial Bluetooth Terminal" 어플을 다운 받습니다
https://play.google.com/store/apps/details?id=de.kai_morich.serial_bluetooth_terminal&hl=ko
구글계정 로그인을 하면 무선으로 본인소유의 안드로이드 폰을 검색해서 간편하게 핸드폰에 어플 설치를 해줍니다
안된다면 안드로이드폰 구글 플레이스토어 에서 '시리얼 블루투스 터미널' 로 검색해서 설치 하도록 합니다
어플사용 방법
어플 사용전에 HC-06 블루투스 슬레이브 모듈은 Bluetooth 2.0 모듈이기 때문에 사전에 스마트폰 관리자에서
블루투스 관리자를 실행한 다음 페어링해서 등록해 줍니다
물론 HC-06의 기본 디폴트 비밀번호는 1234 입니다
구글플레이스토어에서 어플을 다운받아서 설치해 줍니다
아이콘을 클릭해서 어플을 실행합니다 (물론 블루투스는 사전에 미리 사용으로 설정해 놓아야 겠죠?)
메뉴 버튼을 눌러서 메뉴를 선택해 줍니다 (메뉴 버튼은 안드로이드폰 기종에 따라서 위치가 틀립니다)
메뉴 버튼을 누른후 Device (장치)를 선택해서 눌러주면 됩니다
그러면 Bluetooth Classic 카테고리에 HC-06 이 장치로 검색된것을 확인할 수 있습니다
HC-06 을 선택해서 눌러줍니다
자동 페어링이 진행되고 하단 콘솔창을 통해서 Connected 가 나오면 연결 된 것 입니다
(만약 연결이 안되거나 연결이 끊겼다면 위쪽 상단 메뉴중 접속 버튼이 있는데 접속 버튼을 눌러서 재연결 해주면 됩니다)
주의! (RDY) 메세지가 나와야 정상적으로 모터를 구동시킬 준비가 된 것 입니다
만약 RDY 메세지가 나오지 않는다면 아두이노의 RST 리셋 버튼을 눌러서 리셋시켜 주면 됩니다
콘솔 입력창에 'on' 을 입력하면 콘솔창에 'Motor is on' 이 출력되며 모터가 구동 됩니다
콘솔 입력창에 'off' 을 입력하면 모터 구동이 멈춥니다 (off 는 여러번 눌러줘야 멈추는 아쉬운 점이 있습니다)
원래는 다른 안드로이드 앱에 맞춰서 제작된 소스라서 본 테스트와는 완벽하게 잘 맞지가 않습니다 ㅠㅠ
예제코드를 살펴보겠습니다
#include <Stepper.h>
아두이노 IDE를 설치하면 기본으로 설치되어있는 Stepper.h 라이브러리를 사용합니다
#define STEPS 100
스테핑모터 분해능 설정입니다
Stepper small_stepper(STEPS, 8, 10, 9, 11);
int Steps2Take = 2038;
void setup(){
Serial.begin(9600);
Serial.print("RDY!");
}
스테핑 모터 핀설정과 셋업시
RDY 메시지가 출력되는것을 확인할 수 있습니다
void loop (){
if (Comp(on")==0) {
Serial.write("Motor is on\n");
running = true;
}
if (Comp("off")==0) {
Serial.write("Motor is off\n");
running = false;
}
if (running == true){
run();
}
// delay(250);
}
on 은 모터구동, off 는 모터정지 입니다
on, off 부분을 원하는 문자나 숫자로 변경해서 수정후 테스트 가능합니다
프로젝트 동영상
'Arduino(아두이노) 활용 강좌' 카테고리의 다른 글
Arduino Uno 로 DS1302 RTC 모듈과 MAX7219 (8X8) 도트 매트릭스 모듈을 이용해 시계 만들어 보기 (0) | 2018.12.11 |
---|---|
아두이노 ESP8266 GPIO 와이파이 쉴드를 사용해서 웹으로 LED 제어해보고 조도센서 출력값 변화 확인해 보기 (0) | 2018.11.27 |
Arduino Uno 로 LJ12A34Z/BX 근접 스위치 센서를 사용해서 근접 금속감지 경보기 만들어 보기 (0) | 2018.11.10 |
아두이노 다기능 확장쉴드 사용법 알아보기 (0) | 2018.10.20 |
Arduino Uno 로 토양 수분센서를 사용해서 I2C 1602 캐릭터 LCD에 토양 수분 출력값 출력해 보기 (0) | 2018.09.08 |
댓글