RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用TFMini LiDAR傳感器和Arduino實現(xiàn)激光測距

芯情觀察猿 ? 來源:芯情觀察猿 ? 作者:芯情觀察猿 ? 2022-07-19 10:34 ? 次閱讀

LiDAR測距應(yīng)用越來越普及,例如行人檢測、車輛檢測、障礙物探測等自動駕駛應(yīng)用,以及道閘防砸、高度計等。本項目以北醒TFMini-S Micro LiDAR傳感器為例,演示LiDAR傳感器與Arduino的連接,以及測距結(jié)果及顯示。本項目BOM如下:

Arduino Nano開發(fā)板 1

TFMini-S LiDAR傳感器 1

JHD162A 16X2 LCD顯示器 1

10K電位器 1

面包板 1

跳線 22


基于激光的精確測距能力,LiDAR是一種精確的激光探測及測距器件。LiDAR工作原理與無線電雷達沒有區(qū)別,即由雷達發(fā)射系統(tǒng)發(fā)送一個信號,經(jīng)目標反射后被接收系統(tǒng)收集,通過測量反射光的運行時間而確定目標的距離。至于目標的徑向速度,可以由反射光的多普勒頻移來確定,也可以測量兩個或多個距離,并計算其變化率而求得速度。


poYBAGLWGEiAJn8WAAC2OUmaU7A93.jpeg?source=d16d100b

?

項目采用的TFmini-S是一款基于TFmini升級的單點測距雷達,盲區(qū)降低為10cm,室外測距性能進一步提升,不同反射率的測距精度得到優(yōu)化,可以實現(xiàn)穩(wěn)定、精準、高靈敏和高速的距離測量。


連接TFMini-S LiDAR傳感器與Arduino


TFMini-S LiDAR可通過UARTI2C接口與Arduino連接。本項目采用UART。


pYYBAGLWGEiAfemCAACe3yRkudU96.jpeg?source=d16d100b

?

將TFMini傳感器的VCC & GND引腳連接到Arduino開發(fā)板的5V & GND引腳,Tx、RX引腳連接到Arduino開發(fā)板的D2 & D3引腳。


poYBAGLWGEmACbDoAADHEPvEYxk14.jpeg?source=d16d100b

當然,也可以把Tx and Rx連接在其他引腳上,只要支持軟件串口即可。


源代碼及例程庫


北醒官網(wǎng)、Github都提供有TFMini-S LiDAR傳感器庫文件和例程,具體如下:

include

#include "TFMini.h"

TFMini tfmini;

SoftwareSerial SerialTFMini(2, 3); //The only value that matters here is the first one, 2, Rx

void getTFminiData(int* distance, int* strength)

{

static char i = 0;

char j = 0;

int checksum = 0;

static int rx[9];

if (SerialTFMini.available())

{

rx[i] = SerialTFMini.read();

if (rx[0] != 0x59)

{

i = 0;

}

else if (i == 1 && rx[1] != 0x59)

{

i = 0;

}

else if (i == 8)

{

for (j = 0; j < 8; j++)

{

checksum += rx[j];

}

if (rx[8] == (checksum % 256))

{

*distance = rx[2] + rx[3] * 256;

*strength = rx[4] + rx[5] * 256;

}

i = 0;

}

else

{

i++;

}

}

}

void setup()

{

Serial.begin(115200); //Initialize hardware serial port (serial debug port)

while (!Serial); // wait for serial port to connect. Needed for native USB port only

Serial.println ("Initializing...");

SerialTFMini.begin(TFMINI_BAUDRATE); //Initialize the data rate for the SoftwareSerial port

tfmini.begin(&SerialTFMini); //Initialize the TF Mini sensor

}

void loop()

{

int distance = 0;

int strength = 0;

getTFminiData(&distance, &strength);

while (!distance)

{

getTFminiData(&distance, &strength);

if (distance)

{

Serial.print(distance);

Serial.print("cm\t");

Serial.print("strength: ");

Serial.println(strength);

}

}

delay(100);

}


pYYBAGLWGEmADL1JAACwmwtciao63.jpeg?source=d16d100b

這下,Serial monitor開始顯示距離和信號強度,把手在傳感器前面來回移動可觀察到距離在變化,盲區(qū)從30cm縮減到10cm。


