首页
定位基站和定位标签的生产过程
- 菜单项设置
- 作者: zhang
- 分类:技术
定位基站和定位标签的生产过程
产品的生产分为两个步骤:硬件生产、出厂初始化。
硬件生产:我们自行采购需要的元器件,向PCB生产厂下单制作PCB、委托贴片厂贴片(焊接),最后我们拿到的是PCBA,即安装好元器件的半成品板子。有时,因为采购周期时间上的原因,可能会有部分元件自己焊接。
拿到PCBA后,我们首先是上电,看是否正常。有时,板子上的元件可能会有虚焊或短路的情况。如果焊接没问题,板子上的一些LED会亮。
如果上电没异常,就可以刷入固件。板子上的固件分为两个部分:Bootloader和Firmware。
Bootloader是启动加载器,这是固定的、终生不变的。也就是说,一旦刷入到板子后,Bootloader就不变了,即使将来有新的Bootloader版本,也没法对用户那里的老板子进行更新。
Firmware是正常固件,其执行正常的功能,可以随时升级到新的版本。
我们使用专门的固件烧录器来刷入Bootloader,大多数工厂都会使用固件烧录器来刷固件。烧录器中的固件是加密的,可以防止被人读出。烧录器还有刷写计数,可以统计刷写了多少次。
Bootloader刷入后,还要做一个出厂初始化工作。
基站的出厂配置:对基站来说,接入到网络中(实际上前面说的上电,就是接入到网络中,因为使用POE供电嘛)。我们有一台专用电脑运行出厂初始化程序,这个程序会自动为新基站分配MAC地址和序列号,自动把Firmware写入到新基站,并自动写入缺省的基站配置。出厂配置程序还可以打印新基站的铭牌,即使用标签打印机打印出一个即时贴标签纸,上面注明基站的有关信息:如生产厂家、MAC地址、序列号、基站型号等信息。
出厂配置程序还同时会做一些测试工作,例如与基准基站通讯,确认UWB通讯正常;出厂配置程序假装自己是定位引擎,确认能正常收到新基站发来的数据包。
标签的出厂配置:标签的出厂配置与基站类似,不同在于标签使用USB数据线与配置电脑连接,而不是使用网络。配置电脑上运行“标签出厂配置程序”,配置程序会自动为标签分配EUI64地址,并上传标签固件到新标签中。
标签出厂配置也会与基准基站通讯,确认UWB通讯正常。
有些型号的标签,我们有内置一个RFID标签。我们使用了一个RFID读写器对RFID写入一些初始化信息。这个操作也由标签出厂配置程序来进行。
标签出厂配置程序还打印标签的铭牌。
标签低功耗分析
- 菜单项设置
- 作者: zhang
- 分类:技术
标签低功耗分析
这是我们开发过程中的一个文档。
经过努力之后,当进入休眠状态,最低电流是15.x uA。
以下分析一下可能耗电的地方。
ADC分压电阻
使用了两个1M电阻分压对电池3.3V~4.2V进行ADC。
这个分压电路耗电 1.65 uA ~ 2.1 uA
XC6206P332 LDO
XC6206P332负责把电池电压转到3.3V
Datasheet上描述典型功耗为 1uA,最大 3uA。
电容漏电
看三星电容的Datasheet,通常两端的电阻在100MOhm左右,对于3.3V电源来说,相当于漏电流为3.3/100 uA,差不多可以忽略之。
BAV70充电部分二极管
在充电部分,BAV70提供单向导通。手册说在25V情况下,反向电流是 40 nA
也可忽略之。
定位基站的硬件设计
- 菜单项设置
- 作者: zhang
- 分类:技术
定位基站的硬件设计
定位基站的主控是STM32F103RET6,这个MCU的Flash比较大,RAM也比较大,适合跑RTOS。
基站的UWB收发器使用DW1000芯片。我们前期直接使用DWM1000模块,因为DWM1000模块按射频部分都弄好了,对外提供一些SPI接口,我们不需要操心模拟部分的电路,把心思放在逻辑电路上就好。后期新增了一些基站型,这部分有些改变,新增几种设计:(1)自己做类似DWM1000的模块,可以节省成本;(2)自己的UWB模块使用陶瓷天线、或PCB天线,也有IPX座引出使用外置高增益下划线的; (3)增PA/LNA。原厂在850K的速率下通讯距离最远可到300米,增加PA/LNA后可以达到1000米以上。
定位引擎的设计
- 菜单项设置
- 作者: zhang
- 分类:技术
定位引擎的设计
定位引擎是整个定位系统中最重要的部分。它负责接收各个基站发来的数据包,并计算标签的坐标。
最初的版本,我们是使用Java开发的。后来需要作为产品对外销售,Java缺少足够的安全措施,很容易就会被反编译了,我们的知识产权无法得到保护。所以,我们改为C++重写定位引擎。因为我们的客户基本上都是使用Windows服务器,所以目前定位引擎只有Windows版。在设计之初,我们考虑到跨平台,在一些重要的地方都考虑到对Linux的支持。实际上,C++版本的定位引擎在刚写好时,我们顺利编译了一个Linux版本,并在ubuntu上运行了它。
我们需要不断对引擎进行改进,增加功能,或者提升易用性。而客户基本上没有Linux上的需求,所以,我们就再未关注Linux的支持。如果您有这个需要,应该可以最容易就让定位引擎适配Linux。
定位引擎的核心是坐标的计算。我们研究了好几个算法,缺省的情况下,使用最小二乘法进行计算。这个算法速度快、准确性也高。
定位引擎的接口支持5种方式:TCP 二进制消息接口、RESTful 风格接口、TCP 文本消息接口、TCP 自定义二进制消息接口、串行文本消息接口。
因为UWB被定义为近场通讯,这意味着UWB的覆盖范围会很小。特别是无线电管理部门对UWB发送设备的信号强度有限制,如果要保证设备合规,覆盖范围会很小。另外,有些需要定位的环境比较复杂,例如有墙之类的遮挡物。总之,我们需要支持多区域定位,把一个大的场地划分为多个定位区域,每个定位区域都部署定位基站,这些小的定位区域合并在起,就组成一个完整的定位区了。
我们的定位引擎支持多区域定位。例如,正常情况下,每个定位区域的范围是100米*100米,可以把400米*400米的区域划分为“田”字型的4块小区域,相当于部署“4套定位系统”。当然,我们系统支持区域边界上的基站复用,例如“田”字正中心的位置部署一个基站,4个区域都可以共用这个基站。在“田”字的每个交叉点部署一个基站,合计9个基站,就可以达到每个定位区4个基站的效果。
在实践中,我们发现,有些地方会有固定的偏移。为此,我们开发了一个算法,对固定偏移进行纠偏。
第 4 页 共 5 页