
基于ND04C蓝牙模块的Beacon蓝牙信标
简介
一种使用信驰达RF-BM-ND04C蓝牙模块设计的支持iBeacon协议的蓝牙信标(Beacon)。
简介:一种使用信驰达RF-BM-ND04C蓝牙模块设计的支持iBeacon协议的蓝牙信标(Beacon)。开源协议
:Public Domain
描述
一个使用信驰达RF-BM-ND04C蓝牙模块设计的支持iBeacon协议的蓝牙信标(Beacon),该蓝牙模块出厂默认固件包含了一个基本的Beacon模式,可以通过AT指令设置各种参数。因为蓝牙模块价格比较高,且本次设计的信标为了方便后续可能的开发和测试,添加冗余的部分,引脚全部引出为排母,按键,USB串口,因此板子体积就稍显大了,所以并不适合直接应用,更适合开发和测试,其实更像是一个蓝牙开发板,烧录不同的固件即可用作他用。(比如在这个项目中蓝牙信标固件即烧录到信标设备Flash中的程序,使用芯片厂商提供的nRF5 SDK开发框架进行BLE协议栈的开发,以实现其Beacon的功能。)
什么是Beacon协议
Beacon协议是基于BLE广播功能的协议。蓝牙Beacon并不是蓝牙技术联盟SIG所制定的标准,因此也被称为“虚拟标准”,是由大型供货商或企业集团为首,针对广泛的Beacon应用所提出的蓝牙应用规范,比如苹果公司的iBeacon协议,谷歌公司的Eddystone协议。
iBeacon是苹果公司于2013年9月发布的一种基于低功耗蓝牙的通信协议。 蓝牙信标通过全向天线周期向周围发送蓝牙广播包,蓝牙广播包的有效负载包括通用唯一标识符(UUID)、信标与目标设备1m处参考接收信号强度指示(RSSI)和用于识别一组iBeacon中的特定的Beacon的主号(Major)和次号(Minor),支持低功耗蓝牙的设备如手机等通过这些信息就可以实现室内定位和消息推送等功能。随着拥有蓝牙功能的智能手机的普及,只要开启蓝牙再结合对应手机APP,就能够对其位置进行判断,同时蓝牙信标价格低廉,且低功耗蓝牙广播模式下耗电极少,仅靠一枚纽扣电池即可工作数年之久,因此相较于其他几种室内定位技术,其兼容性更强,成本更低,从而更容易推广普及。从iBeacon室内定位技术的基础上,优化测距模型和多边定位算法,即可以保证在室内环境的实际使用中达到合适的定位精度。
这个蓝牙信标有啥用
【知乎】蓝牙信标是什么?蓝牙信标的功能
蓝牙信标是一种蓝牙设备,用于广播特定的信号以提供位置或其他有用的信息。它通常用于室内定位、室内导航和位置感知等应用中······
硬件设计
主控模块及外围电路设计
RF-BM-ND04C模块引脚定义和电路设计:
GND为模块地;
VCC为电源正极输入,额定电压为3.3V,实际可以工作在1.7V~3.6V,该引脚接3.3V电源网络,连接100nF与2.2uF滤波电容进行电源滤波;
P21/RST为复位IO,低电平有效,开关SW1即为复位按键,为削弱按键抖动,在按键正负极并联100nF电容;
SWDIO与SWDCLK为仿真烧录引脚;
以下分割线内为模块自带默认固件功能
P19为RESTORE,上电检测到置低3秒,所有参数恢复出厂设置(默认固件下的功能),该引脚由按键SW2接地,按下置低电平。
P13为唤醒IO,当模块处于休眠状态时,可通过此IO唤醒模块,下降沿有效,故该引脚上拉10KΩ接电源,由按键SW3接地,按下产生下降沿唤醒,Beacon模式无效果;
P05为RTS(标准硬件流控RequireToSend)模块输出信号为高时表示模块串口忙,不允许向模块串口发送数据,为低时可以向模块发送数据,未设计硬件流控,此引脚悬空;
P07为CTS(标准硬件流控ClearToSend)模块输入信号,为高时表示MCU串口忙,模块不会向MCU串口发送数据,为低时可以向外发送数据,未设计硬件流控,此引脚接地,始终为低电平,即随时可以向外发送数据;
P06为TX模块串口发送端连接CH340的RX端;P08为RX为模块串口接收端,连接CH340的TX端,这两根串口通信线路用于实现USB转串口芯片CH340与蓝牙模块间的串口通信;
P17为状态指示连接状态指示引脚,连接时为低电平,在此使用蓝色LED和1KΩ电阻,LED阴极连接P17引脚,未连接时熄灭,连接时亮起,在Beacon模式下无效果。
其余引脚为未使用的通用IO。
串口电路设计
CH340是USB总线的转接芯片,实现USB转串口,CH340C为其子型号,已内置时钟发生器。CH340芯片支持5V电源电压或者3.3V电源电压。
蓝牙芯片与ch340的TX、RX数据线中间加入2x2的排针,这样既可以使用板载ch340串口通信,也可以不焊接ch340,使用串口模块用杜邦线连接。注意使用板载ch340进行串口通信时不要忘记使用跳线帽连接这两对排针。
电源电路设计
USB Type-C连接器VBUS连接5V直流电源正极,GND和外壳连接电源负极;CC1和CC2,他们用于识别连接器的插入方向,以及不同的插入设备,在这里下拉5.1KΩ接地;DP与DN为USB差分信号引脚,直接连接CH340C芯片;此外在5V电源网络添加一个蓝色LED电源指示灯,用于显示外部电源接入状态。
LDO电平转换电路的核心是AMS1117-3.3V,最大输入电压最高为12V,在此项目中VIN输入电压5V,VOUT输出电压3.3V,且这两个输入输出引脚都分别接10uF电解电容滤波,此外输出端经过一个低压降肖特基二极管连接到3.3V网络,目的是防止电池电路反向流入AMS1117输出端VOU。
电池供电电路比较简单,直接将CR2032纽扣电池连接器经过一个低压降肖特基二极管连接到3.3V电源网络。(CR2032是一种一次性纽扣锂锰电池,额定电压3.0V,典型容量225mAh,根据IEC标准60086的定义,名称中的20即表示直径为20mm,32表示高度为3.2mm。)
此电路是两个二极管的结合方式,还有一个好处就是能优先使用电压高的电源,就算纽扣电池的电压稍高也没关系,暂时使用纽扣电池的电,随着电压下降就不在使用电池的电。这种电路的好处是,尽量使用开机电源,不使用纽扣电池,这样能节省电池电量,延长使用时间。两个二极管选择了反向漏电流小的肖特基二极管。
PCB设计
PCB采用双层板进行设计,电容、电阻、芯片元件选择贴片元件,其余元件选择直插件。
蓝牙模块放置在顶层,在模块接触地方全部铺铜并良好接地,且尽量避免在底层走线,目的是避免不同程度影响模块的杂散以及接收灵敏度。蓝牙模块天线为板载PCB蛇形天线,需要在天线周围留出净空区,天线底层和左右两边一段距离不能有接地平面,否则影响天线辐射效率,因此在此选择将天线部分悬空出PCB板,最大限度减少不利影响。
此外各个芯片的退耦电容和滤波电容尽量靠近需要相连引脚。
实物展示


