微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > iBeacons(2) —— 用SensorTag 制作 iBeacons 基站

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"

就需要这样改写

  1. static uint8 scanRspData[] =
  2. {
  3. // complete name
  4. 0x14, // length of this data
  5. GAP_ADTYPE_LOCAL_NAME_COMPLETE,
  6. // Microduino iBeacons
  7. 0x4D, // 'M'
  8. 0x69, // 'i'
  9. 0x63, // 'c'
  10. 0x72, // 'r'
  11. 0x6f, // 'o'
  12. 0x64, // 'd'
  13. 0x75, // 'u'
  14. 0x69, // 'i'
  15. 0x6e, // 'n'
  16. 0x6f, // 'o'
  17. 0x20, // ' '
  18. 0x69, // 'i'
  19. 0x42, // 'B '
  20. 0x65, // 'e'
  21. 0x61, // 'a'
  22. 0x63, // 'c'
  23. 0x6f, // 'o'
  24. 0x6e, // 'n'
  25. 0x73, // 's'

  26. // Tx power level
  27. 0x02, // length of this data
  28. GAP_ADTYPE_POWER_LEVEL,
  29. 0 // 0dBm
  30. };

复制代码


而 iBeacons 广播内容,根据上一篇文章的分析 需要写成

  1. static uint8 advertData[] =
  2. {
  3. // Part1 Apple's fixed iBeacon advertising prefix
  4. 0x02, //Length
  5. GAP_ADTYPE_FLAGS,
  6. 0x1a,
  7. // broadcast data
  8. 0x1a, // length of this data including the data type byte: 26
  9. GAP_ADTYPE_MANUFACTURER_SPECIFIC, // manufacturer specific advertisement data type
  10. 0x4c,
  11. 0x00,
  12. 0x02,
  13. 0x15,

  14. // Part2 iBeacon profile uuid
  15. 0xe2,
  16. 0xc5,
  17. 0x6d,
  18. 0xb5,
  19. 0xdf,
  20. 0xfb,
  21. 0x48,
  22. 0xd2,
  23. 0xb0,
  24. 0x60,
  25. 0xd0,
  26. 0xf5,
  27. 0xa7,
  28. 0x10,
  29. 0x96,
  30. 0xe0,

  31. // Part 3 major, minor & 2's complement of the calibrated Tx Power
  32. 0x00, 0x00, // major
  33. 0x00, 0x00, // minor
  34. 0xc5
  35. };

复制代码


然后编译运行,在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

上一篇:关于cc1110
下一篇:CC2530 CSMA/CA

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top