一.项目介绍
1.SensorTile.Box套件硬件:
SensorTile.Box是一个很好玩的小盒子,小巧方便携带,内置了多颗Sensor,有常见的温度/湿度传感器,到专业的6轴惯性传感器,很适合需要进行无线物联网或者可穿戴开发的开发。
2.SensorTile.Box套件软件:
为了配合SensorTile.Box的开发,ST开发了ST BLE Sensor App,在APP中根据需要设置功能,通过蓝牙传输,下载到开发板上进行验证,另外,ST和Algobuilder合作,可在AlgoBuilder上搭建可视化程度框架,一键生成C文件并打包,再内置调用ST-Programmer一键下载,最后内置调用Unicleo-GUI对程序运行验证,极大降低了开发入门门槛,同时也加快了开发速度,增加了可玩性,希望国内厂商也往易用性这个方向走,让我们多一些选择,不然买东西都不痛快,你们懂的。。。
二.开发思路和过程
此次Funpack9活动我选取了任务一:用SensorTile.box 立方体较大的四个面,实现四个不同的功能:面1,测量桌面倾斜程度;面2,测量温度;面3,测量湿度;面4,测量气压;并且需使用串口工具对数据进行可视化显示。
本人的C语言实在烂,还好,algobuilder的可视化程序框架可以简单介绍一下我的思路:
第一步:熟悉SensorTile.Box套件。
主要通过AlgoBuilder预置范例,配合说明文档,了解常用功能模块的连接和使用规则。
第二步:分解课题需求
1.需要识别Box的4个较大的面:
参考Acc Sensor范例的值,不同面有X.Y.Z 3个值,其中Y和Z在-1到1之间变化,X不变,记录X.Y.Z在不同面的稳定值(因调用Acc功能,需要保持套件尽量小移动,以确保Acc Sensor的值稳定,个人想法结合陀螺仪和磁力计,应可以做到在空间任意点变化方向,也能准确抓取到是哪个面,即APP中Sensor Fusion的效果,这是后续目标)
按照最少判断的原则,对X.Y.Z的值先进行加总,加总值和参考值(举例+1/-1)对比进行判断,再对Y.Z值分别对比参考值进行判断,最后汇总这3个判断结果:(1).X.Y.Z加总值判断结果;(2).Y值判断结果;(3).Z值判断结果,汇总的判断结果来控制Switch模块选择数据输入,关于X.Y.Z的识别原理,下面附上两张图(力所能及之后图片还有大小不一,请谅解):
2.根据选择结果,调用相应的Sensor输出数据,这部分除了面1的倾斜度比较麻烦,其他3面可直接调用Sensor数据,面1数据取巧直接调用Tile 范例。
第三步:程序实现和调试
这部分主要是调试判断逻辑和调整参数,具体过程不表,就是画逻辑图和根据上图1.2数据做参考,需要确保Box在变化面的过程中,有一段角度的范围,不能只卡完全平面即可。
下图是图形化程序界面的完整框架和相应说明:
下面是判断每个面的逻辑:
第四步:演示效果
如下面的图,桌面上4个数据栏目:第一行左边是第一面,右边是第二面,第二行左边是第三面,右边是第四面。
对应各自图片中下方盒子上的标记,可看到当每个面朝上时,对应传感器输出数据,同时其他传感器无数据输出。
三.活动总结,一些感想
工作多年,算经历了电子产业从粗放发展到产业转型的过程,在这个资本为王的时代,电子森林这样纯粹为提升电子行业水平而努力做事的一群小伙伴,非常非常不容易,很难得。
本人在这次的活动中学习很多,从最开始只知道STM32这个东西,到现在对STM32开发流程基本了解,离不开电子森林老师和群里大佬们的帮助,在此表示非常感谢,也遗憾漏掉了之前的活动,以后的活动会继续支持下去,希望电子森林能越办越好。