《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業界動態 > 量身定做自己的專屬Beacon

量身定做自己的專屬Beacon

2015-08-03
作者:Martin Woolley

       Beacon系列的前兩篇文章中我已經介紹了Beacon應用開發的概念和AltBeacon廣播形式,并詳細講解了如何利用AltBeacon安卓API開發博物館導覽APP原型。在今天的最終篇里,我將向大家介紹如何測試這一博物館導覽APP。

選擇藍牙開發板,啟動你的專屬Beacon!

       我們暫時還沒有現成采用AltBeacon形式的Beacon,但手上有不少藍牙開發板。藍牙開發板是具有智能藍牙功能的微控制器(MCU),其內部一般都內置了藍牙協議棧。由于開發板一般都具有豐富的外設接口和引線,因此開發板通常用來搭建產品的原型可以將編譯生成的固件直接燒入到開發板當中,甚至可以直接做成產品功能展示,或是單純用于試驗或學習。我決定用自己手上既有的幾塊開發板來創建Beacon應用,然后測試一下安卓博物館導覽APP。

       我使用的是Bluegiga DKBluetooth Low Energy開發套件和英特爾Edison開發板。Bluegiga開發板的編程采用BGScript腳本語言。英特爾Edison運行的是則Linux,編程語言有多項選擇。我習慣用由JavaScript框架驅動的Node.js,這樣能找到適用的智能藍牙的功能包或是庫文件。

Bluegiga變身AltBeacon

       Bluegiga的BGScript腳本語言簡單易懂,且配有Bluegiga框架所提供的豐富的功能庫。用BGScript創建Bluegiga應用涉及用文本編輯器創建腳本文件和其他項目配置文件。通過Bluegiga SDK中的軟件更新工具,就可以直接通過USB將編譯生成的固件燒入到開發板上。

       腳本包括變量和數組聲明、事件處理器回調函數。回調是編程模型的重要部分,調用標準Bluegiga功能函數會促發相關的回調函數。同樣,框架也可以調用事件處理器,以回應腳本之外的情況。

       在任何平臺上實現Beacon都涉及與通用訪問配置文件(Generic Access Profile, GAP)協作,要求設置廣播數據包內容、配置廣播參數。

       Bluegiga AltBeacon實施的要素如下圖:

       先從變量聲明開始。

圖片12.png

                                     圖1 – 數組聲明

       廣播的設置可以在Bluegiga標準事件處理器“system_boot”中完成,開發板接通電源或重置之后,系統會調用“system_boot”。我先設置了包含Flags字段數組,Flags字段包括許多位,從每一位都能看出Bluetooth Smart和/或Bluetooth BR/EDR的支持方

       廣播數據包中可能包含的字段稱為廣播數據類型(ADV data types),藍牙核心規格附錄的A部分(數據類型規格)對其有明確定義。廣播數據類型的標準結構,包括一個單一字節長度字段 (它的值不包括長度字段本身占有的字節)、一個單一字節數據類型字段。GAP編號文檔中定義了數據類型值。

       下面是初始過程的首部分代碼:

圖片13.png

                            圖2 –在system_boot事件處理器中定義flags廣播類型

       在本系列文章的第一篇中,我介紹了AltBeacon形式并解釋了GAP 制造商特定數據廣播字段中編碼的數據。我在同一數組內的后20字節中填入了這些數據。

圖片14.png

                             圖3 – 定義制造商特定數據字段中的AltBeacon數據

       然后為Beacon設備設置名稱,這一名稱今后可以顯示在Central設備(主要是智能手機)返回的掃描結果中。它的值是另一個廣播類型,因此我將它設立在它自己的數據里。可以看到,指定的本地名稱就是AltBeacon。

圖片15.png

                               圖4 – 建立用于掃描響應的本地名稱

       配置廣播參數包括調用Bluegiga的一些功能、數組。

圖片16.png

                                  圖5 – 配置GAP 廣播

       這樣,我的Bluegiga定制AltBeacon準備就緒。

圖片17.jpg

                              圖6 –藍兆科技DKBLE上的AltBeacon