iBeacon定位原理
RSSI方法,即接收信号强度指示法,其工作核心是先测距再定位,即先确定发射设备(蓝牙信标)的发射功率和接收设备(被定位设备)的接收信号功率信息,后通过三边定位算法计算出被定位设备的坐标。
相较于其他方法,该定位方法的优点是设备比较简单,既不需要如到达角(AOA)方法设计测向天线,也不需要如到达时间(TOA)、到达时间差(TDOA)法设计时钟同步设备。另一方面,算法实现也比较简单。
但是该方法的缺点是接收信号强度指示RSSI的值容易受到环境的干扰。首先空间内的金属物体会对电磁波进行较大反射,信号发送设备与接收设备视距内有物体遮挡会削弱信号强度。另一方面,在没有这些空间环境因素的影响下,由于信号发送设备的发射功率不稳定,使得接收设备端的RSSI值出现一定波动。由于距离的推算依赖RSSI值的大小,因此上述干扰会在一定程度上影响定位的精度。为了提升RSSI法定位的精准度,需要做到两点,建立准确的衰减测距模型,以及使用先进的位置解算算法。
接收信号强度测距算法
接收信号强度测距算法,简单来说就是距离越远信号越弱,越近信号越强,只要我们找到信号强度和距离的一个对应关系,就可以根据信号强度得到距离。
常用的无线信号传播模型主要是对数路径损耗模型。
d为发送端到接收端的距离。
n为信号随距离衰减的路径损耗因子,其取值大小取决于无线信号的传播环境;
RSSI代表距离为d时的接受信号功率;
A代表距离为1m的接受信号功率,作为参考参数;
功率单位为dBm。
n、A参数可以根据实验进行拟合得到,可看做已知,再根据接收端的信号强度指示RSSI,解方程即可算出距离d。

