
TUTORIAL MENGGUNAKAN LIDAR TFMINI-S KE BOARD XIAO ESP32C3 DENGAN FRAMEWORK ARDUINO
TUTORIAL
Tim Support DigiWare
3/11/20253 min baca
Ingin mengukur jarak dengan akurasi tinggi menggunakan sensor LiDAR? Dalam tutorial ini, kita akan mempelajari cara menghubungkan TFMini-S ke ESP32C3 menggunakan Arduino Framework. Metode ini juga dapat diterapkan pada semua tipe ESP32, karena kita akan menggunakan komunikasi UART (Serial) sebagai antarmuka utama.
Bahan yang digunakan:
Board XIAO ESP32C3
Adaptor 5V 1A
Beberapa Kabel Jumper
Board XIAO ESP32C3


XIAO ESP32C3 adalah development board berbasis mikrokontroler ESP32C3, yang telah dilengkapi dengan konektivitas WiFi dan Bluetooth. Board ini dirancang untuk mendukung berbagai aplikasi IoT serta memiliki beragam peripheral seperti UART, I2C, SPI, GPIO, dan lainnya, sehingga cocok untuk berbagai proyek embedded system.
TFMini-S LiDAR


TFMini-S adalah sensor LiDAR yang mampu membaca jarak hingga 12 meter dengan akurasi tinggi. Sensor ini cocok untuk berbagai aplikasi seperti deteksi objek, navigasi robot, dan sistem keamanan.


Tabel 2 : Pinout


Tabel 1 : Electrical Parameter




Tabel 3 : Parameter Serial UART
TFMini-S adalah sensor LiDAR yang mampu membaca jarak hingga 12 meter dengan akurasi tinggi. Sensor ini cocok untuk berbagai aplikasi seperti deteksi objek, navigasi robot, dan sistem keamanan.


Tabel 4 : Format Frame Protokol
Jika kita lihat dari tabel 4 diatas, format frame data output dari TFMini-S ada 9-byte data, yang masing-masing byte sudah dijelaskan pada tabel diatas. Untuk data jarak ada pada ke byte 2 dan byte 3.
Interfacing TFMini-S – Board XIAO ESP32C3
Untuk interfacing antara TFMini-S dengan XIAO ESP32C3 dapat dilihat melalui gambar dibawah ini.


Untuk codenya dapat dilihat dibawah ini:
#include <HardwareSerial.h>
HardwareSerial tflidarSerial(0);
// Buffer 9-byte untuk menampung output data dari TFLidar
uint8_t rx_buffer[9];
void setup() {
Serial.begin(115200);
/*
Parameter UART
- Baudrate: 115200
- Data bit: 8 |
- Parity: none | > SERIAL_8N1
- Stop bit: 1 |
- RX: GPIO 20
- TX: GPIO 21
*/
tflidarSerial.begin(115200, SERIAL_8N1, 20, 21);
}
void loop() {
if (tflidarSerial.available()) {
/*
Sinkronisasi dengan header awal (2-byte), yaitu:
byte 0: 0x59
byte 1: 0x59
*/
if (tflidarSerial.read() == 0x59) {
if (tflidarSerial.read() == 0x59) {
// Jika ditemukan header yang benar, baca sisa 7 byte
tflidarSerial.readBytes(rx_buffer + 2, 7);
// Salin header ke buffer
rx_buffer[0] = 0x59;
rx_buffer[1] = 0x59;
/*
Format output data dari TFLidar memiliki Checksum untuk memvalidasi
apakah data valid atau tidak.
Sehingga perlu dilakukan pengecekan checksum apakah sudah sesuai atau belum
untuk memverifikasi data yang dikirim.
*/
// Hitung checksum (jumlah semua byte dari 0-7, lalu ambil 8-bit terakhir)
uint8_t checksum = 0;
for (int i = 0; i < 8; i++) {
checksum += rx_buffer[i];
} /*
// Tampilkan data frame
Serial.print("Frame: ");
for (int i = 0; i < 9; i++) {
Serial.printf("0x%02X ", rx_buffer[i]);
}
Serial.println();
*/
// Verifikasi checksum
if (checksum == rx_buffer[8]) {
/*
Operasi bitwise untuk menggabungkan 2-byte data menjadi satu nilai 16-bit.
Untuk jarak, byte yang diambil adalah posisi ke-2 dan 3.
*/
uint16_t distance = (rx_buffer[3] << 8) | rx_buffer[2];
//Serial.print("Checksum: "); Serial.printf("0x%02X ", checksum); Serial.println(" ");
Serial.print("Distance: "); Serial.print(distance); Serial.println(" cm");
}
}
}
}
Konsep Format Data Output
Seperti pada tabel 4, ada 9-byte data output dari TF Lidar.


Gambar diatas merupakan salah satu cuplikan frame dari sensor yang saya ambil menggunakan alat logic analyzer.
Dalam format Hex :


Byte-0 dan Byte-1 adalah frame header dari data, dengan frame header ini kita bisa mensinkronisasi data yang dikirm oleh sensor dengan data yang dibaca oleh mikrokontroler.Kemudian Byte-8 merupakan Checksum, yang dapat digunakan untuk memverifikasi data, apakah datanya valid atau tidak.
Checksum diambil dari semua penjumlahan desimal dari Byte-0 hingga Byte-7 yang kemudian hasilnya diambil 8-bit awal. Kemudian hasilnya akan dibandingkan dengan Byte-8, jika nilainya
sama, maka data dianggap valid, jika tidak maka data dianggap tidak valid.Jika data valid, maka akan dilakukan pengambilan data jarak yang disimpan pada Byte-2 dan Byte-3.
Contoh :


Digunakan operator bitwise untuk menggabungkan Byte-3 dan Byte-2 agar menjadi satu nilai 16-bit.
DigiWare
Robotic & Electronic Components Online Store in Indonesia
Komplek Ruko RMI Blok i No. 22
031-5039460
© 2024. All rights reserved.
customerservice@digiwarestore.com
Surabaya, Jawa Timur, 60284
Our Social Media
Marketplace
Tokopedia ( Surabaya )
Tokopedia ( Bekasi )

