프로젝트

HC-06 자동 설정 장치 만들어보기!

페이지 정보

작성자 드래곤사우르스 작성일17-02-14 13:14 조회2,428회 댓글0건

본문


안녕하세요 메카솔루션입니다.


이번에는 HC-06을 자동으로 설정해주는 장치를 만들어보고자합니다.


pick_manager-8 


그런대 HC-06자동 설정장치를 만들게 된이유는 간혹 상품이 주문될때 HC06 두개를 슬레이브와 마스터로 짝을 맞추어 설정해달라는 요청이 오는데 적은 수량은 하나하나 명령어를 넣어 주어서 해줄 수 있으나, 300개 단위로 요청이 들어오면 도무지 손으로 하기에는 어려운 수량이 되어버립니다.


그래서 급한대로 장치를 만들어 보게 되었습니다.


 


만능기판에 바로 납땜해서 보드형으로 사용할 수 있도록 해보았습니다.


노란버튼 -> 마스터로 설정


초록버튼 -> 슬레이브로 설정


파란버튼 -> 장치 번호 1씩 추가


이런식으로 기능을 설정하고 만들어보았습니다.


회로도 알아보기




부품 알아보기


부품 목록 바로가기!


ㄴㅁㅇㄹ



소스코드 알아보기



#include <SoftwareSerial.h>

SoftwareSerial btseri(2, 3);

int button[] = {4,5,6};

int count = 0;

void setup() {

  Serial.begin(9600);

  btseri.begin(9600);

  for(int i = 0;i<3;i++){

    pinMode(button[i],INPUT_PULLUP);

  }

}


void loop() {

  switch(ReadButton()){

    case 0://set Master

      Serial.println("set Master");

      SendAT("AT");

      PrintReq(1000);

      SendAT("AT+ROLE=M");

      PrintReq(1000);

      SendAT("AT+NAMEBT"+String(count));

      PrintReq(1000);

      SendAT("AT+RESET");

      PrintReq(1000);

      SendAT("AT+RESET");

      delay(1000);

      SendAT("AT");

      PrintReq(1000);

    break;

    case 1://set Slave

      SendAT("AT");

      PrintReq(1000);

      SendAT("AT+ROLE=S");

      PrintReq(1000);

      SendAT("AT+NAMEBT"+String(count));

      PrintReq(1000);

      SendAT("AT+RESET");

      delay(1000);

      SendAT("AT");

      PrintReq(1000);

    break;

    case 2://add count

      count++;

      Serial.println(count);

    break;

  }

}


int ReadButton(){

  for(int i = 0;i<3;i++){

    if(digitalRead(button[i]) == LOW){

      delay(500);

      return i;

    }

  }

  return -1;

}


void SendAT(String str){

  Serial.println(str);

  btseri.print(str);

  //btseri.print("\n\r");

}


void PrintReq(unsigned long t){

  unsigned long last = millis();

  while(millis() - last < t){

    while(btseri.available() > 0){

      Serial.write(btseri.read());

    }

  }

  Serial.println(".");

}



예전에 HC-06의 사용을 위해 AT 커멘드를 직접 입력해 주었지만 사실 AT커멘드를 아두이노의 시리얼 로 입력만 하여도 충분히 설정이 가능합니다.



이를 이용하면 반복되는 보드의 설정을 직접 손으로 할 수 없을때는 아두이노 보드에 프로그램을 올려두면 충분이 많은 부분을 자동으로 설정할 수 있습니다.


pick_manager-11 


읽어주셔서 감사합니다.

 


물론 HC-06 300개 설정하는 거는 두번다시 하기 싫습니다.


진짜루...




감사합니다.


출처 : 메카솔루션


www.mechasolution.com




댓글목록

등록된 댓글이 없습니다.


모바일 버전으로 보기