此篇文章嘗試將燈座原本的ESP8266+CC2540改為Linkit 7697
由於先前在CC2540曾設定過小於4秒掃瞄一次
專案會出現奇怪的問題,所以設定掃瞄時間都不會小於4秒
但Linkit 7696可以設定到1秒掃瞄一次! 呀呼~ 豈不痛快!
用在室內定位數據愈多就會愈準確!
數據流的概念,劫盜地圖就要完成了啊!
數據流的概念,劫盜地圖就要完成了啊!
在這裡說明一下這個專案的定內定位跟一般Beacon有點不同
Beacon通常是貼在某個位置發射訊號,讓Smart
phone接收
而APP在本地端用演算法顯示位置
流程是這樣:Beacon-->Smart phone-->Show
Location
但這個專案是想知道對方的位置,所以是燈座”接收”BLE訊號
傳到Web Server,APP去Web Server撈資料,再由APP本地端演算法顯示位置
流程是這樣:BLE Devices-->Cloud
Server-->Smart phone-->Show Location
雖然Linkit 7697價格還是比ESP8266+CC2540貴了一些
但是對Maker來說,使用Arduino
IDE來操作就可以了! 方便!
比較頭痛的是在設定家中AP的方式
ESP8266及Ameba在Arduino IDE都有指令可用
ESP8266及Ameba在Arduino IDE都有指令可用
ESP8266使用Socket傳字串,流程如下
ESP8266 AP mode-->收到手機傳來的Socket(字串)->轉為Station
mode->設定帳號密碼
在ESP8266 AP mode有一個指令可以設定ESP8266叫什麼名字
好讓手機可以連上ESP8266 AP,用法如下
WiFi.softAP("AP名稱", "AP密碼")
而早先開發過Realtek Ameba,AP mode是使用ATPA,用法如下
ATPA="想給Ameba的名字","Ameba AP的密碼","Channel"
WiFi.softAP("AP名稱", "AP密碼")
而早先開發過Realtek Ameba,AP mode是使用ATPA,用法如下
ATPA="想給Ameba的名字","Ameba AP的密碼","Channel"
但在Linkit 7697 Arduino IDE沒有這種指令
看來是不支援在Arduino IDE 做AP轉Station mode
看來是不支援在Arduino IDE 做AP轉Station mode
But But But… MTK的文件,在SDK開發包可支援耶~
這個專案為了開放程式碼及Maker大大
硬是要用Arduino IDE做開發,只好修改流程如下
由MT7697 BLE Characteristic收手機傳來的訊息-->轉到WiFi設定AP帳號密碼
雖然可以用手機讓MT7697連上網,正所謂殊途同歸
感謝MTK大大,提供這一支Wi-Fi
Connection via BLE程式
但是在BLE傳封包一次只能20個Byte…
稍做一點點解釋
如果在使用APP傳Socket給ESP8266時,一開始會設定燈座是何許人也
姓名(這燈座叫啥名)、地址(GPS經緯度)與電話(mail)
然後再送到戶政事務所(Cloud Server)登記,封包格式如下
/AP帳號/AP密碼/燈座位置(Bed or bathraoom…)/GPS經度/GPS緯度/TBD/使用者名稱/
這樣隨便傳都超過20個Byte
但有些人家中的帳號會超過10個Byte啊!!!
例如某家的AP如下
名稱是I am Takeshi Kaneshiro
密碼是I am a super handsome men
這該如何是好?
可以預知Linkit 7697搭配Arduino IDE開發APP有點小麻煩與小坑,但好坑不跳嗎?!
附上Github的Source Code供參考
此源碼包括了
1.
手機使用BLE傳輸AP的帳密
2.
MQTT
3.
BLE Scan
4.
Indoor location 1公尺的計算方式
(將來校正要在手機APP的BLE的Characteristic交互)
註:MTK大大可不可以開放Arduino的AP轉Station mode? 鳴鳴...
版主您好,關於您本篇有「但Linkit 7696可以設定到1秒掃瞄一次! 呀呼~ 豈不痛快!」,請問是如何完成,我們目前用scan然後delay一秒後stopscan,但是發現總是漏掉很多beacon沒掃到
回覆刪除