0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

电子设计 来源:一板网 作者:风筝 2021-01-13 16:52 次阅读

您的项目需要加速度计、陀螺仪或磁场传感器吗?内置的IMU传感器LSM9DS1包含这些功能!

您可能已经阅读了有关新的Arduino Nano 33系列及其实时和多线程功能的信息。但是,该开发板还有更多有用的功能!其中之一就是内置的LSM9DS1 IMU,它包含一个加速度计、一个陀螺仪和一个磁场传感器。

在本篇文章中,我们将向您展示如何在不使用任何其他硬件的情况下使用IMU。

安装LSM9DS1 IMU库

在开始之前,您需要为内置传感器安装官方的Arduino库。为此,导航到“Sketch”,在Arduino IDE中打开库管理器,然后单击“include library”,然后选择“manage libraries”。这将会弹出一个新窗口。在该窗口中,搜索IMU并安装下图高亮显示的软件包:

pIYBAF_-s-eAaEl8AAFlEghM3N4601.png

接下来,如果要使用IMU,请在Arduino草图中包括这个已安装的软件包:

#include

使用加速度计

IMU的加速度计可用于测量设备的方向。下图显示了Arduino的移动与加速度计的哪个测量轴相对应。

pIYBAF_-s_iAPvZxAAVpNSlFrZs773.png

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更早地对其方向变化做出反应。

该草图的输出如下所示:

o4YBAF_-tAWAUbNOAAB_zvjwBns452.png

使用陀螺仪

如您所见,在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对运动的反应就越早。

该程序的输出如下所示:

pIYBAF_-tBWAMV9rAACSpkhrwSc814.png

检测磁场

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

pIYBAF_-tCSACaSyAAB3rZacryw478.png

显示来自readMagneticField函数的测量值的图表

内置IMU易于设置

内置的LSM9DS1 IMU具有许多不同的有用传感器,并且很容易进行连接。您唯一要做的就是安装官方库以利用传感器的功能。 IMU所配备的各种传感器不仅给我留下了深刻的印象,而且其准确性也给我留下了深刻的印象。陀螺仪和加速度计可以精确地检测甚至最小的运动。
编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2550

    文章

    51035

    浏览量

    753077
  • 陀螺仪
    +关注

    关注

    44

    文章

    783

    浏览量

    98665
  • 加速度计
    +关注

    关注

    6

    文章

    700

    浏览量

    45891
  • Arduino
    +关注

    关注

    188

    文章

    6468

    浏览量

    186953
  • 磁场传感器
    +关注

    关注

    0

    文章

    41

    浏览量

    12035
