
CH32V208 예제중 간단히 테스트 할수 있는 BLE HRS(Heart Rate Service) 예제를 테스트 해보자.
BLE 앱은 기존에 STM32WB55 를이용하여 테스트 했던 ST BLE Toolbox 를 이용하였다.
STM32WB55 SSM - Arduino BLE HRS(Heart Rate Service) 테스트
ST에서 제공하는 ST BLE Toolbox앱을 이용하여 STM32CubeIDE BLE HRM(Heart Rate) 테스트 코드는 복잡하고 쉽게 수정하기 어려운 구조 이므로 Arduino 환경에서 쉽고 간단하게 다양한 라이브러리를 추가 해서 테
nexp.tistory.com
CH32V208은 TinyOS를 이용하여 heartRatePeriodicTask 에서 주기적으로 심박수 측정값을 전송하는 구조 이다.
static void heartRatePeriodicTask(void)
{
if(gapProfileState == GAPROLE_CONNECTED)
{
// send heart rate measurement notification
heartRateMeasNotify();
// Restart timer
tmos_start_task(heartRate_TaskID, HEART_PERIODIC_EVT, DEFAULT_HEARTRATE_PERIOD);
}
}
heartRateMeasNotify 함수에 실제로 측정된 심박 데이터를 업데이트 하면 된다.
테스트를 위해 스위치를 누르면 심박 카운트 값을 증가 하도록 수정했다.
static uint8_t heartRateBpm = BPM_DEFAULT;
static void heartRateMeasNotify(void)
{
heartRateMeas.pValue = GATT_bm_alloc(gapConnHandle, ATT_HANDLE_VALUE_NOTI, HEARTRATE_MEAS_LEN, NULL, 0);
if(heartRateMeas.pValue != NULL)
{
uint8_t *p = heartRateMeas.pValue;
uint8_t flags = heartRateFlags[heartRateFlagsIdx];
// build heart rate measurement structure from simulated values
*p++ = flags;
*p++ = heartRateBpm;
if(flags & HEARTRATE_FLAGS_FORMAT_UINT16)
{
// additional byte for 16 bit format
*p++ = 0;
}
if(flags & HEARTRATE_FLAGS_ENERGY_EXP)
{
*p++ = LO_UINT16(heartRateEnergy);
*p++ = HI_UINT16(heartRateEnergy);
}
if(flags & HEARTRATE_FLAGS_RR)
{
*p++ = LO_UINT16(heartRateRrInterval1);
*p++ = HI_UINT16(heartRateRrInterval1);
*p++ = LO_UINT16(heartRateRrInterval2);
*p++ = HI_UINT16(heartRateRrInterval2);
}
heartRateMeas.len = (uint8_t)(p - heartRateMeas.pValue);
if(HeartRate_MeasNotify(gapConnHandle, &heartRateMeas) != SUCCESS)
{
GATT_bm_free((gattMsg_t *)&heartRateMeas, ATT_HANDLE_VALUE_NOTI);
}
// update simulated values
heartRateEnergy += ENERGY_INCREMENT;
//if(++heartRateBpm == BPM_MAX)
//{
// heartRateBpm = BPM_DEFAULT;
//}
heartRateRrInterval1 = heartRateRrInterval2 = HEARTRATE_BPM_TO_RR(heartRateBpm);
}
}
프로그램 실행하고 장치를 스캔하면 Hart Rate Sensor로 인식이 된다.

접속하면 스위치를 눌를때 마다 변경된 심박 데이터가 전송되는 것을 확인 할 수 있다.

반응형