任务:环境监测站
如右图所示,使用SensorTile.box 立方体较大的四个面,实现四个不同的功能,如:
-
面1,测量桌面倾斜程度;
-
面2,测量温度;
-
面3,测量湿度;
-
面4,测量气压;
使用串口工具对采集到的数据进行可视化显示
设计思路
拿到SensorTile.box后,我就直接用官方的手机app玩起自定义程序的功能,这种方式编程较为简单,不过功能不够全面。由于官方的手机app不能对加速度计输出的分量分别进行判断或运算,我就选用进阶一点的Algo Builder进行程序开发。
Algo Builder使用图形化的方式编程,软件界面十分简洁,也很容易上手。参照使用手册一下就可以产生可下载的程序。algo Builder中有许多预设好的功能块可以使用来构建程序,也可以用子模块的层次化方式构建程序。由于这次任务比较简单,所需的功能不多,我就在一个主设计中设计所有的功能了。
这次任务的设计不难,设计的具体程序如下图所示。首先要是对当前朝上的面进行判断,只需将加速度计的y z分量取出与预设的阈值进行判断即可,输出的逻辑值用于后面数据的选择。为了数据的稳定,我在各个传感器后添加了滑动平均滤波器。温度湿度以及气压数据可以直接输出至value显示模块,要让输出数据和朝上的面相关,在每个传感器数据后添加switch模块即可,使数据对应面不在上时输出0。最后是对倾斜度的测量,为了使用方便,我选择计算出x y两个维度上的倾斜度同时进行显示。计算上取加速度计xz和yz分量的反正切就是所需的倾斜度了。最后的输出模块可以用angle level来显示出一个形象的倾斜度。
程序具体的功能演示如下:
可以看到当开发板1面在上方时,向两个不同方向倾斜后倾斜度的x部分和y部分分别测量到倾斜度,数值与开发板倾斜的角度相符,与此同时,其他传感器数值为0。
当开发板2面在上方时,输出温度数值,与此同时,其他传感器数值为0。
当开发板3面在上时,输出温度数值,与此同时,其他传感器数值为0。
当开发板4面在上时,输出气压数值,与此同时,其他传感器数值为0。
心得体会
第一次尝试用图形化的方式开发应用,体验很特别。开发的速度非常快,但对较大的应用开发还是有点不足。通过本次活动还了解到ST有许多不错的MEMS和传感器,都有着很好的功耗和精度。