您的項(xiàng)目需要加速度計(jì)、陀螺儀或磁場(chǎng)傳感器嗎??jī)?nèi)置的IMU傳感器LSM9DS1包含這些功能!
您可能已經(jīng)閱讀了有關(guān)新的Arduino Nano 33系列及其實(shí)時(shí)和多線程功能的信息。但是,該開發(fā)板還有更多有用的功能!其中之一就是內(nèi)置的LSM9DS1 IMU,它包含一個(gè)加速度計(jì)、一個(gè)陀螺儀和一個(gè)磁場(chǎng)傳感器。
在本篇文章中,我們將向您展示如何在不使用任何其他硬件的情況下使用IMU。
安裝LSM9DS1 IMU庫
在開始之前,您需要為內(nèi)置傳感器安裝官方的Arduino庫。為此,導(dǎo)航到“Sketch”,在Arduino IDE中打開庫管理器,然后單擊“include library”,然后選擇“manage libraries”。這將會(huì)彈出一個(gè)新窗口。在該窗口中,搜索IMU并安裝下圖高亮顯示的軟件包:
接下來,如果要使用IMU,請(qǐng)?jiān)贏rduino草圖中包括這個(gè)已安裝的軟件包:
#include
使用加速度計(jì)
IMU的加速度計(jì)可用于測(cè)量設(shè)備的方向。下圖顯示了Arduino的移動(dòng)與加速度計(jì)的哪個(gè)測(cè)量軸相對(duì)應(yīng)。
Arduino的運(yùn)動(dòng)如何與加速度計(jì)的X軸、Y軸和Z軸相對(duì)應(yīng)
為了測(cè)試加速度計(jì),我編寫了一個(gè)小的測(cè)試腳本,可以檢測(cè)Arduino是放置在平坦的表面上還是傾斜到任一側(cè)。如您所見,該腳本必須讀取加速度計(jì)的Y軸來確定旋轉(zhuǎn)角度。
將設(shè)備放在平坦表面上時(shí),測(cè)量值為零。當(dāng)Arduino倒置時(shí),也是如此。以下代碼段顯示了loop方法的內(nèi)容。
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");
}
如您所見,我不必連接任何外部硬件。對(duì)IMU的所有調(diào)用都很短,這有助于保持代碼簡(jiǎn)潔。
我使用了增量值來適應(yīng)讀取傳感器值時(shí)可能出現(xiàn)的最終誤差。您可以調(diào)整該值,以使Arduino更早地對(duì)其方向變化做出反應(yīng)。
該草圖的輸出如下所示:
使用陀螺儀
如您所見,在Nano 33 BLE開發(fā)板上,連接IMU的加速度計(jì)是一個(gè)簡(jiǎn)單的過程。幸運(yùn)的是,讀取其他傳感器值同樣容易。例如,陀螺儀可用于實(shí)現(xiàn)手勢(shì)檢測(cè):
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");
}
此示例腳本檢測(cè)何時(shí)快速向上或向下移動(dòng)Arduino并做出相應(yīng)的反應(yīng)。在該示例中,delta值越小,Arduino對(duì)運(yùn)動(dòng)的反應(yīng)就越早。
該程序的輸出如下所示:
檢測(cè)磁場(chǎng)
LSM9DS1還可以檢測(cè)磁場(chǎng)。您先前下載的庫包含用于此目的的函數(shù)。您可以通過調(diào)用readMagneticField函數(shù)獲得以微特斯拉(micro Tesla)單位測(cè)量的磁場(chǎng)。調(diào)用此函數(shù)可以生成顯示測(cè)量值的圖表。
顯示來自readMagneticField函數(shù)的測(cè)量值的圖表
內(nèi)置IMU易于設(shè)置
內(nèi)置的LSM9DS1 IMU具有許多不同的有用傳感器,并且很容易進(jìn)行連接。您唯一要做的就是安裝官方庫以利用傳感器的功能。 IMU所配備的各種傳感器不僅給我留下了深刻的印象,而且其準(zhǔn)確性也給我留下了深刻的印象。陀螺儀和加速度計(jì)可以精確地檢測(cè)甚至最小的運(yùn)動(dòng)。
編輯:hfy
-
傳感器
+關(guān)注
關(guān)注
2553文章
51392瀏覽量
756593 -
陀螺儀
+關(guān)注
關(guān)注
44文章
792瀏覽量
98978 -
加速度計(jì)
+關(guān)注
關(guān)注
6文章
704瀏覽量
46024 -
Arduino
+關(guān)注
關(guān)注
188文章
6477瀏覽量
187819 -
磁場(chǎng)傳感器
+關(guān)注
關(guān)注
0文章
41瀏覽量
12080
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
基于Arduino Nano和HC-SR04超聲波傳感器制作社交距離項(xiàng)目
Arduino Nano 33 BLE Sense的色度計(jì)和近接感測(cè)器傳感器來分類對(duì)象
基于Arduino Nano、超聲波傳感器和LED模塊的項(xiàng)目

使用Arduino nano計(jì)算風(fēng)速的傳感器

Arduino Nano 33 IoT遠(yuǎn)程調(diào)試及編碼

使用TinyML和Arduino Nano 33 BLE計(jì)算閱讀時(shí)間

Arduino Nano 33 BLE與Web應(yīng)用程序通信

使用Arduino Nano和傳感器制成的數(shù)字測(cè)距儀

Arduino Nano 33 BLE Sense上的白血病檢測(cè)

Arduino Nano 33 BLE Sense的語音識(shí)別項(xiàng)目

Arduino Nano 33 LiPo適配器nano9jira開源分享

帶有Arduino Nano 33 IoT的氣鼓

基于Arduino Nano 33 BLE Sense的深蹲計(jì)數(shù)器

Arduino Nano 33物聯(lián)網(wǎng)調(diào)試

Arduino Nano 33 Sense BLE開源

評(píng)論