最新的藍(lán)牙4.2低功耗(BLE),也稱為藍(lán)牙智能,專為物聯(lián)網(wǎng)(IoT)而打造。每個主要操作系統(tǒng)對藍(lán)牙技術(shù)的原生支持使得移動應(yīng)用程序的開發(fā)變得簡單。
使用PSoC Creator 3.2,Xcode 6和Swift應(yīng)用程序開發(fā)環(huán)境,可以開發(fā)一款應(yīng)用程序來處理簡單的遙控車使用iPhone,演示在嵌入式BLE系統(tǒng)開發(fā)中使用GATT配置文件和GAP外設(shè)。該車由兩臺電機和一臺帶正交編碼器的H橋和賽普拉斯半導(dǎo)體公司的PSoC4200 BLE器件構(gòu)成。
圖1:PSoC4200來自賽普拉斯半導(dǎo)體可以使用藍(lán)牙低功耗4.2來控制機器人汽車。
該項目從簡單的LED和觸摸板控制開始,指示連接狀態(tài)。初始CAPSense滑塊用于控制紅色LED,當(dāng)未連接電路板時,藍(lán)色LED用于藍(lán)色LED。
為PSoC4100 BLE創(chuàng)建新項目,可將組件添加到簡單原理圖中。 BLE組件添加到圖形設(shè)計工具并鏈接到CapSense組件。需要PWM來驅(qū)動LED,并且因為藍(lán)色LED為低電平有效,所以需要反轉(zhuǎn)PWM,因此庫中使用了非門。
PWM配置需要是單輸出,需要庫中的時鐘組件。對于閃爍的LED,時鐘配置為1 kHz。復(fù)位連接到邏輯低電平(因為它是高電平有效),更改PWM的名稱使其更容易連接。該項目增加了一個線性滑塊來處理評估板上的五個傳感器。
在原理圖中配置BLE組件需要自定義配置文件,并且該板充當(dāng)帶有GAP(通用訪問配置文件)外圍設(shè)備的GATT服務(wù)器。 iPhone是GAP Central與電路板通信,作為GAP外設(shè)進(jìn)行連接。
GATT服務(wù)器是BLE上的一個數(shù)據(jù)庫,用于存儲與iPhone作為GATT客戶端共享的信息。
自定義配置文件實質(zhì)上是創(chuàng)建GATT數(shù)據(jù)庫,創(chuàng)建一個LED和CapSense的定制服務(wù);這些都有UUID(通用唯一ID),以便iPhone可以找到這項服務(wù)。這使固件能夠與該服務(wù)通信。 1字節(jié)LED特性表示可以遠(yuǎn)程寫入和讀取的LED狀態(tài),因此需要激活讀取和寫入標(biāo)志。 CapSense特性(無符號16個2字節(jié)格式)只能讀取,不能遠(yuǎn)程寫入。為了在有變化時得到通知,激活通知標(biāo)志。此時可以添加自定義的人類可讀通知。
每個特性都需要一個128位的UUID,而Creator工具為它提供了一個默認(rèn)值,可以在最低有效位進(jìn)行修改。
GAP設(shè)置包括設(shè)備名稱和廣告設(shè)置。在此示例中,它通過關(guān)閉超時來一直通告。在每隔20到30毫秒發(fā)送一次的廣告包中,有一些信息可以幫助識別設(shè)備,例如設(shè)備的名稱和可用的服務(wù)。
設(shè)置BLE,CapSense,PWM和LED后,需要設(shè)置引腳。第一個要設(shè)置的引腳是CapSense端口4的pin0調(diào)制電容。然后將CapSense滑塊連接到電路板上的P21至P25引腳。藍(lán)色LED連接到Port3 pin7,RED LED連接到port2,pin6。然后,該工具會自動為固件生成應(yīng)用程序。
固件
使用Xcode在Github項目中實現(xiàn)固件,第一個變量是表示LED狀態(tài)的無符號全局變量,第二個變量是CapSense通知。
update_LED函數(shù)使用LED的當(dāng)前狀態(tài)更新GATT數(shù)據(jù)庫。如果連接了BLE(來自GetState函數(shù)),則CYBLE_LEDCAPSENSE_LED_CHAR_HANDLE讀取引腳的值,并在LED為低電平時將其反轉(zhuǎn)。使用GATT WriteAttribute函數(shù)將1字節(jié)寫入數(shù)據(jù)庫。這可以在源代碼中的任何位置調(diào)用,以讀取LED的狀態(tài)。
下一個功能與CapSense相同。這將使用CYBLE_LEDCAPSENSE_CAPSESNE_CHAR_HANDLE和2字節(jié)值進(jìn)入GATT數(shù)據(jù)庫。這也使用BLE中的notify函數(shù),因此當(dāng)CapSenseNotify變量發(fā)生更改時,會自動發(fā)送通知。
接下來是BLE事件處理程序。這將處理來自BLE的所有事件,例如堆棧打開或斷開連接。這使用藍(lán)色LED顯示連接正在發(fā)生或正在關(guān)閉,因此這些調(diào)用會觸發(fā)PWM并使用LED狀態(tài)和CapSense值更新GATT數(shù)據(jù)庫。這由堆棧固件自動處理。
下一個事件是寫事件,當(dāng)遠(yuǎn)程端想要寫入GATT數(shù)據(jù)庫時調(diào)用該事件。這里,堆棧給出了需要編寫的特性。
然后可以使用Xcode為設(shè)備編譯所有這些。
機器人
建造汽車本身相對簡單,因為兩個電機連接到H橋,該H橋映射到電路板上的連續(xù)引腳。設(shè)備上的開關(guān)顯示在應(yīng)用程序中,每個電機的速度可以通過應(yīng)用程序控制以引導(dǎo)汽車。
圖2:機器人車板結(jié)合了BLE芯片,兩個輪子和一個H橋。
有四個關(guān)鍵特性,左右電機的轉(zhuǎn)速計使用正交編碼器,兩個PWM驅(qū)動兩個電機。 iPhone上有兩個開關(guān)可以快速將特性切換為零。
原理圖與初始LED項目具有相似的元素。 PWM很簡單,周期為100,比較50,占空比為100,在iPhone上映射0到100比例。正交編碼器使用TCPWM,它可以在1X模式下解碼來自左右脈沖中的每一個的正交信號,從而計算脈沖而不是前沿和下降沿。
PSoC引腳足以直接為H橋供電,另一個引腳是軟件控制的開關(guān),通過軟件控制電機的方向。最后一個是用于LED連接的PWM。
正交編碼器每轉(zhuǎn)計數(shù)64個脈沖,并且每187 ms觸發(fā)一次中斷以查找已發(fā)生的脈沖數(shù)并縮放以給出RPM編號。
自定義MOTOR_SERVICE配置文件具有四個特性,即8位整數(shù),可寫和可讀,從-100到+100,速度左和速度右。這還包括人類可讀的表格和通知。這會更新GATT數(shù)據(jù)庫并發(fā)出通知。
BLE是具有機器人和電機服務(wù)UUID名稱的外圍設(shè)備。這簡化了連接過程。
從工具生成固件,包括通知標(biāo)志,左右轉(zhuǎn)速計值以及左右速度。每次按下電路板按鈕關(guān)閉電機時都會觸發(fā)ISR,速度存儲在GATT數(shù)據(jù)庫中。
下一步是將固件鏈接到智能手機應(yīng)用程序。
構(gòu)建應(yīng)用程序
在Swift中構(gòu)建iOS應(yīng)用程序有兩個視圖控制器,在賽普拉斯學(xué)院中有說明。第一個是表視圖控制器,它顯示手機可以看到的所有設(shè)備。當(dāng)該類啟動時,它會中繼所有與其聽到的服務(wù)相匹配的設(shè)備。在這種情況下,只有一個遙控車,因此表中只有一件事,但這可用于控制許多外圍設(shè)備。
第二個視圖控制器本身就是遙控器。這對左右轉(zhuǎn)速計使用兩個標(biāo)簽,在左右電機上使用兩個開關(guān)。對于左右電機,選擇器視圖從-100到+100。
該模型有三個類:
RCcar.swift,它跟蹤左右電機的連接和速度;
跟蹤設(shè)備的BT.neighborhood類。
BLE連接類處理連接,以便RC對象具有與之關(guān)聯(lián)的鄰域和連接。該類記錄了它對更改感興趣的事實,并將選擇器設(shè)置為兩個滑塊。
最后發(fā)生的事情是如果更新了轉(zhuǎn)速計,那么它會更新屏幕上的左右文本值。在視圖消失之前,您需要在按下后退按鈕時禁用設(shè)備和連接。這些都通過Swift中的應(yīng)用程序編程接口(API)連接到固件。
結(jié)論
PSoC 4100設(shè)備中最新的藍(lán)牙低功耗4.2技術(shù)與簡單的H橋,電機和編碼器使得簡單的iPhone應(yīng)用程序易于開發(fā)。使用最新版本的PSoC Creator,Xcode和Swift開發(fā)工具允許開發(fā)人員為機器人創(chuàng)建原理圖,固件和應(yīng)用程序。
-
機器人
+關(guān)注
關(guān)注
211文章
28559瀏覽量
207695 -
藍(lán)牙
+關(guān)注
關(guān)注
114文章
5845瀏覽量
170789 -
遙控器
+關(guān)注
關(guān)注
18文章
840瀏覽量
66347
發(fā)布評論請先 登錄
相關(guān)推薦
評論