收藏 人收藏

    评论

    相关推荐

    基于Arduino Nano和HC-SR04超声波传感器制作社交距离项目

    描述基于 Arduino Nano、超声波传感器和 LED 模块的针对 Covid-19 冠状病毒的社会隔离项目在本教程中,您将学习如何基于 Arduino
    发表于 08-09 06:30

    Arduino Nano 33 BLE Sense的色度计和近接感测传感器来分类对象

    在本文中,我们将带您了解一个更为简单的端到端教程:使用 TensorFlow Lite Micro 库,以及 Arduino Nano 33 BLE Sense 的色度计和近接感测
    的头像 发表于 11-18 17:21 7107次阅读

    基于Arduino Nano、超声波传感器和LED模块的项目

    电子发烧友网站提供《基于Arduino Nano、超声波传感器和LED模块的项目.zip》资料免费下载
    发表于 07-26 10:28 1次下载
    基于<b class='flag-5'>Arduino</b> <b class='flag-5'>Nano</b>、超声波<b class='flag-5'>传感器</b>和LED模块的项目

    使用Arduino nano计算风速的传感器

    电子发烧友网站提供《使用Arduino nano计算风速的传感器.zip》资料免费下载
    发表于 08-11 11:37 4次下载
    使用<b class='flag-5'>Arduino</b> <b class='flag-5'>nano</b>计算风速的<b class='flag-5'>传感器</b>

    Arduino Nano 33 IoT远程调试及编码

    电子发烧友网站提供《Arduino Nano 33 IoT远程调试及编码.zip》资料免费下载
    发表于 10-26 10:57 1次下载
    <b class='flag-5'>Arduino</b> <b class='flag-5'>Nano</b> <b class='flag-5'>33</b> IoT远程调试及编码

    使用TinyML和Arduino Nano 33 BLE计算阅读时间

    电子发烧友网站提供《使用TinyML和Arduino Nano 33 BLE计算阅读时间.zip》资料免费下载
    发表于 10-28 16:50 1次下载
    使用TinyML和<b class='flag-5'>Arduino</b> <b class='flag-5'>Nano</b> <b class='flag-5'>33</b> BLE计算阅读时间

    Arduino Nano 33 BLE与Web应用程序通信

    电子发烧友网站提供《Arduino Nano 33 BLE与Web应用程序通信.zip》资料免费下载
    发表于 11-01 10:59 0次下载
    <b class='flag-5'>Arduino</b> <b class='flag-5'>Nano</b> <b class='flag-5'>33</b> BLE与Web应用程序通信

    使用Arduino Nano传感器制成的数字测距仪

    电子发烧友网站提供《使用Arduino Nano传感器制成的数字测距仪.zip》资料免费下载
    发表于 11-04 09:19 0次下载
    使用<b class='flag-5'>Arduino</b> <b class='flag-5'>Nano</b>和<b class='flag-5'>传感器</b>制成的数字测距仪

    Arduino Nano 33 BLE Sense上的白血病检测

    电子发烧友网站提供《Arduino Nano 33 BLE Sense上的白血病检测.zip》资料免费下载
    发表于 11-04 14:28 0次下载
    <b class='flag-5'>Arduino</b> <b class='flag-5'>Nano</b> <b class='flag-5'>33</b> BLE Sense上的白血病检测

    Arduino Nano 33 BLE Sense的语音识别项目

    电子发烧友网站提供《Arduino Nano 33 BLE Sense的语音识别项目.zip》资料免费下载
    发表于 12-07 09:32 3次下载
    <b class='flag-5'>Arduino</b> <b class='flag-5'>Nano</b> <b class='flag-5'>33</b> BLE Sense的语音识别项目

    Arduino Nano 33 LiPo适配器nano9jira开源分享

    电子发烧友网站提供《Arduino Nano 33 LiPo适配器nano9jira开源分享.zip》资料免费下载
    发表于 12-20 09:51 0次下载
    <b class='flag-5'>Arduino</b> <b class='flag-5'>Nano</b> <b class='flag-5'>33</b> LiPo适配器<b class='flag-5'>nano</b>9jira开源分享

    带有Arduino Nano 33 IoT的气鼓

    电子发烧友网站提供《带有Arduino Nano 33 IoT的气鼓.zip》资料免费下载
    发表于 06-14 11:10 0次下载
    带有<b class='flag-5'>Arduino</b> <b class='flag-5'>Nano</b> <b class='flag-5'>33</b> IoT的气鼓

    基于Arduino Nano 33 BLE Sense的深蹲计数

    电子发烧友网站提供《基于Arduino Nano 33 BLE Sense的深蹲计数.zip》资料免费下载
    发表于 06-15 10:52 0次下载
    基于<b class='flag-5'>Arduino</b> <b class='flag-5'>Nano</b> <b class='flag-5'>33</b> BLE Sense的深蹲计数<b class='flag-5'>器</b>

    Arduino Nano 33物联网调试

    电子发烧友网站提供《Arduino Nano 33物联网调试.zip》资料免费下载
    发表于 06-25 10:33 0次下载
    <b class='flag-5'>Arduino</b> <b class='flag-5'>Nano</b> <b class='flag-5'>33</b>物联网调试

    Arduino Nano 33 Sense BLE开源

    电子发烧友网站提供《Arduino Nano 33 Sense BLE开源.zip》资料免费下载
    发表于 06-26 15:20 5次下载
    <b class='flag-5'>Arduino</b> <b class='flag-5'>Nano</b> <b class='flag-5'>33</b> Sense BLE开源