《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業界動態 > 量身定做自己的專屬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亚洲国产精品_日韩亚洲一区二区
国产香蕉久久精品综合网| 欧美在线播放一区二区| 性色一区二区三区| 欧美一区亚洲二区| 久久在线精品| 亚洲电影有码| 99视频在线精品国自产拍免费观看| 久久综合色一综合色88| 国产欧美韩日| 亚洲人成网站999久久久综合| 欧美激情久久久久| 亚洲午夜国产成人av电影男同| 亚洲欧美日韩国产一区二区三区| 亚洲综合国产| 伊伊综合在线| 亚洲性夜色噜噜噜7777| 国产日韩欧美一区二区| 亚洲黄一区二区| 国产精品播放| 亚洲精品国产精品国自产观看浪潮| 欧美欧美在线| 亚洲尤物在线| 欧美国产激情二区三区| 日韩一区二区免费高清| 久久精品91| 亚洲精品美女久久久久| 欧美在线观看一二区| 国产亚洲精久久久久久| 一本色道久久综合亚洲精品按摩| 国产深夜精品福利| 一区二区动漫| 亚洲国产日本| 久久这里只精品最新地址| 亚洲色图综合久久| 欧美高清视频一区| 欧美一区二区视频在线观看| 欧美福利视频一区| 久久精品二区三区| 国产亚洲精久久久久久| 亚洲欧美激情在线视频| 91久久精品一区| 久久尤物电影视频在线观看| 亚洲天堂av图片| 欧美午夜美女看片| 亚洲黄色成人| 国产一区二区三区久久| 亚洲欧美日韩在线观看a三区| 亚洲人成网站999久久久综合 | 99国内精品| 欧美午夜久久| 亚洲欧美成人一区二区在线电影 | 国产精品私房写真福利视频 | 亚洲美女精品一区| 欧美日本在线| 亚洲精品久久久久中文字幕欢迎你 | 日韩天堂av| 国产精品尤物| 久久免费精品视频| 亚洲电影在线播放| 亚洲精品免费在线播放| 久久av最新网址| 国产主播一区二区三区| 欧美精品福利| 先锋亚洲精品| 狠狠爱综合网| 欧美日韩中文字幕综合视频| 欧美一区成人| 9久草视频在线视频精品| 亚洲一区二区四区| 在线观看国产精品网站| 欧美私人啪啪vps| 久久亚洲风情| 亚洲私人影院在线观看| 欧美一区二区| 日韩亚洲精品在线| 国外成人在线| 欧美电影专区| 久久久久久久一区二区| 亚洲欧美激情视频| 亚洲三级影院| 欧美一级网站| 亚洲天天影视| 日韩亚洲精品在线| 在线观看一区欧美| 国产精品一区二区三区四区 | 国产精品一区视频网站| 欧美精品乱人伦久久久久久| 亚洲一线二线三线久久久| 性欧美暴力猛交69hd| 日韩一级片网址| 99re热这里只有精品免费视频| 日韩视频在线观看免费| 亚洲午夜精品视频| 欧美亚洲免费| 亚洲三级影片| 亚洲欧美在线视频观看| 欧美中文字幕在线视频| 久久久www| 欧美精品黄色| 国产精品青草久久久久福利99| 国产精品入口| 激情一区二区三区| 一本到12不卡视频在线dvd| 亚洲性视频h| 亚洲精品国久久99热| 亚洲综合色丁香婷婷六月图片| 欧美在线你懂的| 欧美精品亚洲二区| 国产精品三上| 亚洲国产精品视频一区| 一区二区成人精品| 亚洲激情专区| 久久av一区| 欧美日韩国产天堂| 韩曰欧美视频免费观看| 亚洲最新视频在线播放| 亚洲国产成人av| 午夜精品久久久久久99热| 老巨人导航500精品| 国产精品一区二区你懂的| 最新日韩精品| 亚洲大片免费看| 午夜精品在线| 欧美日韩无遮挡| 在线观看一区| 欧美在线视频一区| 欧美亚洲一区在线| 欧美日韩国产综合新一区| 在线观看视频一区二区欧美日韩| 午夜精品福利在线观看| 中文欧美在线视频| 欧美区二区三区| 最新日韩在线视频| 亚洲国产成人精品视频| 久久av一区二区三区| 国产精品男人爽免费视频1 | 久久免费少妇高潮久久精品99| 国产精品日韩一区二区| 亚洲午夜精品福利| 狠狠久久亚洲欧美专区| 亚洲美女黄网| 亚洲一二三区在线| 欧美日韩在线精品一区二区三区| 亚洲精品综合精品自拍| 亚洲精品欧洲| 欧美视频在线观看免费网址| 亚洲图片欧美日产| 亚洲欧美综合精品久久成人| 国产伦精品一区二区三区高清| 亚洲欧美色婷婷| 免费日韩精品中文字幕视频在线| 亚洲国内在线| 亚洲欧美在线磁力| 国产日韩精品一区观看| 久久精品视频在线看| 久久国产88| 亚洲大胆女人| 亚洲宅男天堂在线观看无病毒| 欧美日韩一区二区三区四区五区| 欧美成人精品一区| 亚洲人成在线观看| 亚洲一区二区视频在线| 国产日韩精品一区二区浪潮av| 久久福利毛片| 欧美日韩妖精视频| 欧美制服丝袜第一页| 欧美日韩国产欧| 亚洲国产mv| 国产精品国产三级国产专播精品人| 香港久久久电影| 欧美日韩精品一区二区| 久久超碰97人人做人人爱| 欧美精品一区在线观看| 亚洲免费视频在线观看| 欧美激情精品久久久久久久变态 | 亚洲人成毛片在线播放| 国产精品久久久久久av下载红粉 | 亚洲国产成人久久综合| 欧美性猛交99久久久久99按摩| 久久成人免费电影| 欧美视频一区二区三区四区| 亚洲黄色在线| 韩国三级电影久久久久久| 亚洲欧美在线看| 亚洲美女尤物影院| 美女免费视频一区| 欧美在线3区| 国产精品三上| 亚洲欧美在线网| 亚洲一区三区在线观看| 在线视频精品一区| 国产精品久久久免费| 久久国产加勒比精品无码| 亚洲欧美日本伦理| 激情偷拍久久| 亚洲精品影视在线观看| 欧美精品在线免费观看| 亚洲精品一区二区三区不| 在线亚洲一区二区| 国产精品久久久久久久免费软件|