2015년 2월 5일 목요일

Blue Basic...CC2540/2541을 쉽게 사용하기

Bluetooth Low Energy (BLE)에서 가장 많이 사용되는 칩들중에 하나가 TI의 CC2540/2541이다. 이 SoC에는 BLE관련 회로 뿐 아니고 8051 코어도 같이 들어있어 단순히 BLE 통신용 모듈로서만 사용하는게 아니고 추가로 자신의 어플리케이션 코드를 집어넣어 별도의 추가 프로세서 없이 standalone으로 사용할수도 있다. 


개발을 위한 툴들도 거의 다 무료로 구할 수 있지만 문제는 개발을 위해 공부해야 하는 것이 상당히 많다는 것이다. 



그래서 이 CC2540/2541 환경에서 개발을 쉽게 할 수 있도록 나온것이 Blue Basic이다. Blue Basic은 CC2540/2541에서 실행되는 BASIC 인터프리터로 별도의 추가 툴 없이 쉽게 프로그램을 만들 수가 있다. 

기본적으로 BASIC 언어를 사용하지만 실제 프로그램을 만들려면 블루투스 스택 뿐 아니고 CC254x 칩의 하드웨어들(UART, SPI, I2C, 타이머 등)을 쉽게 사용할 수 있는게 필수적이다. 그래서 이 목적을 위해 BASIC언어를 약간 확장했고, 가능한 최대로 아두이노의 표기를 따르려고 노력했다. 예를들어 P0(0)을 입력으로 사용하려고 하면 아두이노에서 'pinMode(A0, INPUT)' 을 사용하는것 처럼 BASIC 명령 'PINMODE P(0) INPUT' 을 사용하면 된다. 블루투스 키워드는 쉽게 서비스를 만들어 다른 하드웨어에 쉽게 연결할 수 있게 되어 있다. 

간단한 서비스는 다음과 같이 만들 수 있다.

10 ADVERT GENERAL
20 ADVERT "25FB9E91-1616-448D-B5A3-F70A64BDA73A"
30 ADVERT END
40 GATT SERVICE "25FB9E91-1616-448D-B5A3-F70A64BDA73A"
50 GATT CHARACTERISTIC "D8ABBBE7-F10B-4EC3-B781-DBCBD2334400" "On/Off"
60 GATT READ WRITE A ONWRITE GOSUB 200
70 GATT END
80 PINMODE P0(0) OUTPUT
90 GOSUB 200
100 END
200 P0(0) = A
210 RETURN
BASIC을 처음 보는 사람이라고 해도 대강의 내용은 이해가 될 것이다. 물론 설명해야 할 부분은 많이 있지만 기본적으로 한개의 컨트롤을 on/off하는 서비스를 advertise하고, 이 서비스 값을 출력해 외부 장치를 제어한다. 예제 보드에서는 이 출력이 LED에 연결되어 있다.

Blue Basic을 사용하려면 CC254x를 사용한 BLE 모듈의 펌웨어를 교체해야 한다. 모듈은 aliexpress에서 $5~7정도에 구할 수 있고, 펌웨어를 업데이트 하기 위해서는 TI CC Debugger가 필요하다. 


일단 Blue Basic 펌웨어가 올라가면 그 이후는 PC/Mac/iPhone/Android용 콘솔 프로그램을 사용해 코드를 입력하면서 바로 실행시켜 볼 수가 있다.



Blue Basic을 이용해 iBeacon을 만드는 코드 예제이다.

10 // "A Simple iBeacon service"
20 DIM M(5)
30 // "Major (0-65535)"
40 M(0) = 0
41 M(1) = 2
50 // "Minor (0-65535)"
60 M(2) = 0
61 M(3) = 4
70 // "Power"
80 M(4) = 0xC8
90 ADVERT GENERAL
100 ADVERT CUSTOM "FF 4C 00 02 15" "74 27 8B DA B6 44 45 20 8F 0C 72 0E AF 05 99 35" M "00"
110 ADVERT END
120 // SET A NAME IN THE SCAN RESPONSE
130 SCAN NAME "iBeacon"
140 SCAN END
AUTORUN ON

좀 더 상세한 설명은 github를 참조하면 된다.


댓글 없음:

댓글 쓰기