본문 바로가기
Arduino(아두이노) 활용 강좌

Arduino Uno 로 HC-06 블루투스 슬레이브 모듈을 사용해 블루투스 통신으로 28BYJ-48 스테핑 모터 제어해 보기

by 오마이엔지니어 2019. 6. 25.
반응형

 

Arduino Uno 로 HC-06 블루투스 슬레이브 모듈을 사용해 블루투스 통신으로
4상 스테핑 모터 28BYJ-48 (5V) 스테핑 모터를 제어해 보는 프로젝트 입니다

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 드라이버

 
사용된 키트
아두이노 블루투스 스테핑 모터 키트

구성 배선도

 

사용된 예제소스

example code.txt

example code2.txt

example code3.txt


주의사항

첨부된 예제 코드를 아두이노 우노에 업로드 할 때 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


구글계정 로그인을 하면 무선으로 본인소유의 안드로이드 폰을 검색해서 간편하게 핸드폰에 어플 설치를 해줍니다

안된다면 안드로이드폰 구글 플레이스토어 에서 '시리얼 블루투스 터미널' 로 검색해서 설치 하도록 합니다

프로젝트를 위해서는 블루투스 안드로이드 어플이 필요합니다 (하단 링크를 클릭해 다운 받으세요) 

블루투스 모듈을 제어하기 위해서 "Arduino Bluetooth Controller" 어플을 다운 받습니다
https://play.google.com/store/apps/details?id=eu.jahnestacado.arduinorc


구글계정 로그인을 하면 무선으로 본인소유의 안드로이드 폰을 검색해서 간편하게 핸드폰에 어플 설치를 해줍니다

안된다면 안드로이드폰 구글 플레이스토어 에서 '아두이노 블루투스 컨트롤러' 로 검색해서 설치 하도록 합니다
  

*본 프로젝트를 위해 반드시 위 어플을 사용해야 하는것은 아닙니다

키설정이 가능한 블루투스 2.0 이나 Classic 을 지원하는 어플 아무어플이나 사용해도 무방합니다*

위 첨부 된 example code 는 0~1024 까지 원하는 값을 입력해서 정회전으로 회전 각도를 제어해 보는 예제입니다
위 첨부 된 example code2 는 10도씩 모터를 원하는 방향으로 정회전&역회전으로 구동시켜보는 예제입니다
위 첨부 된 example code3 는 360도씩 모터를 원하는 방향으로 정회전&역회전으로 구동시켜보는 예제입니다


예제코드를 살펴보면

#include <SoftwareSerial.h>
#include <Stepper.h>

 

위 2가지 라이브러리를 사용합니다 (아두이노 IDE 를 설치하면 기본 설치되는 라이브러리 입니다)



const int rxPin = 2;
const int txPin = 3;
SoftwareSerial mySerial(rxPin, txPin); // RX, TX
TX, RX 핀 설정 2,3 번 입니다 (배선도를 보면 알수 있듯이 TX, RX 는 크로스로 배선되어야 하기 때문에
예제코드와 반대로 배선은 TX는 아두이노의 2번핀에, RX는 아두이노의 3번핀에 배선 합니다

const int STEPS = 2048;
Stepper stepper(STEPS, 8,10,9,11);
스텝모터 회전각과 핀설정 입니다


void loop()
{
  if(mySerial.available()) {
      int val=0;
    char ch=mySerial.read();
      if(ch=='a')val=10;     
      else if(ch=='d')val=-10;
      else val=0;
     
      angle+=val;
      val=map(val,0,360,0,2048); 
      stepper.step(val);
      Serial.println(angle);     
      delay(10);
    }
}

두번째 예제코드는 위 부분이 추가 되는데
a를 눌러서 정회전으로 10도 d를 눌러서 -10도 제어하게 됩니다

세번째 예제코드는 10도를 360도로 변경했고 나머지는 동일합니다 (테스트를 하면서 원하는 각도로 변경해서 테스트 해 봅시다)



어플사용 방법이나 키 세팅 방법은 너무 간단해서 따로 설명하지 않겠습니다

그런데 하단 동영상을 잘 보면 블루투스 터미널 어플을 사용할 때는 360도로 코드 수정 했는데도 

a와 d를 누르면 180도 정도만 정회전&역회전 하는것을 확인 할 수 있습니다
반면에 a와 d로 키세팅을 해놓은 블루투스 컨트롤 모드 어플은 360도 회전을 하는것을 확인 할 수 있습니다
이는 아두이노에 전송되는 데이터가 쌓여서 생기는 문제로 정확한 회전각으로 모터 회전을 원한다면 블루투스 터미널 어플말고

키세팅을 할 수 있는 블루투스 컨트롤 모드 어플로 테스트 하면 됩니다 

HC-06 블루투스가 페어링이 잘 안되고 페어링 된 이후에 연결이 끊기거나 통신이 잘 안된다면?
전류(A)공급 문제입니다, 충분한 전류가 필요하며 HC-06 블루투스 모듈의 VCC를 3.3V가 아닌 5V로 연결해 줍니다
스테핑 모터 역시 모터류라 전류가 많이 소모되어 꼭 5V로 배선이 필요하기 때문에 블루투스를 3.3V로 배선하였지만
노트북이나 컴퓨터의 전류가 약한경우 3.3V로 제대로 동작이 안될수 있습니다
이 경우 HC-06 블루투스 모듈의 VCC를 3.3V가 아닌 5V로 연결해서 위 문제를 해결해 주도록 합니다

프로젝트 동영상 - 0~1024 수치를 입력해서 정회전 회전각 조정


프로젝트 동영상 - 10도씩 정회전&역회전


프로젝트 동영상 - 360도씩 정회전&역회전


참조포스팅
Arduino Uno 로 HC-06 블루투스 슬레이브 모듈을 사용해 안드로이드 스마트폰 앱으로 28BYJ-48 스테핑 모터 제어해 보기

 
example code3.txt
0.0MB
 
example code.txt
0.0MB
 
example code2.txt
0.0MB
반응형

댓글