Sensor jarak laser TOF10120 adalah perangkat canggih yang mampu mengukur jarak dengan tingkat akurasi tinggi menggunakan teknologi Time-of-Flight (ToF). Pada artikel ini, kami akan memberikan panduan sederhana untuk memprogram sensor TOF10120 menggunakan board ESP32.
Apa Itu Sensor TOF10120?
TOF10120 adalah sensor jarak laser yang menggunakan prinsip pantulan cahaya untuk menghitung jarak ke objek. Sensor ini mampu mengukur jarak hingga 180 cm dengan akurasi yang baik. Komunikasi dengan microcontroller dilakukan melalui protokol I2C, sehingga sangat cocok untuk diintegrasikan dengan ESP32.
Peralatan yang Dibutuhkan
- ESP32
- Sensor TOF10120
- Kabel jumper
- Breadboard (opsional)
Skema Koneksi
Hubungkan sensor TOF10120 ke ESP32 dengan konfigurasi berikut:
- VCC → 3.3V (ESP32)
- GND → GND (ESP32)
- SCL → Pin SCL (Default: D22 pada ESP32)
- SDA → Pin SDA (Default: D21 pada ESP32)
Program untuk Membaca Jarak
Berikut adalah program sederhana untuk membaca jarak dari sensor TOF10120 dan menampilkannya di Serial Monitor.
#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!!
Bagi teman-teman berminat jasa seputar arduino/pengembangan web bisa hubungi kami di kontak whatsapp dibawah ini atau bisa cek tiktok kami disini : @labrobotika

