Funpack第九期--基于SensorTile.box的四面信号采集小盒子
使用SensorTile.box设计,可使用四个不同的面测试桌面倾斜程度、温度、湿度、气压。
标签
嵌入式系统
冷月烟
更新2021-06-21
1210

1.任务目的

使用SensorTile.box 立方体较大的四个面,实现四个不同的功能:

rule-sample.png

· 面1,测量桌面倾斜程度;

· 面2,测量温度;

· 面3,测量湿度;

· 面4,测量气压;

 

2.硬件介绍

SensorTile.box 立方体具有多个传感器,其中有一些传感器的功能是有重复的,这里我使用了 LIS2DW12(加速度传感器)、LPS22HH(压力传感器)、HTS221(温湿度传感器)这三个传感器来实现本次的功能。

FmBr3VTAux6jKiL_3pZ2fpMY78EZFlFw59f1xP-a9djq4_I-cbj0ym5VFniGumNUcZM6CjdSNpmkw5INduHv

根据原理图,初始化了I2C1,SPI1以及CS_ACC引脚,这里的DRDY是数据就绪IO,本次并不使用,INT是中断引脚,本次也不使用。

Fi_yKFFxZgdXKLyphzfLGW9JQLSa

此外还初始化了SW_SEL引脚,防止充电芯片无法被唤醒(注意,断电后上电还是要按PWR)

 

3.IO配置

ST提供了CubeMX这个非常方便的配置工具,这里我的主要配置如下:

IO配置:

Fr1oFHlTRujbIdRqw5MRQ_b1rZN_

UART配置:

FsgQeVIy8QzW2BhmXBTaGZHjZ_l9

SPI1配置:

FhKDAUN_SY2lyoMGWV0tFFkThKzw

I2C1配置:

Fi4dTvNQfbM0FSvEMYlH-K4rzuy6

 

4.主要代码

主循环的主要思路就是通过监测加速度计的值的特征来分辨当前是那个面朝上。

while (1)
{

	LIS2DW12_get_axes(&axes);
	if((ABS(axes.z) > ABS(axes.x)) && (ABS(axes.z)>ABS(axes.y)))
	{
		if(axes.z > 0)   //面1
		{
			float ax, ay, az;
			angle_conversion(&axes, &ax, &ay, &az);
			printf("桌面倾斜程度: x:%.2f° y:%.2f°\r\n",90-ax, 90-ay);
		}
		else             //面3
		{
			printf("湿度: %.2f%\r\n",HTS221_get_humidity());
		}
	}
	else if((ABS(axes.y) > ABS(axes.x)) && (ABS(axes.y)>ABS(axes.x)))
	{
		if(axes.y > 0)   //面2
		{
			printf("温度: %.2f℃\r\n",HTS221_get_temperature());
		}
		else             //面4
		{
			printf("气压: %.2fPa\r\n",HTS221_get_pressure());
		}
	}
	HAL_Delay(1000);
}

 

下面一段代码是通过输入加速度的原始数据,转换生成角度,主要思路是利用三角函数,得到实际的角度。

void angle_conversion(LIS2DW12_Axes_t* axes_p, float* x_p, float* y_p, float* z_p)
{
	float norm,ax,ay,az;
	norm = (float)sqrt((double)(axes_p->x*axes_p->x) + (double)(axes_p->y*axes_p->y) + (double)(axes_p->z*axes_p->z));
	if (norm == 0.0) norm = 0.000001;
	ax = axes_p->x / norm;
	ay = axes_p->y / norm;
	az = axes_p->z / norm;
	*x_p = acos(ax)*180/PI;
	*y_p = acos(ay)*180/PI;
	*z_p = acos(az)*180/PI;
}

 

5.实际演示

当设备处于不同面朝上的时候,通过串口打印对应功能的数据

面1,打印当前桌面倾斜程度

FnHYvlp8tavGA4inRG5zF1QjWJ83

FiSTVFhqtvRo1O7o2QI-AfB5HZ_1

面2,打印当前温度

FnDIQsJqAFTcEEKu_TxsiSC2A6Id

FsLS8a4vSSXgRLufohUryfp2vE59

面3,打印当前湿度

FrCG4t4vo8kHiuLllOyH21YYXEyN

Fv7SfttAjvS_LOYNjLLwT-T3vaGm

面4,打印当前气压

FqGroz1SfG7bUzQjR8zRLURabWwD

FtYDKTdhycHAwWwFqFd2CHGjHFBR

 

6.总结感想

ST这块小板子可以说是“麻雀虽小五脏俱全”,传感器非常全面,适合于各种需要这些传感器采集的场景。很有意思。本来打算完成任务三,不过由于最近比较忙,所以就先把任务一完成了,如果接下来有时间的话,会把任务三完成一下(嗯,最后还是没有时间。。。。)。

 

6.意见建议

这次活动我觉得已经设计的非常好了,实在提不出啥意见。。。。。。。

附件下载
代码 (2).zip
团队介绍
团队成员
冷月烟
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号