Funpack第九期 SensorTile.Box
实现功能
本次Funpack活动指定了三个任务,分别是
- 实现使用box不同的面实现不同的测量功能。
- 搭建可随身携带的环境监测系统,记录一段时间的环境数据,并导出查看(要求解释数据的变化)。
- 使用神经网络系统,实现特定声音检测功能。
综合考虑选择了本次活动的任务1,使用SensorTile.Box的四个面实现测量四种不同的数据并使用图形化同居显示出来。
面1,测量桌面倾斜程度;
面2,测量温度;
面3,测量湿度;
面4,测量气压
代码介绍
本次代码全部采用AlgoBuilder图形化编程软件编写,此软件编程风格是一种数据流的编程方式。软件里面集成了各种红能模块,不需要去关注底层实现原理,可以更专注于对功能实现的思路。对于数据的显示使用的Unico-GUI,此软件可以很方便的与AlgoBuilder软件结合使用。
分析任务1的要求,使用四个面测量四种不同的数据,则需要实现的功能有
- 辨别板卡的方向
- 对四种数据进行读取
- 根据方向数据对显示的数据进行选择
1、辨别板卡方向
对于功能1,分析板卡上的传感器,可以使用三轴加速度计三个方向的值来判断板卡的朝向(此方法有个弊端即为若转动过快,加速度值会不稳定,导致数据错误),思路为判断三个数据中绝对值的最大值,得到垂直于地面的轴向,再根据最大值数据的正负判断具体板卡方向。子程序“方向判断”如下图1所示
图1
2、对四种数据进行读取
对于功能2,除了桌面倾斜角度没有直接的库支持之外,温度,湿度,气压都有相应的库模块支持,所以主要在于实现倾斜角度的计算。通过对数据的分析发现当最大面与桌面接触时,Z轴加速度的数据最大,则根据简单的受力分解可知,直接对Z轴加速度数据取绝对值然后进行arccos反cos计算即可得到桌面的倾斜角度。子程序“桌面倾斜程度”如下图图2所示
图2
3、根据板卡朝向实现对不同数据的显示
对于功能3,主要需要完成的点为根据子程序“方向判断”的输出结果进行显示数据的选择,对于此部分,只需要简单的进行判断,选择输出即可,可以通过多级串联Switch函数模块实现。子程序“数据显示”如下图图3所示
图3
功能演示及介绍
图4 气压测量显示
图5 湿度测量显示
图6温度测量显示
图7 桌面倾斜角度测量显示
心得体会
这是第二次参加Funpack活动,相对于第一次来说对于新模块的使用上手更快,对于功能的实现相对来说思路也逐渐明显。每一次活动最大的问题对我来说不是功能的实现,而是文档的编写以及视频的录制,总是需要花费很多时间去思考怎么编写,但这次相对以往不管重新录制视频的次数还是文档书写的流程程度都有了很明显的提高。
建议活动板卡找一些大多数人用得上而且以后能持续使用的,上一次活动结束之后一直没有找到合适的机会把板卡利用起来。