另一種選擇:英特爾Edison上的AltBeacon

       Node.js是模塊化設計,有多種用途的模塊供選用。對于Node.js來說,模塊與庫類似。“Bleno”模塊能夠為擔任藍牙GAP外設的應用提供諸多功能,如GATT配置文件的定義和實施。它是開源的,由Sandeep Mistry創建。SandeepMistry還創建了Noble模塊,可以用來創建GAP中央模式設備的相關軟件。Bleno和Noble都位于github上。

       Bleno的標準分布不支持AltBeacon形式,但卻支持iBeacon。因此,我復制了Noble github 倉庫并改寫了Bleno,這樣就可以生成AltBeacon形式的GAP廣播了。下面就跟大家介紹一下是怎么改寫的。

       我在標準的bleno.js源文件上添加了新功能,然后就可以根據node.js應用的一系列既設參數啟動廣播了。新功能代碼就長以下這個樣子:

圖片18.png

                                圖7 –bleno/lib/bleno.js中的新功能

       這一代碼基本上就是將必須的AltBeacon數據填充到緩沖區,然后調用添加至Linuxbindings.js源文件中其他功能。Bleno可以與Linux上的BlueZ藍牙協議棧協作,當在基于Linux的平臺上執行功能時,Bleno所引出的用于多種應用的功能最終被映射到針對BlueZ功能的調用。我只好對Bleno中Linux相關的部分作一些修改,這樣才能支持AltBeacon。

圖片19.png

                               圖8 –bleno/lib/linux/bindings.js中的新功能

圖片20.png

                             圖9 –bleno/lib/linux/hci-ble.js中的新功能

       這些功能所作的就是準備一個和Bluegiga開發板類似、包含所有必需廣播數據的緩沖區,然后將其傳遞至、并通過Bleno API層,最終到達BlueZ的主機控制接口(Host Controller Interface,HCI)。

AltBeacon Node.js 應用

       Bleno經修正之后就可以支持AltBeacon了, 剩下的就是使用新的bleno模塊來創建node.js應用,然后使用AltBeacon形式開始廣播。整個應用就是下圖中的7行代碼。

圖片21.png

                            圖10 –AltBeacon node.js 應用

       為運行AltBeacon APP,我使用Putty通過SSH或是telnet建立了與英特爾Edison的終端會話,然后運行命令行里的node app.js。

