内容介绍
内容介绍
1.任务目的
使用SensorTile.box 立方体较大的四个面,实现四个不同的功能:
· 面1,测量桌面倾斜程度;
· 面2,测量温度;
· 面3,测量湿度;
· 面4,测量气压;
2.硬件介绍
SensorTile.box 立方体具有多个传感器,其中有一些传感器的功能是有重复的,这里我使用了 LIS2DW12(加速度传感器)、LPS22HH(压力传感器)、HTS221(温湿度传感器)这三个传感器来实现本次的功能。
根据原理图,初始化了I2C1,SPI1以及CS_ACC引脚,这里的DRDY是数据就绪IO,本次并不使用,INT是中断引脚,本次也不使用。
此外还初始化了SW_SEL引脚,防止充电芯片无法被唤醒(注意,断电后上电还是要按PWR)
3.IO配置
ST提供了CubeMX这个非常方便的配置工具,这里我的主要配置如下:
IO配置:
UART配置:
SPI1配置:
I2C1配置:
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,打印当前桌面倾斜程度
面2,打印当前温度
面3,打印当前湿度
面4,打印当前气压
6.总结感想
ST这块小板子可以说是“麻雀虽小五脏俱全”,传感器非常全面,适合于各种需要这些传感器采集的场景。很有意思。本来打算完成任务三,不过由于最近比较忙,所以就先把任务一完成了,如果接下来有时间的话,会把任务三完成一下(嗯,最后还是没有时间。。。。)。
6.意见建议
这次活动我觉得已经设计的非常好了,实在提不出啥意见。。。。。。。
附件下载
代码 (2).zip
团队介绍
团队成员
冷月烟
评论
0 / 100
查看更多
猜你喜欢
Funpack第九期—在SensorTile.box上使用qeeox进行声音分类识别SensorTile.box Qeeox 机器学习 神经网络 声音分类 stm32
aramy
1492
Funpack第九期-SensorTile.box-任务一1.介绍SensorTile.box的使用方法
2.使用SensorTile.box 立方体较大的四个面,实现四个不同的功能
Titan
1455
Funpack第九期 — 任务一:SensorTile.box 姿态检测+环境监测Funpack第九期任务一解决方案
题目要求:使用SensorTile.box 立方体较大的四个面,实现四个不同环境量的监测功能,并使用串口工具对数据进行可视化显示。
枫雪天
1186