《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業界動態 > 量身定做自己的專屬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在线| 亚洲一区三区电影在线观看| 欧美性做爰毛片| 欧美国产日韩一区二区三区| 久久亚洲电影| 久久午夜电影网| 久久国产一区二区| 久久本道综合色狠狠五月| 欧美亚洲一区在线| 午夜久久久久久久久久一区二区| 一区二区免费在线播放| 亚洲免费观看| 99精品国产在热久久下载| 亚洲免费激情| 99香蕉国产精品偷在线观看| 一区二区日韩伦理片| 99天天综合性| 亚洲一区二区三区影院| 午夜精品在线视频| 久久国产精品亚洲77777| 久久av在线看| 久久频这里精品99香蕉| 久久天天狠狠| 免费欧美在线| 欧美精品成人在线| 欧美日韩视频一区二区| 欧美四级在线观看| 国产精品久久久久一区| 国产免费成人av| 激情久久综艺| 最新成人av在线| 夜夜嗨av一区二区三区中文字幕| 99riav国产精品| 亚洲一区二区三区四区五区黄| 亚洲欧美日韩精品久久久| 性欧美videos另类喷潮| 久久精品国产欧美亚洲人人爽| 亚洲欧洲日本mm| 一区二区三区.www| 亚洲欧美在线免费观看| 久久久噜噜噜久久久| 欧美gay视频激情| 欧美视频你懂的| 国产乱肥老妇国产一区二| 韩国美女久久| 日韩视频一区二区三区| 亚洲欧美日韩精品久久久久| 久久精品一区二区三区中文字幕| 亚洲精品欧美| 亚洲一区二区在线免费观看视频| 欧美综合77777色婷婷| 欧美 亚欧 日韩视频在线| 欧美日韩一区二区三区在线看| 国产免费观看久久| 在线成人av| 一二三区精品福利视频| 欧美一区二区女人| 日韩一本二本av| 久久国产精品99国产| 欧美国产日韩视频| 国产欧美精品久久| 亚洲国产精品日韩| 亚洲欧美精品在线观看| 亚洲精品视频在线| 欧美一区二区三区在线播放| 欧美不卡高清| 国产精品自在线| 亚洲激情视频网站| 午夜精品亚洲| 99re6热在线精品视频播放速度| 欧美一区二区视频在线观看2020 | 99国产精品99久久久久久| 亚洲欧美成人一区二区三区| 久热国产精品视频| 国产精品欧美日韩一区二区| 亚洲国产网站| 久久精品99国产精品日本| 亚洲天堂成人| 免费日韩精品中文字幕视频在线| 国产精品美腿一区在线看| 亚洲国产欧美一区| 欧美一区在线看| 亚洲色图自拍| 欧美福利影院| 国内精品一区二区三区| 亚洲视频在线看| 亚洲精品在线视频| 久久躁狠狠躁夜夜爽| 国产精品专区第二| 在线视频你懂得一区二区三区| 亚洲国产cao| 久久精品91久久久久久再现| 欧美视频中文字幕在线| 最新亚洲一区| 亚洲三级视频在线观看| 久久免费99精品久久久久久| 国产精品毛片va一区二区三区| 亚洲国产网站| 91久久久久久久久| 久久久水蜜桃| 国产欧美精品一区二区三区介绍 | 欧美三级视频在线播放| 影音欧美亚洲| 性欧美大战久久久久久久久| 亚洲综合不卡| 国产精品vvv| 一区二区免费看| 亚洲特色特黄| 欧美三区美女| 一本一本a久久| 亚洲制服少妇| 国产精品国产成人国产三级| 一区二区三区日韩| 亚洲神马久久| 欧美日韩一区二区三区在线视频 | 欧美一区二区黄| 国产精品每日更新| 亚洲一区二区三区午夜| 亚洲在线一区| 国产精品美女黄网| 亚洲综合清纯丝袜自拍| 新67194成人永久网站| 国产精品女主播在线观看 | 日韩写真视频在线观看| 欧美激情在线有限公司| 亚洲精品看片| 中日韩男男gay无套| 亚洲国内高清视频| 久久成人国产| 欧美精品v日韩精品v韩国精品v | 久久精品国产第一区二区三区| 国产午夜一区二区三区| 欧美一区二区三区在线免费观看| 久久精品视频在线看| 国产亚洲精品久久飘花| 久久国产婷婷国产香蕉| 欧美不卡在线视频| 亚洲国产欧美日韩另类综合| 一本色道久久精品| 国产精品扒开腿做爽爽爽软件| 亚洲一区二区三区免费视频| 欧美在线视频播放| 精品av久久707| 日韩一级不卡| 国产精品v日韩精品| 亚洲欧美一级二级三级| 久久久久久有精品国产| 在线精品国产欧美| av成人免费在线| 国产精品欧美日韩久久| 欧美在线观看视频一区二区| 免费美女久久99| 日韩一区二区精品在线观看| 亚洲欧美大片| 狠狠色伊人亚洲综合网站色| 亚洲精品一区二区网址| 国产精品精品视频| 久久爱另类一区二区小说| 欧美刺激性大交免费视频| 99国产精品久久| 欧美一区二区三区四区视频| 在线观看欧美| 亚洲一区国产视频| 国产一区三区三区| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲欧洲日本一区二区三区| 亚洲欧美日韩国产| 狠狠色综合色区| 亚洲图片在线观看| 国产一区二区三区黄| 日韩午夜电影av| 国产日韩欧美高清| 国产精品一区免费在线观看| 亚洲一区国产精品| 国产精品嫩草久久久久| 亚洲国产精品小视频| 欧美视频在线观看免费网址| 欧美在线中文字幕| 欧美日韩视频在线观看一区二区三区| 午夜精彩视频在线观看不卡 | 午夜亚洲视频| 欧美日韩成人综合| 欧美伊人久久久久久午夜久久久久| 欧美激情精品久久久久| 欧美亚洲免费高清在线观看| 欧美激情第三页| 欧美一区二区私人影院日本| 欧美日韩精品欧美日韩精品一| 欧美在线观看网址综合| 欧美午夜不卡| 亚洲黄色尤物视频| 国产精品久久久久一区二区三区共 | 亚洲网站在线播放| 在线观看不卡| 久久国产色av| 一区二区三区视频在线| 欧美大片18| 欧美一区二区视频免费观看| 欧美系列亚洲系列| 亚洲免费av观看|