poYBAGLWGEqAC4mYAACFbmClVk410.jpeg?source=d16d100b

?

如果希望通過LCD顯示測量結(jié)果,就需要在前述電路的面包板上加一個16x2 LCD顯示器,并通過10K電位器來調(diào)節(jié)LCD的對比度。這樣,本項目就實現(xiàn)了便攜式涉及,可以裝起來帶去戶外體驗了。


pYYBAGLWGEqARcdYAADtWrggnRQ50.jpeg?source=d16d100b

#include

LiquidCrystal lcd(12, 11, 10, 9, 8, 7);

#include

#include "TFMini.h"

TFMini tfmini;

SoftwareSerial SerialTFMini(2, 3); //The only value that matters here is the first one, 2, Rx

void getTFminiData(int* distance, int* strength)

{

static char i = 0;

char j = 0;

int checksum = 0;

static int rx[9];

if (SerialTFMini.available())

{

rx[i] = SerialTFMini.read();

if (rx[0] != 0x59)

{

i = 0;

}

else if (i == 1 && rx[1] != 0x59)

{

i = 0;

}

else if (i == 8)

{

for (j = 0; j < 8; j++)

{

checksum += rx[j];

}

if (rx[8] == (checksum % 256))

{

*distance = rx[2] + rx[3] * 256;

*strength = rx[4] + rx[5] * 256;

}

i = 0;

}

else

{

i++;

}

}

}

void setup()

{

lcd.begin(16, 2);

Serial.begin(115200); //Initialize hardware serial port (serial debug port)

while (!Serial); // wait for serial port to connect. Needed for native USB port only

Serial.println ("Initializing...");

SerialTFMini.begin(TFMINI_BAUDRATE); //Initialize the data rate for the SoftwareSerial port

tfmini.begin(&SerialTFMini); //Initialize the TF Mini sensor

}

void loop()

{

int distance = 0;

int strength = 0;

getTFminiData(&distance, &strength);

while (!distance)

{

getTFminiData(&distance, &strength);

if (distance)

{

Serial.print(distance);

Serial.print("cm\t");

Serial.print("strength: ");

Serial.println(strength);

lcd.setCursor(0, 0);

lcd.print("Dis: ");

lcd.print(distance);

lcd.print(" cm");

lcd.setCursor(0, 1);

lcd.print("Str: ");

lcd.print(strength);

}

}

delay(500);

lcd.clear();

}


結(jié)果顯示,TFMini-S LiDAR傳感器最大測距為12m,由于戶外障礙物比室內(nèi)少很多,測距準確度高達90%。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2550

    文章

    51035

    瀏覽量

    753063
  • 激光測距
    +關(guān)注

    關(guān)注

    9

    文章

    157

    瀏覽量

    27544
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6468

    瀏覽量

    186951
  • LIDAR
    +關(guān)注

    關(guān)注

    10

    文章

    326

    瀏覽量

    29411
