任务说明:
本次完成的任务是任务一:使用SensorTile.box立方体中较大的四个面始实现不同的功能。
- 面一用于测量桌面倾斜程度,使用的传感器是加速度计;
- 面二用于温度测量,使用的是温度计;
- 面三用于湿度测量,使用的湿度计;
- 面四用于压强测量,使用的是气压计;
- 使用加速度计测量各个轴上的重力计算度,来判断哪个面朝上
代码简介:
代码整体上分为一下几个部分:
- 通过获取传感器计算得到四元数,通过一个茶壶视图的方式展示盒子当前姿态;
- 通过温度传感器,测量当前环境温度;
- 通过湿度传感器,测量当前环境湿度;
- 通过气压传感器,测量当前环境压强;
- 通过加速度传感器,计算欧拉角,来获取盒子的倾斜角度;
- 通过加速度传感器,依据重力加速度大小,判断当前盒子那个面朝上。
如下图,为完整的流图:
如下图,该部分的操作是获取四元数,然后可视化显示出来(通过一个茶壶的姿态来展示盒子的当前姿态)
如下图,主要是温度、湿度、气压、角度量的获取,最终以文本的方式进行展示。这里需要注意的是,传感器数据不能直接输出,需要指定的面朝上时,才能进行输出,否则输出默认值(0)。这里实现选择的的就是Switch控件。
如下图,就是通过获取加速度传感器在三个轴上的重力加速度值,然后与阈值进行判断,以此获取当前是哪个面朝上,输出的结果连接到Switch的控制脚上,来实现不同面进行不同数据测量的效果。
功能展示:
如下图所示,左边展示的是盒子的当前状态,右边展示的是输出结果,当前是第一个面朝上,触发的操作是角度测量,从输出结果可以看到,除了角度值,其余值都是禁止输出(0),证明触发的是角度测量功能。
如下图所示,此时为第二个面朝上,触发的是温度测量功能。从右侧的结果输出页面中可以看到,除了温度数值持续在更新,其余输出禁止输出(0)。
如下图所示,此时为底面,也就是第三个面朝上,触发的是湿度测量功能。从右侧的结果输出页面中可以看到,除了湿度数值持续在更新,其余输出禁止输出(0)。
如下图所示,此时是第四个面朝上,触发的是压强测量。从右侧的结果输出页面中可以看到,除了压强数值持续在更新,其余输出禁止输出(0)。
心得体会:
SensorTile.box这个小设备,基本上包含了一个产品常见的传感器外设,可以很方便的进行功能验证,以及作为参考设计。同时,通过APP、AlgoBuiler进行拖拽式编程,完全不需要了解底层代码逻辑以及编写方式就可以完成功能实现,很方便。
其实就ST这些年推出的产品来看,越来越倾向用户只需要实现上层业务逻辑即可,底层都由通用代码加配置工具进行实现,大幅度降低开发中的重复工作量,相信以后单片机的开发会越来越快。