三边定位算法
在使用测距进行定位的算法中,三边定位法是一种常用的求解方法。其原理是:假设一个平面上有三个非共线节点A、B、C和一个未知节点D,则测量节点D到节点A的距离R1,到节点B的距离R2和到节点C的距离R3。然后将三个已知节点以节点为圆心距离为半径绘制成圆,其中未知节点的坐标即为三个已知节点绘制的圆所形成的交点。

假设三节点的坐标分别为A(x1,y1),B(x2,y2),C(x3,y3),未知节点坐标为D(x,y),可以来求解
解此方程组得到坐标(x,y)。
此解是未知节点D的坐标位置,然而在实际测量中,由于测量误差,三个圆往往不能产生一个点。而是相交形成一块具有面积的平面。此种情形下,需要再使用其他解算方法如最小二乘迭代算法求解。

最小二乘迭代算法
最小二乘法是一种数学优化方法,用于寻找一组参数,使得一个给定函数与一组观测数据之间的误差平方和最小。在节点定位中,多个参考节点的位置已知,通过测量信号的强度等信息,可以得到目标节点到每个参考节点之间的距离数据。因此,我们可以将测量的距离数据看作观测数据,节点位置坐标看作参数,建立最小二乘法模型,来计算目标节点的位置。
太细节的我也不太懂,,具体算法我抄了参考了一篇硕士论文放在附件了,想仔细研究可以看看。
赵帅豪.基于低功耗蓝牙的室内定位研究与实现[D].北京建筑大学,2020.
定位测试
本来想整个APP的,能设置基站坐标,然后把算法放在APP内实现,但是确实是自己没实力太笨了,这个Android开发实在整不明白,我自己本来就没有太多软件开发经验,断断续续学了一个月也没整出来。没辙最后使手机端nRF Connecter APP凑活着采集了RSSI数据,再导到Matlab上用算法解算位置,很麻烦但也只能这样了。



在大概80平米的开阔空间内,测试了5个坐标点,平均误差值为2.24m,最大误差值为3.46m。
| 实际坐标 | 估算坐标 | 误差(m) |
|---|---|---|
| (1,3) | (0.79,3.62) | 0.65 |
| (4,6) | (2.89,7.17) | 1.61 |
| (5,4) | (2.64,6.53) | 3.46 |
| (8,4) | (11.27,5.68) | 3.36 |
| (6.6,5) | (4.59,5.70) | 2.13 |
后记
在众多测距方法中,RSSI虽然实现最为简单,但是在实际应用中的精度和稳定性表现都很一般。因此,尽管早在蓝牙4.0时代各机构和公司就推出了各自的RSSI蓝牙定位技术,但是并没有什么人用。后来的到达角(AOA)法和出发角发(AOD)等方法,定位精度和稳定性就好一些,能达到分米级比较可用了,现在好多公司都在做这个。去年SIG蓝牙6.0,又提出了蓝牙信道探测(Bluetooth Channel Sounding),包括基于相位的测距方法(PBR)和基于往返时间(RTT)的辅助测距方法,据说可以实现厘米级的精度,蓝牙6.0的芯片今年大概陆陆续续发布了,还没看到落地应用,想必也是很未来可期了。
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。










