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