2501|2

286

帖子

7

TA的资源

一粒金砂(高级)

楼主
 

【安信可UWB室内定位模组NodeMCU-BU01】No.003-应用程序联调 [复制链接]

上一篇介绍搭建硬件电路,并进行了简单测试,确认硬件焊接无问题。这一篇主要是介绍应用程序的编写和两板卡测试。

首先展示一下我做好的《超简单测距仪》合体的样子,如下图,左边是基站,只负责发射信号。右边是实际应用实现部分,接收信号和显示结果。

1 超简单测距仪

为了不显得特别简陋,我用白纸做了一个蒙皮遮挡一下绿板板。具备4个按键,分别是:

测距键,切换模块进入TAG模式并启动测距任务,屏幕上会滚动显示测距结果。

基站键,切换模块进入Anchor模式,作为基站发射信号。

XYZ键,读取模块加速度传感器输出信号,显示到屏幕上,可用于测量水平状态。

TH键,读取模块温湿度传感器输出信号,滚动显示到屏幕上,用于测量温湿度。

下面介绍具体软件设计过程。最先调试的是串口字符串接收程序,具体接收代码如下图。

2 字符串接收

由于每一次返回的消息都是以\r\n结束,所以我这采用\r作为一行的判断依据。返回的消息中存在大量的换行和OK”这样不需要显示的字符串,我做了一个筛选规则,凡是小于3个字符的消息全部过滤掉,这样就保存了有用的数据到一个二维数组中RxBuffer[4][18]。这个数组也是用于显示缓存。显示器是128*64分辨率,每行能显示16个字符,能显示4行,接收时也对字符数做了过滤,每行大于16个字符的部分也丢掉了,实际应用中被丢弃的是重启后初始化时输出的小版本信息,并不影响实际应用。

在调试中遇到一个STM32库的bug,就是串口出现溢出后HAL库函数没有处理,导致进入死循环,后来在异常处理中加了清除溢出标志位操作,终于好用了,具体操作代码如下。

3 清除溢出标志位

每接收完一行字符串,会置位一次显示刷新标志,显示程序将整个字符串数组刷新到屏幕上,如下图。

4 刷新屏幕

四个按键采用IO口直接读取方式,每100毫秒读取一次,连续读取2次一样就生成有效键值。然后等待释放,不释放不会产生新的键值。如下图。

5 按键读取

主循环分为三部分,如下图。1、按键键值处理,将状态进行标记和转换。2、按键任务散转处理,具体执行对应按键指向的任务。3、刷新显示任务,标志置位每刷新一次后执行一次本任务。

6 主循环

实际操作如下面视频,通过按键直接切换工作模式,对两个模块联调,基本上实现了预期功能。


视频1 操作演示

视频上可以看出,由于OLED是不断刷新的,录像或拍照的时候,能看出来在不停地闪烁,但是人眼直接看的时候由于视觉残留作用,则看着是正常的,这个对拍照有些影响,等以后有机会了进行研究下,看看能不能改善。

至此,预期要实现的功能都完成,制作成功一台简易的测距仪,下一步进行实地测量,总结测试报告。

 

 

 

 

查看本帖全部内容,请登录或者注册
此帖出自无线连接论坛

最新回复

测距精度怎样 测距精度按楼主的这个方案与什么有关   详情 回复 发表于 2022-2-13 21:59
点赞 关注
 

回复
举报

7032

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

测距精度怎样

测距精度按楼主的这个方案与什么有关

此帖出自无线连接论坛

点评

无遮挡的情况下,精度在20cm左右,比官方宣称的要大一点 有遮挡就不好说,在我家隔3堵墙,就收不到数了  详情 回复 发表于 2022-2-15 14:12
 
 

回复

286

帖子

7

TA的资源

一粒金砂(高级)

板凳
 
Jacktang 发表于 2022-2-13 21:59 测距精度怎样 测距精度按楼主的这个方案与什么有关

无遮挡的情况下,精度在20cm左右,比官方宣称的要大一点

有遮挡就不好说,在我家隔3堵墙,就收不到数了

此帖出自无线连接论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表