본문 바로가기
STMicro STM32

[HM-10] BLE 모듈 제어하기_SLEEP모드

by 소나무기운 2020. 12. 10.
반응형

안녕하세요. 소나무기운입니다.

 

오늘은  HM-10 BLE모듈을 다뤄 볼겁니다.

 

BlueTooth와 다르게 BLE는 몇가지 특징이 있지요.

요즘은 핸드폰과 연결을 위해서  BLE를 많이 사용합니다.

 

ㅁ BLE의 특징

1. 저소비전력

2. 낮은 통신 속도

3. 안드로이드 연결 가능, 아이폰도 연결 가능( 블루투스는 안됩니다.)

 

ㅁ 소스 코드 정보

1. STM32F767ZI 사용.

2. HAL Driver 사용

 

안드로이드용 BLE테스트 프로그램

프래이스토어에서 "BLE 터미널 검색"(이 앱은 참 광고가 많이 떠서 짜증남)

제일 많이 사용하는 BLE같습니다.

 

at명령어를 사용합니다.

HM-10의 AT명령어는 여기저기 설명이 많이 되어 있으니 검색해 보세요.

 

기본 송신과 수신의 함수입니다.

모듈

//==============================================================================
void HM10_TxCmd(char *szCmd)
{ // at command 데이터 보내기
    // tx buffer clear
    while (EUSART1_is_tx_done() == false)
        __delay_ms(1);
    // rx buffer clear
    while (EUSART1_is_rx_ready() == true)
        getch();

    // data send
    while (*szCmd != 0x00)
    {
        putch(*szCmd++);
        CLRWDT();
        __delay_ms(1);
    };
}

//==============================================================================
bool HM10_RxRes(char *szCmd)
{ // 기대한 응답과 같은지 아닌지 검사
    uint16_t i;
    char ch;

    for (i = 0; i < 500; i++)
    { // 500mS
        if (EUSART1_is_rx_ready() == true)
        {
            ch = getch();
            if (ch != *szCmd++)
            { 
                return false;
            }
            
            if (ch == '\n')
                return true;
        }
        __delay_ms(1);
    }
    return false; // time out
}

 

버전 확인하는 방법 AT컴맨드

//==============================================================================
void HM10_ChkVer(void)
{ //
    uint8_t j;
    while (1)
    {
        HM10_TxCmd("AT+UART?\r\n");
        for (j = 0; j < 100; j++)
        {
            __delay_ms(10);
            CLRWDT();
        }

        HM10_TxCmd("AT+VERS?\r\n");
        for (j = 0; j < 100; j++)
        {
            __delay_ms(10);
            CLRWDT();
        }
    }
}

 

반응형

댓글