假日嵌入式藍芽開發工程師:nRF51822 (4)
Introduction
這篇開始要進入BLE主題,首先會介紹怎麼跑起來BLE-blinky這個範例,然後介紹Nordic的BLE protocol怎麼使用。
Compile & Flash Nordic LBS Example Against PCA10001
Nordic提供不少BLE的範例,裡面最簡單的就是LBS(LED-Button Service)。這個範例讓手機透過BLE遠端控制板子的LED亮暗;按下button時候,手機也可以即時收到通知。這個範例包括central和peripheral雙向通訊,仔細研究大概就能抓住Nordic SDK怎麼用。編譯和Flash的步驟如下:
- Sample code路徑如下:
nRF51_SDK_10.0.0_dc26b5e/ examples/ ble_peripheral/ experimental_ble_app_blinky/ - 把裡面的pca10028整個複製一份叫pca10001,把裡面S110的Makefile和Linker script做必要的修改,然後Makefile也可以補強一點。這裡不再重寫一次,直接參考前一篇文章。
- 然後下去build,送你一個build error應該是合情合理的
- (3)的原因是某個目錄找不到,名稱和board name以及softdevice name有關。我們換了一個board,這裡也得幫他準備
從這個:experimental_ble_app_blinky/ config/ experimental_ble_app_blinky_s110_pca10028
複製到:experimental_ble_app_blinky/ config/ experimental_ble_app_blinky_s110_pca10001
這個目錄只有一個檔案,叫nrf_drv_config.h,這個檔案其實是SDK的一部分,調整那些功能要啟動。Nordic也不希望直接改SDK裡的這個檔案,正確的做法是拷貝這個檔案到project底下,然後修改inclusion search path,把private header放到最前面。這也是實戰中非常常見的做法。 - 然後理論上就可以build以及燒錄進去,接下來開發版就變成一個BLE peripheral。
Control BLE Peripheral via Nordic Tool
如第二篇介紹,用nRF Connect探索BLE device非常好用。這麼簡單的東西理論上不用寫,但是我想騙點廣告費所以就...
- 預設的Project會出現一個Nordic_Blinky的裝置如下,這個名字和Project裡main.c定義的名字好巧,完全一樣。可以給他改個名字,編譯後燒一次看看,再確定一次。
- 下面這張圖被我標得有點花,簡單看。首先點右上角開啟CCC,這樣按板子的button就會反應狀態在左邊的Button(pressed/ released)。
- 上圖右下角LED區域,有個向上的箭頭˙,代表上傳(或著寫入BLE),這個可以控制BLE裝置的的亮暗。
Final Word
這個範例代表基礎的read/write,雖然超簡單,其實已經是無線通訊的雛形。如果手機送到板子的數值不是ON/OFF(1/0)這麼單純,而是R/G/B(8bit*3),搭配三色LED並控制亮度,就搖身一變成燈色調節燈泡。下一篇會剖析這個範例,介紹怎麼弄出這些BLE service,characteristic。
留言