cara sederhana menghubungkan sensor jarak laser TOF10120 l dengan arduino

Sensor TOF10120 adalah sensor jarak laser Time-of-Flight (ToF) yang mampu mengukur jarak secara akurat menggunakan sinar laser inframerah. Dengan kemampuan untuk mendeteksi jarak hingga 180 cm, sensor ini sangat ideal untuk aplikasi seperti robotika, otomasi, dan pengukuran jarak presisi tinggi.

Dalam artikel ini, Anda akan belajar cara kerja sensor TOF10120, cara menghubungkannya dengan Arduino, dan memprogramnya untuk membaca jarak.

Cara Kerja Sensor TOF10120

Sensor TOF10120 menggunakan prinsip Time-of-Flight, di mana ia memancarkan sinar laser inframerah dan menghitung waktu yang dibutuhkan oleh sinar tersebut untuk memantul kembali ke sensor. Waktu pantulan ini dikonversi menjadi jarak.

Penerapan Sensor TOF10120

  1. Robotika: Digunakan untuk navigasi dan menghindari rintangan.
  2. Otomasi Rumah: Memantau pergerakan objek atau orang di ruangan.
  3. Pengukuran Jarak Presisi: Membaca jarak secara akurat untuk kebutuhan industri atau hobi.

berikut merupakan gambar skematiknya:

Untuk Kode Yang Kami Gunakan :

#include <Arduino.h>

#include <Wire.h>

unsigned char ok_flag;
unsigned char fail_flag;
 
unsigned short lenth_val = 0;
unsigned char i2c_rx_buf[16];
unsigned char dirsend_flag = 0;


void SensorRead(unsigned char addr, unsigned char* datbuf, unsigned char cnt) {
  unsigned short result = 0;
  // step 1: instruct sensor to read echoes
  Wire.beginTransmission(82);  // transmit to device #82 (0x52)
  // the address specified in the datasheet is 164 (0xa4)
  // but i2c adressing uses the high 7 bits so it's 82
  Wire.write(byte(addr));  // sets distance data address (addr)
  Wire.endTransmission();  // stop transmitting
  // step 2: wait for readings to happen
  delay(1);  // datasheet suggests at least 30uS
  // step 3: request reading from sensor
  Wire.requestFrom(82, cnt);  // request cnt bytes from slave device #82 (0x52)
  // step 5: receive reading from sensor
  if (cnt <= Wire.available()) {  // if two bytes were received
    *datbuf++ = Wire.read();      // receive high byte (overwrites previous reading)
    *datbuf++ = Wire.read();      // receive low byte as lower 8 bits
  }
}
 
int ReadDistance() {
  SensorRead(0x00, i2c_rx_buf, 2);
  lenth_val = i2c_rx_buf[0];
  lenth_val = lenth_val << 8;
  lenth_val |= i2c_rx_buf[1];
  delay(300);
  return lenth_val;
}


void setup()
{
Serial.begin(9600);
 Wire.begin();
  Serial.begin(9600, SERIAL_8N1);

}
void loop(){
  int jarak_laser = ReadDistance();
  Serial.print(jarak_laser);
  Serial.println(" mm");


}


Selamat Mencoba!!

Semoga Berhasil!!

Kalau teman-teman berminat jasa bisa wa kami di kontak whatsapp dibawah ini atau bisa cek tiktok kami disini : @labrobotika

Mau Konsultasi & Diskusi ?