BLE 9

BLE 란?

1. BLE란BLE는 BlueTooth Low Energy의 약어로서 블루투스 4.2버전부터 지원하기 시작했다.용도는 기존의 블루투스 BR/EDR에 비해 저전력으로 사용하는데 적합하도록 설계되었다.블루투스 스마트 레디 는, 듀얼모드라고도 불리우며 BR/EDR + BLE 를 의미한다.블루투스 스마트 는, 싱글모드라고도 불리우며 BLE 를 의미한다. 최근, BLE를 이용한 제품들이 많이 나오고 있다. 미아 방지를 위한 제품도 나와있고, 쇼핑센타에서 제품 광고에도 사용되고 있다(예 시럽) 또한 가정에서도 IoT에도 적용이 되고 있으며, 저전력이라는 장점으로 많은 곳에 활용이 되는 추세이다. 2. BLE 개발에 관하여BLE를 개발하기 위해서는 기본적으로 Protocol을 이해 해야 한다. 물론 BLE 칩 제조사..

개발/BLE 2016.07.07

CC2540 Disconnect the Connection Immediately

Central과 Peripheral간에 Connection을 해제 하기 위해서는 Terminate API를 사용하는데, 이것을 사용할경우엔 notify를 받아야지만 Connection이 해제 된다. 즉, 이제 더이상 너랑 붙어있기 싫다고 요청했으면 응답을 받은뒤에야 connection 상태를 해제 한다는 것이다. 그러나 사용하기에 따라서는 일방적으로 Connection을 해제 할고 싶을때가 있다.이때 사용하는 API가 바로 요거다. HCI_EXT_DisconnectImmedCmd( simpleBLEConnHandle ); 이 API는 notify없이 곧바로 disconnect가 된다. 그렇게 되면 문제는 다른 한쪽에서는 계속 connect 상태가 된다. 가령 Connect 상태에서 Central이 일방적..

개발/BLE 2016.07.01

CC2540 Supervision Timeout

Supervision timeout 이란? 슬레이브와 마스터간의 Connection 상태에서 어느한쪽이 일방적으로 전원을 OFF 할경우 Connection 상태를 해제 하기 위한 타임 모니터링이다. 그런데.... 이걸 어떻게 활용해야 하나...샘플 코드에는 // Supervision timeout value (units of 10ms, 1000=10s) if automatic parameter update request is enabled#define DEFAULT_DESIRED_CONN_TIMEOUT 300 저렇게 define이 되어 있기때문에 저 값만 바꾸면 될것 같지만 사실 그렇지 않다.. 저것의 용도는 DEFAULT_ENABLE_UPDATE_REQUEST is set to TRUE 로 되어 있어야..

개발/BLE 2016.07.01

CC2540 TX Power Control

CC2540의 TX 파워를 제어할수가 있다... 물론 파워를 제어하는 이유는 배터리를 좀더 오래쓰기 위함이다. 반면에 파워가 약하면 인식하는 거리가 짧아지는 것은 당연!!! 해당 API는 아래와 같다. HCI_EXT_SetTxPowerCmd(parameter); parameter에는 4가지 종류가 있다. 그외에는 의미가 없다는 TI 답변이다. 단 TX 파워는 Initial 과정에서 단 한번만 설정이 가능하다... 코드 상에서 마음데로 파워를 줄였다 늘렸다 할수 없다... 즉, initial과정에서 한번만 셋팅되면 프로그램 상에서 재 셋팅이 안된다는 말이다.

개발/BLE 2016.06.30

CC2540 Direct Connect

Central과 Peripheral간의 고유 어드레스를 알고 있으면 다른 디바이스들의 방해를 받지 않고 다이렉트로 컨넥트 할수 있다. 이는 주변의 많은 BLE 기기들이 존재할시에 유용하게 사용할수 있는 기능이다. 아래는 예제 코드와 참조 주소. 여기 uint8 desired_adv_event_type = GAP_ADTYPE_ADV_DIRECT_IND; uint8 desired_adv_direct_addr[] = { /* Central의 보드 어드레서 */ , LSB 0x3C, 0x2D, 0xB7, 0x85, 0xEE, 0xFE }; GAPRole_SetParameter( GAPROLE_ADV_EVENT_TYPE, sizeof( uint8 ), &desired_adv_event_type ); GAPRole..

개발/BLE 2016.06.30

CC2541 Sleep/Normal Mode Control API

CC2541 슬립및 노말 모드제어를 위해 사용되는 API 기본적인 DEV 소스 코드상에는 BLE 관련한 태스크 이벤트가 발생하지 않을경우최대 400ms 이후에는 강제로 슬립으로 들어간다. 따라서 400ms 이상 제어되는 일반 로직인경우 예를 들어 부저를 1초동안 울린다거나 등등의 기능을 수행할경우 400ms 이후에는 강제로 슬립이 진입되기 때문에 슬립진입을 막아야 한다. 방법은 아래 API를 사용하면됨. 1. 슬립진입 osal_pwrmgr_device( PWRMGR_BATTERY ) 2. 노말상태유지 osal_pwrmgr_device( PWRMGR_ALWAYS_ON );

개발/BLE 2016.06.29