我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010894841
室內定位是目前很流行的服務,除了用RFID(距離太短)之外,還是以beacon最常被使用,beacon的原理是利用藍芽的訊號強度RSSI,推測使用者與每一個beacon的距離,以往我曾經介紹使用arduino,或者android來定位,這次要介紹如何利用最流行的python做室內定位不過我還沒作到三角定位,如果有研究的夥伴可以分享一下。順便介紹賣場裡常見的beacon類型。(beacon定位原理可參考本文:https://youyouyou.pixnet.net/blog/post/119410657)
ibeacon偵測定位,目前提供三種主要規格
1.手環型: https://goods.ruten.com.tw/item/show?21828335470340
設定APP下載
iOS:https://t.ly/RCp8
(密碼:123456,有完整功能)
設定APP Android:https://t.ly/zk3X
(功能很少)
這款優點是,可以配合手環,而且防水,但是缺點是在更換電池時,必須打開外殼,而外殼有點難開,這部份比較不方便
新款手環型有帶體感及溫濕度偵測,外型與上述完全相同,但其控制APP不同
測試影片如下:
2.吊環型: https://goods.ruten.com.tw/item/show?21947900936493
這款的優點是開關做在外面,容易開關,另外APP有提供一個功能做定時啟動與關閉,不過因為形狀關係,找不到搭配的手環,只能做成吊環的樣式
APP下載:Beacon搖一搖助理
3.長效型: https://goods.ruten.com.tw/item/show?21948944190719
這款是使用CR2477高容量電池,因此至少可以使用一年以上,且防水、防震,可放置戶外,但相對體積就較為龐大。
APP下載:ios搜尋OE beacon: https://apps.apple.com/tw/app/oe-beacon/id1235422365
這篇文章是感謝網友小明提供一個網址,使用python程式碼
原始碼如下:
from bluepy.btle import Scanner, DefaultDelegate
class ScanDelegate(DefaultDelegate):
def __init__(self):
DefaultDelegate.__init__(self)
def handleDiscovery(self, dev, isNewDev, isNewData):
if isNewDev:
print "Discovered device", dev.addr
elif isNewData:
print "Received new data from", dev.addr
scanner = Scanner().withDelegate(ScanDelegate())
devices = scanner.scan(10.0)
for dev in devices:
print "Device %s (%s), RSSI=%d dB" % (dev.addr, dev.addrType, dev.rssi)
for (adtype, desc, value) in dev.getScanData():
print " %s = %s" % (desc, value)
來源網址:https://ianharvey.github.io/bluepy-doc/scanner.html