Lazy loaded image
🗒️1.nimble案例分析—ibeacon
00 min
2024-11-25
2024-12-20
type
status
date
slug
summary
tags
category
icon
password
😀
试着写一篇案例分析,可能有些地方有问题后续会慢慢修改
 

1.1. 简介功能

这是一个 iBeacon 定位示例。
iBeacon 技术主要应用于室内定位和导航、基于位置的广告推送以及客户行为分析等场景。
iBeacon 广播数据包包含以下关键信息:
  • 主 UUID:用来标识一组 iBeacon,比如一整个连锁店的标识。
  • 可变 UUID:用来区分不同的具体设备,比如某个具体店铺的设备。
  • Major 和 Minor:再进一步细分场景,可能用来标识某个楼层或者某个区域。
  • 信号强度 (RSSI):这个值可以帮助判断用户离这个 beacon 的距离。"
信号强度(Measured Power):这个值用于确定设备与Beacon的距离。通过比较广播信号的强度(RSSI)和Measured Power,应用可以估算出用户设备与Beacon的距离。
 
结合实际应用举例,比如博物馆的某个展厅(主 UUID),里面的特定展品(可变 UUID),不同展品的信息用 Major/Minor 来区分。

1.2. 软硬件平台

硬件平台:nordic的nrf5x系列开发板nrf52832
软件平台:采用的是nrf5x系列芯片的RT-Thread嵌入式系统工程,使用了nimble软件包

1.3. 试验

1.3.1. 验板

notion image

1.3.2. 程序配置设置

环境准备:
RT-Thread开发辅助工具Env:https://www.rt-thread.org/page/download.html
 
下载好rtthread的源码和工具到电脑上
打开RTThread源码里对应的nrf52832 bsp文件夹\rt-thread\bsp\nrf5x\nrf52832
notion image
打开env配置工具
在工程中右击选择ConEmu Here
notion image
输入menuconfig进入配置界面
notion image
来到开启nimble的选项这里回车打开
notion image
然后按照我的选项路径来到nimble的配置页面
notion image
notion image
打开本次实验用到的实例beacon

1.3.3. 配置编译

完成配置后按ESC返回,会弹出一个对话框询问是否保存,按下键盘的Y就可以了
notion image
notion image
然后输入scons -j4就会开始编译了(-j的参数取决于电脑cpu的线程数,比如32个线程可以用-j32)
notion image
按下回车等待编译完成,然后就可以开始下载程序到开发板上了

1.3.4.下载程序

下载程序之前需要提前准备好vscode以及Cortex-Debug拓展
notion image
然后关闭vscode窗口,在scons里输入code .就能在bsp项目路径的文件夹里来打开vscode
notion image
插上开发板,来到运行和调试里开始下载程序
notion image
notion image
下载到开发板后会自动运行并停在main函数上
这时点击全速运行,程序就可以正常运行了
 
由于实例默认是需要以命令的形式开启的,所以还需要在串口软件里输入命令,设置好板子的串口以及115200波特率就可以看到输出信息了
notion image
notion image

1.3.5. 手机连接验证

手机端下载nRF Connect工具。下载地址是
打开手机蓝牙功能,打开该app,搜索到ibeacon
notion image
notion image
notion image

1.4. 软件结构

notion image

1.5. 程序

RT-Thread启动后,首先会自动运行初始化函数nimble_port_rtthread_init,然后需要通过串口终端手动启动iBeacon任务。
本文将以iBeacon案例为主进行分析。
iBeacon任务主要完成两项工作:设置广播数据包并开始广播
其中,设置和开始广播数据包的功能被封装在名为ble_app_on_sync的同步回调函数中。
当蓝牙主机堆栈与控制器同步完成后,ble_app_on_sync函数将被调用,以便执行后续的初始化步骤。

1.5.1. 初始化函数

这部分代码实现了NimBLE蓝牙协议栈的基础初始化过程,包括事件队列、主机栈和控制器的初始化,为后续的蓝牙通信功能提供必要的运行环境。

1.5.2. ibeacon主要的功能函数

ble_app_on_sync是一个蓝牙同步回调函数,当蓝牙主机堆栈与控制器同步完成后被调用,负责设置随机地址并启动iBeacon广播。

总结归纳

分析比较浅,后续可能还会在整理一遍
 
 
💡
有关题目或文章的问题,欢迎您在底部评论区留言,一起交流~
上一篇
2.nimble案例分析—bleprph
下一篇
Github使用SSH远程连接仓库配置方法记录

Comments
Loading...