德州儀器 CC2540 藍芽開發 + ADC

       德儀的 CC2540 / 2541 藍芽晶片已經推出市場幾年了,隨著模組廠商的努力開發,將藍芽模組設計成 SMD 貼合元件,對於小型設計廠商的我們真是大大的便利。目前的藍芽模組不僅體積越做越小,價格也越來越親民,如果自己有些 idea 想要設計電路板來驗證藍芽相關的應用的話,直接拿藍芽模組來實現是不錯的方法之一。此外,CC2540 本身就是一顆 8051 為核心的晶片,所以具備一些 MCU 的基本功能,若將其 MCU 與藍芽的功能都發揮出來,這樣不僅系統成本降低且耗電量也會減少。本文的目的就是希望直接拿現有的藍芽模組來開發 CC2540,不希望再多用一顆 MCU 來控制這個模組。

        一般市面上的藍芽模組都已經把藍芽的基本功能開發好了,藍芽的參數配置只要透過模組提供的 UART 介面(最常見的基本介面)來設定。這種作法除了需要藍芽模組之外,還需要另一顆 MCU 來控制這片藍芽模組,所以使用者通常會選擇自己熟悉的 MCU 來開發藍芽通訊。之前文章,我們已經採用 Arduino 晶片控制藍芽模組的方式完成藍芽通訊,底下將說明如何用市面上的模組來開發 CC2540。

        我們拿市面上容易買到 HC-05 / HC-08 的藍芽模組來實驗,這塊模組原本是透過 UART 介面與外部的 MCU 溝通,讓使用者不需要為了藍芽的技術知識而傷腦筋。模組本身已經內建設計好藍芽的基本功能,使用者只需藉由 UART 介面設定參數便可動作。不過,我們卻想要把這塊模組改造,將本身的 MCU 與藍芽的功能發揮出來。首先,要準備德儀的 CC-Debugger 除錯器和安裝 IAR Embedded 軟體。接下來,將模組上面的五根接腳接出來,分別為 Vcc,GNDRSTDC 和 DD,再連接到除錯器的相對應接腳,這樣就可以準備開發 CC2540 的韌體了。底下圖一所示就是將 CC-Debugger 連接到自製的藍芽開發板。

圖一:CC-Debugger 連接自製 CC2540 開發板


        將 CC-Debugger 接上自製的開發板,到德儀的網站下載 CC2540 BLE-Stack 軟體,軟體本身提供不少範例程式的代碼。範例分成四類:BroadcasterObserverPeripheral 和 Central。大致說明一下,Broadcaster 屬於 TX only 適用於溫度感測器之類的藍芽應用,將感測器數值廣播給其它藍芽裝置。Observer 屬於 RX only 適用於接收數值並顯示的應用。Peripheral 屬於雙向溝通,適用於藍芽周邊裝置的應用。Central 則適用於手機端的應用。我們拿基本的 Peripheral 範例來測試,如圖二所示,耶!範例能成功載入我們的板子裡。

圖二:IAR 透過除錯器連接到藍芽模組


       確認板子與除錯器都能正常運作後,我將藍芽模組板的 ADC 與 IO 接腳拉出來,分別在 ADC 腳接上一個可變電阻,在 IO 腳上接一個 LED 燈,LED燈號的變化可方便我們觀察藍芽模組運作的狀態。另外,調整可變電阻改變輸出電壓的大小,再從 CC2540 ADC 上讀取數值。我修改上面的 SimpleBLE 範例,將 ADC 讀到的電壓數值透過藍芽傳到手機端,驗證整個通訊流程是沒問題的。

        我將整個操作過程錄製成底下的影片,首先手機 BLE Scanner APP 掃描到藍芽模組,手機端按下連線後,模組上的 LED 燈會點亮。接著,選擇 profile 中的 custom service,選定其中一個特性,藍芽模組每隔一秒會將 ADC 數值傳送到手機,並顯示在螢幕上。我調整可變電阻改變電壓,在手機端觀察到數值不斷變化。最後,將藍芽連線關閉,LED 燈熄滅,完成整個操作。

影片:BLE 操作過程,將 ADC 數值傳送到手機

這個網誌中的熱門文章

Android APP 藍芽範例說明 -- BluetoothChat

Android APP BLE範例程式 -- BluetoothLeGatt

三軸重力加速計 Accelerometer