Search Code

CJMCU VL53L0X Lazer Mesafe Ölçer ile Arduino Kullanımı

CJMCU VL53L0X Lazer Mesafe Ölçer ile Arduino Kullanımı

Bu eğitim, CJMCU VL53L0X lazer mesafe ölçerin bir Arduino ile nasıl kullanılacağını göstermektedir. Texas Instruments VL53L0X uçuş süresi sensörü ve TXS0108E çift yönlü seviye kaydırıcıya (videoda 00:06'da) sahip bu modül, iki metreye kadar hassas mesafe ölçümü sunar (videoda 00:52'de). Çeşitli mantık seviyeleriyle (3.3V, 1.8V, 5V) uyumluluğu, farklı mikrodenetleyicilerle entegrasyonu basitleştirir (videoda 00:21'de). Bu proje geniş bir olasılık yelpazesi açar.

Proje Fikirleri:

  • Robotik: Robotlarda engel önleme uygulayın.
  • Otomasyon: Yakınlığa dayalı makineleri kontrol edin.
  • Akıllı Ev: Mesafeye dayalı otomatik aydınlatma oluşturun.
  • Güvenlik: Yakınlık tabanlı bir alarm sistemi geliştirin.

Donanım/Bileşenler

Bu projeyi oluşturmak için aşağıdaki bileşenlere ihtiyacınız olacak:

  • Arduino Kartı (herhangi bir model çalışır)
  • CJMCU VL53L0X Lazer Mesafe Ölçer Modülü
  • Jumper Kablolar

Bağlantı Kılavuzu

VL53L0X modülü Arduino'ya şu şekilde bağlanır:

Modülün VCC pinini Arduino'daki 5V pinine bağlayın. Modülün dahili regülatörü sensör için gereken 3.3V'u sağlar. (videoda 01:50'de)

Modülün GND pinini Arduino'daki GND pinine bağlayın.

Modülün SDA pinini Arduino'daki A4 pinine bağlayın.

Modülün SCL pinini Arduino'daki A5 pinine bağlayın.

Kapatma kontrolü için kullanmanız gerekmedikçe XSHUT pinini bağlı bırakın. (videoda 03:50'de)

Kod Açıklaması

Sağlanan kod VL53L0X kütüphanesini kullanır. Yapılandırılabilir ana bölümlerin açıklaması şöyledir:


#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;

void setup()
{
  Serial.begin(9600);
  // ... diğer kurulum kodu ...
  sensor.setTimeout(500); // Zaman aşımını 500ms olarak ayarla (videoda 06:40'ta)
  sensor.startContinuous(); // Sürekli ölçüm modunu başlat (videoda 06:50'de)
}

void loop()
{
  Serial.print(sensor.readRangeContinuousMillimeters()); // Mesafeyi mm olarak oku (videoda 07:01'de)
  // ... diğer döngü kodu ...
}

sensor.setTimeout(500) satırı, mesafe ölçümleri için zaman aşımını 500 milisaniyeye ayarlar. Uygulamanız için gerekirse bu değeri ayarlayın (videoda 06:40'ta). sensor.startContinuous() işlevi, mümkün olduğunca hızlı mesafe okumaları sağlayarak sürekli ölçümü başlatır (videoda 06:50'de). sensor.readRangeContinuousMillimeters() işlevi, ölçülen mesafeyi milimetre cinsinden döndürür (videoda 07:01'de).

Canlı Proje/Gösterim

Video, sensörün çalışmasını gösterir ve sensörün hedefe olan mesafesi değiştikçe mesafe okumalarının nasıl değiştiğini sergiler. Okumalar, özellikle 10mm'den büyük mesafelerde birkaç milimetre içinde doğrudur (videoda 08:20'de). Çok yakın mesafelerde (10mm'den az), doğruluk azalır (videoda 09:50'de). Gösterim ayrıca yansıtıcı yüzeylerin, özellikle lazer yüzeye dik değilse, okumaları etkileyebileceğini gösterir (videoda 10:32'de).

Bölümler

  • [00:00] Giriş ve Proje Genel Bakışı
  • [00:48] VL53L0X Sensör Detayları
  • [01:41] Modül Genel Bakışı ve Özellikler
  • [02:55] Uygulamalar ve Standartlar
  • [03:35] Pin Yapısı ve Bağlantılar
  • [05:29] Kod Açıklaması
  • [07:45] Kablolama ve Bağlantılar
  • [08:18] Canlı Gösterim
136-Source code for the VL523L0X distance measurement module for Arduino
Dil: C++
/* This example shows how to use continuous mode to take
range measurements with the VL53L0X. It is based on
vl53l0x_ContinuousRanging_Example.c from the VL53L0X API.

The range readings are in units of mm. 
Updated by Ahmad Shamshiri for Robojax.com on July 23, 2018 in Ajax, Ontario, Canada.
Watch video instructions for this code: https://youtu.be/0PnAyt51IU4
Download the library and get other resources for this code at http://robojax.com
*/

#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;

void setup()
{
  Serial.begin(9600);
  Serial.println("Robojax CJMCU VL523L0X laser distance test");
  Wire.begin();

  sensor.init();
  sensor.setTimeout(500);

  // Start continuous back-to-back mode (take readings as
  // fast as possible).  To use continuous timed mode
  // instead, provide a desired inter-measurement period in
  // ms (e.g. sensor.startContinuous(100)).
  sensor.startContinuous();
}

void loop()
{
  Serial.print(sensor.readRangeContinuousMillimeters());// print distance

  if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }

  Serial.println();
}

Kaynaklar ve referanslar

Dosyalar📁

Fritzing Dosyası

  • Adafruit VL6180X Time of Flight Distance Sensor
    Fritzing part for the Adafruit VL6180X Time of Flight distance sensor. This sensor measures absolute distance up to 100mm and ambient light, communicating via I2C. Includes the sensor breakout board and pin connections for use in Fritzing projects.
    Adafruit VL6180X Time of Flight Distance Sensor-1.fzpz 0.02 MB