您的项目需要加速度计、陀螺仪或磁场传感器吗?内置的IMU传感器LSM9DS1包含这些功能!
您可能已经阅读了有关新的Arduino Nano 33系列及其实时和多线程功能的信息。但是,该开发板还有更多有用的功能!其中之一就是内置的LSM9DS1 IMU,它包含一个加速度计、一个陀螺仪和一个磁场传感器。
在本篇文章中,我们将向您展示如何在不使用任何其他硬件的情况下使用IMU。
安装LSM9DS1 IMU库
在开始之前,您需要为内置传感器安装官方的Arduino库。为此,导航到“Sketch”,在Arduino IDE中打开库管理器,然后单击“include library”,然后选择“manage libraries”。这将会弹出一个新窗口。在该窗口中,搜索IMU并安装下图高亮显示的软件包:

接下来,如果要使用IMU,请在Arduino草图中包括这个已安装的软件包:
#include
使用加速度计
IMU的加速度计可用于测量设备的方向。下图显示了Arduino的移动与加速度计的哪个测量轴相对应。

Arduino的运动如何与加速度计的X轴、Y轴和Z轴相对应
为了测试加速度计,我编写了一个小的测试脚本,可以检测Arduino是放置在平坦的表面上还是倾斜到任一侧。如您所见,该脚本必须读取加速度计的Y轴来确定旋转角度。
将设备放在平坦表面上时,测量值为零。当Arduino倒置时,也是如此。以下代码段显示了loop方法的内容。
float x, y, z, delta = 0.05;
if (IMU.accelerationAvailable())
{
IMU.readAcceleration(x, y, z);
if(y <= delta && y >= -delta)
Serial.println("flat");
else if(y > delta && y < 1 - delta)
Serial.println("tilted to the left");
else if(y >= 1 - delta)
Serial.println("left");
else if(y < -delta && y > delta - 1)
Serial.println("tilted to the right");
else
Serial.println("right");
}
如您所见,我不必连接任何外部硬件。对IMU的所有调用都很短,这有助于保持代码简洁。
我使用了增量值来适应读取传感器值时可能出现的最终误差。您可以调整该值,以使Arduino更早地对其方向变化做出反应。
该草图的输出如下所示:

使用陀螺仪
如您所见,在Nano 33 BLE开发板上,连接IMU的加速度计是一个简单的过程。幸运的是,读取其他传感器值同样容易。例如,陀螺仪可用于实现手势检测:
float x, y, z, delta = 400;
if (IMU.gyroscopeAvailable())
{
IMU.readGyroscope(x, y, z);
if(y < -delta)
Serial.println("Flicked down");
else if(y > delta)
Serial.println("Flicked up");
}
此示例脚本检测何时快速向上或向下移动Arduino并做出相应的反应。在该示例中,delta值越小,Arduino对运动的反应就越早。
该程序的输出如下所示:

检测磁场
LSM9DS1还可以检测磁场。您先前下载的库包含用于此目的的函数。您可以通过调用readMagneticField函数获得以微特斯拉(micro Tesla)单位测量的磁场。调用此函数可以生成显示测量值的图表。

显示来自readMagneticField函数的测量值的图表
内置IMU易于设置
内置的LSM9DS1 IMU具有许多不同的有用传感器,并且很容易进行连接。您唯一要做的就是安装官方库以利用传感器的功能。 IMU所配备的各种传感器不仅给我留下了深刻的印象,而且其准确性也给我留下了深刻的印象。陀螺仪和加速度计可以精确地检测甚至最小的运动。
编辑:hfy
-
传感器
+关注
关注
2550文章
51071浏览量
753341 -
陀螺仪
+关注
关注
44文章
784浏览量
98688 -
加速度计
+关注
关注
6文章
702浏览量
45896 -
Arduino
+关注
关注
188文章
6469浏览量
187012 -
磁场传感器
+关注
关注
0文章
41浏览量
12037
发布评论请先 登录
相关推荐
基于Arduino Nano和HC-SR04超声波传感器制作社交距离项目
Arduino Nano 33 BLE Sense的色度计和近接感测器传感器来分类对象
基于Arduino Nano、超声波传感器和LED模块的项目
使用TinyML和Arduino Nano 33 BLE计算阅读时间
Arduino Nano 33 BLE与Web应用程序通信
Arduino Nano 33 BLE Sense上的白血病检测
Arduino Nano 33 BLE Sense的语音识别项目
Arduino Nano 33 LiPo适配器nano9jira开源分享
基于Arduino Nano 33 BLE Sense的深蹲计数器

浅谈Arduino Nano 33系列的IMU传感器
评论