圖片22.jpg

                                圖11 – Putty建立終端對話

 


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美一级二级三级蜜桃| 亚洲欧洲av一区二区| 亚洲一二三区视频在线观看| 亚洲人成啪啪网站| 韩国一区电影| 国产一区二区高清不卡| 国产欧美亚洲视频| 国产农村妇女毛片精品久久莱园子| 欧美日在线观看| 欧美日韩亚洲91| 欧美日韩免费高清| 欧美美女视频| 欧美日韩中字| 欧美日韩国产色站一区二区三区| 欧美国产日韩a欧美在线观看| 蜜臀久久99精品久久久画质超高清| 久久久久网址| 久久久久久午夜| 久久精品日韩一区二区三区| 欧美在线欧美在线| 久久久久久久久岛国免费| 久久精品国产一区二区三区| 久久九九国产| 久久综合图片| 欧美电影免费观看高清| 国产精品日韩欧美| 国语自产精品视频在线看抢先版结局 | 欧美剧在线观看| 欧美三级在线| 欧美午夜精品理论片a级按摩| 欧美日韩亚洲一区| 欧美性片在线观看| 国产老女人精品毛片久久| 国产午夜精品理论片a级探花| 国产在线视频不卡二| 雨宫琴音一区二区在线| 亚洲国产99精品国自产| 亚洲精品在线看| 亚洲视频欧洲视频| 欧美一区二区三区男人的天堂| 久久国产精品高清| 亚洲免费高清| 亚洲欧美日韩综合aⅴ视频| 久久aⅴ国产欧美74aaa| 免费观看不卡av| 欧美日韩综合视频网址| 国产精品无码专区在线观看| 国内外成人在线| 亚洲精品中文字幕有码专区| 亚洲视频在线观看三级| 久久国产精品亚洲va麻豆| 亚洲肉体裸体xxxx137| 亚洲一区精品视频| 久久久7777| 欧美日韩亚洲国产精品| 国产性猛交xxxx免费看久久| 亚洲高清一二三区| 一区二区久久久久| 欧美在线视频a| 99精品欧美一区二区三区| 性亚洲最疯狂xxxx高清| 久久综合综合久久综合| 欧美日韩国产在线一区| 国产亚洲高清视频| 亚洲精品欧美精品| 欧美一区二视频| 在线视频欧美日韩| 久久久久88色偷偷免费| 欧美日在线观看| 亚洲第一天堂无码专区| 亚洲专区在线视频| 亚洲电影一级黄| 激情欧美亚洲| av成人天堂| 亚洲国产精品久久| 亚洲欧美在线一区| 欧美精品亚洲| 好看的av在线不卡观看| 亚洲深夜福利视频| 亚洲精品视频一区| 久久精品一区蜜桃臀影院| 欧美视频一区二区三区四区| 亚洲高清电影| 欧美在线一区二区三区| 亚洲综合国产| 欧美精品久久久久久久免费观看| 国产一区二区三区日韩| 在线视频精品一区| 日韩一级片网址| 免费不卡在线观看av| 国产亚洲观看| 亚洲一区二区在线播放| 亚洲视频香蕉人妖| 欧美黑人在线播放| 伊人精品视频| 性欧美激情精品| 亚洲影院一区| 欧美日韩精品在线观看| 亚洲福利视频网| 久久精品亚洲热| 欧美在线视频一区二区三区| 国产精品人人做人人爽| 夜夜嗨av色综合久久久综合网| 亚洲精选在线| 欧美成人精品在线观看| 在线不卡中文字幕播放| 欧美一区二区三区播放老司机| 欧美亚洲色图校园春色| 国产精品久久久久久久久免费桃花 | 久久久精品动漫| 国产日产欧美一区| 亚洲女人天堂成人av在线| 亚洲一区美女视频在线观看免费| 欧美激情1区2区| 亚洲人成网站精品片在线观看| 亚洲国产精品一区二区三区| 久久久亚洲精品一区二区三区| 国产欧美日韩综合| 欧美亚洲一级| 久久久www成人免费精品| 国产日韩一区在线| 欧美一区二区免费| 久久久欧美一区二区| 国内精品视频在线观看| 欧美在线视频观看免费网站| 久久国产直播| 国内外成人在线视频| 久久精品日韩欧美| 欧美r片在线| 亚洲国产日韩一区| 夜夜嗨一区二区| 欧美日韩一区在线观看| 夜夜精品视频一区二区| 亚洲欧洲av一区二区三区久久| 国产伦精品一区二区三| 亚洲欧美高清| 久久九九国产精品| 亚洲第一综合天堂另类专| 亚洲免费av片| 国产精品v亚洲精品v日韩精品 | 国产欧美一区二区白浆黑人| 欧美一区二区大片| 玖玖综合伊人| 亚洲欧洲日韩综合二区| 亚洲视频视频在线| 国产美女精品在线| 久久精品国产亚洲精品| 欧美精品日日鲁夜夜添| 亚洲淫片在线视频| 久久综合九色综合欧美就去吻| 亚洲国产一区二区三区高清| 亚洲色图自拍| 国产日韩精品一区二区三区在线| 欧美在线|欧美| 欧美激情一区二区三区在线视频观看 | 亚洲午夜日本在线观看| 久久成人免费电影| 在线播放日韩| 亚洲午夜久久久久久久久电影院| 国产精品一二三四| 亚洲国产高清一区二区三区| 欧美精品videossex性护士| 亚洲一区二区三区精品动漫| 久久久久久网站| 亚洲欧洲精品一区二区精品久久久| 亚洲午夜久久久久久尤物| 国产欧美日韩免费看aⅴ视频| 亚洲国产精品黑人久久久 | 亚洲免费综合| 免播放器亚洲一区| 亚洲视频一区| 欧美成人a∨高清免费观看| 日韩一二在线观看| 久久精品导航| 亚洲精选一区二区| 欧美影视一区| 日韩一级免费观看| 久久综合五月| 亚洲无人区一区| 欧美电影打屁股sp| 西西裸体人体做爰大胆久久久| 免费h精品视频在线播放| 亚洲性xxxx| 欧美精品国产| 欧美一区二区在线免费播放| 欧美日韩国产在线| 亚洲第一福利在线观看| 国产精品白丝av嫩草影院| 亚洲欧洲一区二区三区在线观看| 国产精品久久久久久久免费软件 | 一区二区高清视频| 国语自产精品视频在线看抢先版结局| 亚洲视频国产视频| 在线观看一区视频| 欧美在线不卡| 一区二区免费在线视频| 欧美国产日韩精品| 久久经典综合| 国产麻豆91精品| 亚洲香蕉伊综合在人在线视看|