任务介绍
本项目实现了Funpack第九期活动的任务一,使用 SensorTile.box 立方体较大的四个面,实现四个不同环境量的监测功能,并使用串口工具对数据进行可视化显示。
其中各面的对应环境量:
-
面1,测量桌面倾斜程度
-
面2,测量温度
-
面3,测量湿度
-
面4,测量气压
硬件平台
本期活动的主角:ST意法半导体推出的SensorTile.box开发板。正如它的名字所说,我们可以把它理解为一个装满传感器的小盒子。这块开发板的功能设计非常完整,它不仅搭载了丰富的传感器、还充分考虑了无线通信、独立供电以及外部封装。我们可以用它来测量多种环境参数,比如温湿度、大气压强、地磁、声音、加速度和角速度,测得的数据可以通过板载的SD卡记录下来,或者使用蓝牙无线传输给上位机作进一步处理。
任务分析
用一句话概括任务一,就是通过盒子四个面的朝向,控制对应的传感器数值输出。
完成任务一的关键是实现它的核心逻辑,如何通过姿态传感器判断盒子目前的朝向。这个任务可以有多种实现方法,既可以使用传统的STM32裸机编程,也可以使用AlgoBuilder图形化开发环境,还可以在上位机APP里进行更高层次的编程,本次任务中我选择的是图形化编程的方法。
实现流程
我们可以先通过一个简单的工程,观察盒子不同朝向时,传感器输出的不同。
在这个程序中,使用Tilt Sensing来得到盒子当前的倾角,使用Fusion可视化开发板当前的姿态。
可以发现如下的简单规律。
-
第一面朝上时,第2、3个分量接近0
-
第二面朝上时,第2、3个分量接近90度
-
第三面朝上时,第3个分量接近180度
-
第四面朝上时,第2个分量接近-90度,第3个分量接近90度
得到了这个规律,我们就可以通过一些简单的条件判断来构建控制逻辑。
效果展示
接下来进行最终的效果演示,最终的实现分为三个部分,首先是传感器原始数据的读取、随后进行逻辑判断、最后进行输出控制。程序使用45°和135°作为判断的阈值,使用0进行传感器输出的屏蔽。
可以看到当不同的面朝上时,只输出对应的传感器量,并将其他量的输出屏蔽。
活动感想
很荣幸参加本期的Funpack活动,这也是我第二参加Funpack系列的活动。从接触第一块STM32开发板起已经接近6年了,从最开始的F103,到增强的F411,到系列中更高性能H743,再到本次任务中的低功耗L4R9。STM32始终对我有着特殊的吸引力,也助我获得过很多比赛的好成绩。它到底的吸引力到底在哪里呢?我想,那就在于高性能和易编程。
本次任务的主角SensorTile.box又一次充分地证明了这一点,AlgoBuilder将易编程的特点提高到了一个新的高度,虽然以前LabVIEW和MATLAB提供过类似的功能,但都没有AlgoBuilder和STM32如此紧密耦合和容易上手。
提出一些建议:
- 希望AlgoBuilder平台能够持续推广,以库、模块化、组件化的方式,充分兼容上更多类型的STM32开发板与传感器。
- 开放和简化自定义组件的接口,使开发者能够快速移植自己的传感器,定义自己的逻辑代码块,最终达到任何一块STM32的板卡都能使用AlgoBuilder快速搭建项目原型。
最后,感谢硬禾学堂和得捷电子联合举办的Funpack活动,祝硬禾的活动越办越好!