Arduino İle TOF400C Mesafe Sensörü Kullanımı

Bu yazımızda arduino ile TOF400C mesafe sensörünün kullanımını öğreneceğiz. Bu sensörümüz IR ışınlarını kullanarak mesafe tespiti yapan bir sensördür. İlk olarak sensörümüzün özelliklerini öğrenelim. Ardından kullanımına geçelim.

TOF400C Mesafe Sensörü Nedir ve Özellikleri Nelerdir?

TOF400C Lazer Mesafe Sensörü
TOF400C Lazer Mesafe Sensörü
TOF400C Lazer Mesafe Sensörü Arka Yüz
TOF400C Lazer Mesafe Sensörü Arka Yüz

TOF400C, VL53L1X sistemine dayalı ToF mesafe sensörlü bir sensördür. Algılanan nesnenin rengi ve yüzeyinden bağımsız olarak mutlak mesafeyi ölçmenizi sağlayan SPAD (Single Photon Avalanche Diodes) matrisi ve FlightSense ™ teknolojisi ile etkileşime girer. 940 nm dalga boyuna sahip ışık yayan IR verici uygulaması ve bir dizi filtre sayesinde, ortam ışığından kaynaklanan parazitlere karşı iyi dirençle 400 cm’ye kadar bir menzil sunar. Sensör, 0 ila 4 cm arasında değişen bir ölü bölgeye ve 27°’lik bir algılama açısına sahiptir. Modül ayrıca 1D hareketleri algılama yeteneği de sunar. VL53L1, I2C arabirimi aracılığıyla iletişim kurar ve kullanıcı, C dilinde sunulan kolay ve kullanımı kolay bir API’ye (Uygulama Programlama Arabirimi) sahiptir. Hem endüstriyel robotlarda hem de mobil yapılarda nesnelerin ve engellerin varlığını tespit etmeye yönelik uygulamalarda kullanılabilir.

TOF400C Mesafe Sensörünün Özellikleri Nelerdir?

  • Aralık: 4 ile 400 cm
  • Ölü bölge: 0 ile 4 cm
  • Bağlantı arayüzü: I2C
  • Programlanabilir I2C adresi: 0x52 veya 0x29
  • Görüş Açısı (FOV): 27°
  • Değişen frekans: 50 Hz
  • 1D hareket algılama özelliği
  • Koruyucu kapak
  • İki M2 montaj deliği
  • Güç kaynağı: 3 ila 5 V
  • Akım tüketimi: 40 mA
  • Çalışma sıcaklığı: -20 ila 70°C
  • Boyut: 20x12x15mm
TOF400C Boyut Bilgileri
TOF400C Boyut Bilgileri

VL53L1X Sensörü Nedir ve Özellikleri Nedir?

VL53L1X, kızılötesi lazer ışığını kullanarak bir nesneye olan mesafeyi ölçen çok küçük bir Uçuş Süresi Mesafe Sensörü (ToF) sensörüdür. Işığın bir nesneden yansıması için geçen süreyi ölçerek mesafeleri yüksek doğrulukla hesaplayabilir. VL53L1X, üstünde iki delik bulunan küçük bir çiptir (4,4 x 2,5 x 1,56 mm). Biri lazer ışık yayıcısı için, diğeri ışık dedektörü için. VL53L1X, yayıcıdan bir lazer ışığı artı göndererek, dedektördeki bir nesneden yansıyan ışığı alarak ve geçen zamana (uçuş süresi) dayanarak nesneye olan mesafeyi hesaplayarak çalışır. Aşağıdaki resim yayıcı ve dedektör konilerini göstermektedir.

VL53L1X Çipi
VL53L1X Çipi

