iBeacons(2) —— 用SensorTag 制作 iBeacons 基站
时间:10-02
整理:3721RD
点击:
上一次(http://bbs.eeworld.com.cn/thread-427811-1-1.html) 我们分析了iBeacons的协议内容,貌似对这个话题感兴趣的朋友不多,搞得我也没有动力了{:soso_e101:}
但还是继续来说说吧。
CC254x的协议栈BLE-Stack中带有很多示例程序,我们可以利用这些示例程序 方便地实现一些基本的蓝牙应用,如防丢器、蓝牙广播等等。
今天我们就用蓝牙广播的例子,稍加改动,就可以实现一个 iBeacons 基站。
蓝牙广播的例子在C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\SimpleBLEBroadcaster 根据我们上一次提到的,iBeacons 基站只是一个广播特定内容的蓝牙设备,我们只需要把广播内容写入 SimpleBLEBroadcaster 即可。
大家可以简单阅读以下SimpleBLEBroadcaster 的源代码,可以发现TI BLE-Stack 已经封装了完善的接口,包括硬件抽象层(HAL), 操作系统抽象层(OSAL)等,方便我们进行蓝牙应用的开发。
蓝牙广播的内容主要位于 simpleBLEBroadcaster.c 中,需要修改的内容主要是 scanRspData[] 和 advertData[]. 其中 scanRspData[] 是蓝牙设备用于回复主机扫描请求的信息,或者简单理解为蓝牙设备名;而 advertData[] 就是广播内容。
比如 我们想给 iBeacons 设备取名叫"Microduino iBeacons"
就需要这样改写
- static uint8 scanRspData[] =
- {
- // complete name
- 0x14, // length of this data
- GAP_ADTYPE_LOCAL_NAME_COMPLETE,
- // Microduino iBeacons
- 0x4D, // 'M'
- 0x69, // 'i'
- 0x63, // 'c'
- 0x72, // 'r'
- 0x6f, // 'o'
- 0x64, // 'd'
- 0x75, // 'u'
- 0x69, // 'i'
- 0x6e, // 'n'
- 0x6f, // 'o'
- 0x20, // ' '
- 0x69, // 'i'
- 0x42, // 'B '
- 0x65, // 'e'
- 0x61, // 'a'
- 0x63, // 'c'
- 0x6f, // 'o'
- 0x6e, // 'n'
- 0x73, // 's'
- // Tx power level
- 0x02, // length of this data
- GAP_ADTYPE_POWER_LEVEL,
- 0 // 0dBm
- };
而 iBeacons 广播内容,根据上一篇文章的分析 需要写成
- static uint8 advertData[] =
- {
- // Part1 Apple's fixed iBeacon advertising prefix
- 0x02, //Length
- GAP_ADTYPE_FLAGS,
- 0x1a,
- // broadcast data
- 0x1a, // length of this data including the data type byte: 26
- GAP_ADTYPE_MANUFACTURER_SPECIFIC, // manufacturer specific advertisement data type
- 0x4c,
- 0x00,
- 0x02,
- 0x15,
-
- // Part2 iBeacon profile uuid
- 0xe2,
- 0xc5,
- 0x6d,
- 0xb5,
- 0xdf,
- 0xfb,
- 0x48,
- 0xd2,
- 0xb0,
- 0x60,
- 0xd0,
- 0xf5,
- 0xa7,
- 0x10,
- 0x96,
- 0xe0,
-
- // Part 3 major, minor & 2's complement of the calibrated Tx Power
- 0x00, 0x00, // major
- 0x00, 0x00, // minor
- 0xc5
- };
然后编译运行,在iOS设备上打开AirLocate之类的iBeacons测试工具,就可以搜到我们的 iBeacons 基站啦!
有人要问了 为什么我要把它起名为 Microduino iBeacons 呢?
答案就是, iBeacons 模块现已加入 Microduino 豪华午餐 当当当当 (测试版 没有洗板子 求轻拍……)
写完以后才发现 EEWorld也偷偷发了个iBeacons教程……只不过没敢吧Apple跟iBeacons说出来{:soso_e120:}
http://www.eeworld.com.cn/training/2014/TI_RFlimitless_0106/377.html
这个要赞一个
这个三角形是什么图标 ?
越狱以后有个Zeppelin插件可以换运营商图标
iBeacons 基站 可以实现什么功能?
可以实现的功能很多,包括用户身份认证,广告推送,支付,室内定位等等比如说 你装了某个品牌的APP
走到专柜的时候 系统就能自动识别你的身份,通过蓝牙跟你自己账号的绑定,给你推送优惠信息“您是老客户,全场95折”或者根据消费习惯,推送有针对性的广告“您喜欢购买的足球鞋最近有XXX新品”,或者实现类似FourSquare之类的"签到"功能等等
一次性干掉NFC、二维码
可以看我上一篇帖子里的参考资料
呵呵 很多帖子 都是经过一些时间,大家才能认识到TA的价值,所以楼主继续加油哈。
时刻关注,我对那个也感兴趣
默默地关注一下
顶一个!我现在也正在研究ibeacon,不知楼主有没有关注华贸的ibeacon,他那个部署功能我还没有理解到!
赞一个
赞一个
感谢楼主发的两个帖子,真的很有帮助,给楼主赞一个
支持楼主,希望继续分享ibeacon相关资料
楼主能否把CC2541 SensorTag beacon FW的源码发我一份学习下?我最近刚学习这个,想做一个能在BLE和iBeacon广播间切换的功能,但总是调试不好。官网上request的链接都变新芯片的了,旧的都没找到。。希望大牛帮助下邮箱:zhaokalbert@gmail.com