收藏 人收藏

    評論

    相關(guān)推薦

    proteus中可以什么組合來實現(xiàn)具有激光測距傳感器的功能

    proteus中可以什么組合來實現(xiàn)具有激光測距傳感器的功能
    發(fā)表于 05-20 14:58

    baumer激光測距傳感器獨特應(yīng)用

    簡單的統(tǒng)計學(xué)原理,即平均法則實現(xiàn)了1mm的分辨率,并且能保證響應(yīng)速度。BAUMER堡盟傳感器遠距離激光測距儀在工作時向目標射出一束很細的激光
    發(fā)表于 04-27 12:32

    激光測距傳感器的應(yīng)用

    `汽車防撞探測:一般來說,大多數(shù)現(xiàn)有汽車碰撞預(yù)防系統(tǒng)的激光測距傳感器使用激光光束以不接觸方式用于識別汽車在前或者在后形勢的目標汽車之間的距
    發(fā)表于 11-12 11:07

    【北醒TFmini-S 測距/避障激光雷達傳感器免費試用連載】基于北醒TFmini-S 測距/避障激光雷達傳感器關(guān)鍵地區(qū)人員靠近防撞提醒裝置

    項目名稱:基于北醒TFmini-S 測距/避障激光雷達傳感器關(guān)鍵地區(qū)人員靠近防撞提醒裝置試用計劃:申請理由本人在嵌入式和電路領(lǐng)域有五年多的學(xué)習和開發(fā)經(jīng)驗,曾設(shè)計過北斗和GPS定位救生裝
    發(fā)表于 05-28 17:29

    【北醒TFmini-S 測距/避障激光雷達傳感器免費試用連載】傳送帶貨物監(jiān)測

    TFmini-S 測距/避障激光雷達傳感器完善生產(chǎn)線貨物監(jiān)測功能。項目計劃①根據(jù)文檔,對傳感器使用快速入門②在開發(fā)板上開發(fā)
    發(fā)表于 05-28 17:31

    【北醒TFmini-S 測距/避障激光雷達傳感器免費試用連載】基于FPGA平臺的YOLO-Complex點云數(shù)據(jù)加速

    開發(fā)驗證。項目計劃①基于YOLO-Complex算法,開發(fā)RTL工程,實現(xiàn)點云算法,目前完成度80%;②學(xué)習北醒TFmini-S 測距/避障激光雷達
    發(fā)表于 05-28 17:32

    【北醒TFmini-S 測距/避障激光雷達傳感器試用連載】——上位機測試

    更是吃驚,非常小巧的傳感器,非常輕便。作為一款激光雷達,小巧輕便會非常有優(yōu)勢。如果運用在重量控制嚴格、位置空間有限的無人機上,優(yōu)勢會非常明顯。通過對比我們可以看到,它的大小基本只有學(xué)生的橡皮擦那么大
    發(fā)表于 06-13 22:08

    LDS激光測距傳感器

    比較全的傳感器產(chǎn)品介紹 激光測距傳感器獲取距離信息。當激光投射到障礙物上時,會在傳感器里形成光斑
    發(fā)表于 09-14 07:44

    LiDAR激光雷達技術(shù)原理及Arduino示例代碼糾錯

    激光雷達(Light Detection and Ranging,LiDAR)即激光探測和測距,又稱光學(xué)雷達,是自動駕駛領(lǐng)域的一種基礎(chǔ)感測技術(shù)。LI
    的頭像 發(fā)表于 07-21 09:29 ?4827次閱讀
    <b class='flag-5'>LiDAR</b><b class='flag-5'>激光</b>雷達技術(shù)原理及<b class='flag-5'>Arduino</b>示例代碼糾錯

    什么是LiDAR激光探測與測距

    LiDAR激光探測與測距LiDAR是Light Detection And Ranging(激光探測與
    的頭像 發(fā)表于 04-30 14:41 ?3821次閱讀
    什么是<b class='flag-5'>LiDAR</b>(<b class='flag-5'>激光</b>探測與<b class='flag-5'>測距</b>)

    如何選擇激光測距傳感器?

    激光測距傳感器是一種廣泛應(yīng)用于工業(yè)、測量和科學(xué)領(lǐng)域的高精度測量設(shè)備,它可以通過激光束測量目標距離。但是,如何選擇適合自己需要的激光
    的頭像 發(fā)表于 10-10 17:11 ?1095次閱讀
    如何選擇<b class='flag-5'>激光</b><b class='flag-5'>測距</b><b class='flag-5'>傳感器</b>?

    激光測距傳感器的原理和應(yīng)用實例

    激光測距傳感器原理和應(yīng)用實例 激光測距傳感器是一種通過激光
    的頭像 發(fā)表于 03-05 16:29 ?1616次閱讀

    lidar傳感器激光測距傳感器的區(qū)別

    LiDAR傳感器激光測距傳感器是兩種不同類型的傳感器,它們在原理、應(yīng)用和性能方面存在一些區(qū)別。
    的頭像 發(fā)表于 08-29 15:56 ?524次閱讀

    激光測距傳感器輸出什么信號

    激光測距傳感器輸出的信號類型多樣,這些信號類型根據(jù)應(yīng)用場景、傳輸距離、抗電磁干擾能力等因素進行選擇。 一、激光測距
    的頭像 發(fā)表于 08-29 16:08 ?574次閱讀

    激光測距傳感器怎么接線

    激光測距傳感器是一種利用激光技術(shù)進行距離測量的傳感器,廣泛應(yīng)用于工業(yè)自動化、機器人導(dǎo)航、無人駕駛等領(lǐng)域。 一、
    的頭像 發(fā)表于 08-29 16:13 ?766次閱讀
    RM新时代网站-首页