VL53L1X’in temel özellikleri şunlardır:

  • 940 nm VCSEL yayıcı (IR ışık, gözle görülemez)
  • Ölçüm süresi 20ms’den 1000ms’ye kadar
  • Programlanabilir ilgi alanı (ROI) boyutu
  • Alıcı dizide programlanabilir ROI konumu
  • Üç mesafe modu: kısa, orta ve uzun
  • 4cm ile 400cm arası ölçüm mesafesi
  • Çözünürlük: 1mm
  • Voltaj: 2,6 ila 3,5 V
  • I2C iletişim protokolü (400kHz’e kadar)

VL53L1X’in programlanabilir ilgi alanları (ROI), tam görüş alanının küçültülmesini veya birden fazla bölgeye bölünmesini sağlar. Bunu, örneğin kaydırma gibi hareket tanımayı uygulamak için kullanabilirsiniz. Daha fazla ayrıntı için VL53L1X sensörünün veri sayfasına(datasheet) bakın:

Gerekli Malzemeler

TOF400C Bağlantı Şeması

Bağlantımızı aşağıdaki şemaya göre yapalım.

TOF400C Bağlantı Şeması
TOF400C Bağlantı Şeması
ArduinoTOF40C
5VVIN
GNDGND
A4SDA
A5SCL
Bağlantı Pinleri

TOF400C Arduino Kodu

Bu sensörü kullanabilmek için öncelikle gerekli kütüphanemizi kurmamız lazım. Kullanacağımız kütüphaneyi aşağıdan indirebilirsiniz.

Kütüphanemizi indirip yüklediyseniz artık kodumuza bakabiliriz.


#include <Wire.h> //i2c protokolü için gerekli kütüphanemiz
#include "SparkFun_VL53L1X.h" // TOF400C için gerekli kütüphanemizi ekliyoruz.

//Opsiyonel interrupt and shutdown(kapatma) pinleri.
#define SHUTDOWN_PIN 2
#define INTERRUPT_PIN 3

SFEVL53L1X distanceSensor; // sensörümüz için ilk olarak objemizi oluşturuyoruz.

//interupt ve shutdown pinlerini kullanmayacaksak aşağıdaki satırı yorum satırı olarak bırakın.
//SFEVL53L1X distanceSensor(Wire, SHUTDOWN_PIN, INTERRUPT_PIN);

void setup(void)
{
  Wire.begin(); // i2c haberleşmeyi başlatıyoruz.

  Serial.begin(115200); // seri haberleşmeyi başlatıyoruz.
  Serial.println("VL53L1X Sensör Testi"); // bağlatı testi yaptırıyoruz

  if (distanceSensor.begin() != 0) //Eğer düzgün 0 değerini görmezse
  {
    Serial.println("Sensor baslatilamadi. Lutfen baglantinizi kontrol edin.");
    while (1)
      ;
  }
  Serial.println("Sensor baglandi!");
}

void loop(void)
{
  distanceSensor.startRanging(); //Ölçümü başlatmak için yapılandırma baytlarını yazdırma
  while (!distanceSensor.checkForDataReady()) 
  {
    delay(1);
  }
  int distance = distanceSensor.getDistance();  //ölçülen mesafeyi alma
  distanceSensor.clearInterrupt(); // intereptlar temizliyoruz
  distanceSensor.stopRanging();     // mesafe baytlarını okumayı bitiriyoruz

  Serial.print("Mesafe(mm): ");
  Serial.print(distance);

  float distanceInches = distance * 0.0393701; // Milimetreyi İnc'e çevirme işlemi yapıyoruz
  float distanceFeet = distanceInches / 12.0;  // İnc'i feet mesafe türüne çevirme işlemi yapıyoruz

  Serial.print("\tMesafe(ft): ");
  Serial.print(distanceFeet, 2); // feet'i ondalıklı olarak yazdırıyoruz.

  Serial.println();
}

Kodumuzu yükleyip seri port ekranımızı açtığımızda çıktımız aşağıdaki fotoğraf gibi olması gerekmektedir.

TOF400C Seri Port Ekran Çıktısı
TOF400C Seri Port Ekran Çıktısı

Bir yazımızın daha sonuna geldik. Takıldığınız yerleri yorum olarak sorabilirsiniz .