Search Code

Auna Nisa Nisa da Laser Time-of-Flight VL53L0X Sensor ta amfani da Arduino

Auna Nisa Nisa da Laser Time-of-Flight VL53L0X Sensor ta amfani da Arduino

A cikin wannan koyawa, za mu bincika yadda ake auna nisa ta amfani da na'urar VL53L0X laser time-of-flight sensor tare da Arduino. Wannan na'urar tana ba da damar auna nisa daidai kuma ana iya haɗa ta cikin ayyuka daban-daban, kamar robotics ko tsarin sarrafa kai. A ƙarshen wannan koyawa, za ku iya saita na'urar, haɗa ta daidai, da rubuta lambar da ake buƙata don samun karatun nisa.

Za mu rufe kayan aikin da ake buƙata, umarnin haɗawa, da cikakken bayani game da lambar da ke sarrafa na'urar VL53L0X. Don ƙarin bayani na gani game da tsarin, tabbatar da duba bidiyon da ke da alaƙa (a cikin bidiyo a 00:15).

Bayanin Kayan Aiki

Babban ɓangaren wannan aikin shine na'urar VL53L0X. Wannan na'urar ce mai auna nisa ta time-of-flight wadda ke aiki ta hanyar fitar da hasken laser da auna lokacin da hasken da aka nuna yake ɗauka don komawa zuwa na'urar. Tana ba da ma'aunin nisa a millimeters kuma tana iya aiki a kan kewayon nisa daban-daban, wanda ya sa ta dace da aikace-aikace daban-daban.

Baya ga VL53L0X, kuna buƙatar Arduino board don sarrafa bayanan na'urar. Arduino zai sadarwa da na'urar ta hanyar I2C protocol, wanda ke ba da damar haɗawa da sarrafawa cikin sauƙi. Kuna kuma buƙatar jumper wires don kafa haɗin gwiwa tsakanin na'urar da Arduino.

Cikakkun Bayanai na Datasheet

Mai ƙirƙira STMicroelectronics
Lambar ɓangare VL53L0X
Wutar Logic/IO 1.8 V zuwa 3.6 V
Wutar samarwa 2.6 V zuwa 3.6 V
Fitar wutar (kowane tashar)
Kololuwar wutar (kowane tashar)
Jagorar mitar PWM
Ƙofofin shigar da dabaru
Rage wutar / RDS(on) / saturation
Iyakokin zafi -40 °C zuwa 85 °C
Kunshin QFN-16
Bayanan kula / bambance-bambance Na'urar time-of-flight, I2C interface

 

  • Tabbatar da matakan wutar da suka dace don guje wa lalata na'urar.
  • Yi amfani da pull-up resistors akan layin I2C idan ya cancanta.
  • Tsayar da na'urar tsabta kuma ba tare da toshewa ba don ingantaccen karatu.
  • Daidaita na'urar don takamaiman yanayi don inganta daidaito.
  • Duba don kurakuran lokaci a cikin lambar don magance matsalolin auna.

Umarnin Haɗawa

Don haɗa na'urar VL53L0X zuwa Arduino, fara da haɗa fil ɗin VCC akan na'urar zuwa fil ɗin 5V akan Arduino. Wannan yana da aminci saboda na'urar tana da regulator na ciki wanda ke ba ta damar aiki da wutar 5V yayin da take aiki a matakin 3.3V. Na gaba, haɗa fil ɗin GND akan na'urar zuwa fil ɗin ƙasa akan Arduino.

Yanzu, haɗa fil ɗin SDA akan na'urar zuwa fil ɗin A4 akan Arduino, wanda shine layin bayanan I2C na asali. Sa'an nan, haɗa fil ɗin SCL akan na'urar zuwa fil ɗin A5 akan Arduino, wanda shine layin agogon I2C na asali. Ga wasu nau'ikan Arduino, fil ɗin SDA da SCL na iya bambanta; misali, akan Arduino Mega, yi amfani da fil 20 da 21, bi da bi. Tabbatar cewa duk haɗin suna da ƙarfi kafin kunna tsarin.

Misalan Lamba & Bayani

A cikin lambar Arduino, muna farawa da haɗa dakunan karatu da ake buƙata da fara na'urar VL53L0X. A cikin aikin setup(), muna saita sadarwar serial da fara na'urar:

void setup() {
  Serial.begin(9600);
  Wire.begin();
  sensor.init();
  sensor.setTimeout(500);
  sensor.startContinuous();
}

Wannan ɓangaren yana fara na'urar kuma yana fara yanayin auna ci gaba. Aikin setTimeout(500) yana tabbatar da cewa na'urar ba za ta tsaya ba har abada idan ta kasa karanta nisa.

A cikin aikin loop(), muna karanta nisa kuma muna buga shi zuwa serial monitor:

void loop() {
  int distance = sensor.readRangeContinuousMillimeters();
  distance = distance - 55; // Compensate for error
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.print("mm");
  if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
  Serial.println();
}

Wannan ɓangaren lambar yana karɓar ma'aunin nisa kuma yana daidaita kowane kuskure na tsari ta hanyar rage ƙimar tsayayye. Har ila yau, yana duba don lokutan ƙarewa idan na'urar ta kasa samun karatu.

Nunawa / Abin da za ku yi tsammani

Lokacin da kuka kunna shirin, ya kamata ku ga sabuntawa na ci gaba na nisa da na'urar VL53L0X ta auna a cikin serial monitor. Karatun zai nuna a millimeters. Idan kun motsa abu kusa ko nesa da na'urar, ƙimar nisa za ta canza daidai. Idan akwai lokacin ƙarewa, za ku ga saƙon "TIMEOUT" wanda ke nuna cewa na'urar ta kasa karanta nisa (a cikin bidiyo a 05:30).

Lokutan Bidiyo

  • 00:00 - Gabatarwa
  • 00:15 - Bayanin kayan aiki
  • 01:00 - Umarnin haɗawa
  • 02:30 - Bayanin lamba
  • 05:30 - Nunawa
16-Source code for the VL523L0X distance measurement module for Arduino
Harshe: 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. 

Original source: https://github.com/pololu/vl53l0x-arduino
Modified by Ahmad Shamshiri for RoboJax.com
Date modified: Sep 26, 2017
*/


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

VL53L0X sensor;

void setup()
{
  Serial.begin(9600);
  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()
{
  int distance =sensor.readRangeContinuousMillimeters();
 distance = distance -55;// -55 is to compensate for error. Change or set it to zero to make it work for your sensor
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.print("mm");
  if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }

  Serial.println();
}
17-Source code for VL53L0X distance measurement using two sensor modules for Arduino
Harshe: C++
++
/* This example shows how to use continuous mode to take
range measurements with two VL53L0X sensors. It is based on
vl53l0x_ContinuousRanging_Example.c from the VL53L0X API.

The range readings are in units of mm. 

Original source: https://github.com/pololu/vl53l0x-arduino
Modified by Ahmad Shamshiri for RoboJax.com
Date modified: June 06, 2018
Dennis from YouTube requested this code on June 06, 2018
*/


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

VL53L0X sensor1;// define object for sensor 1
VL53L0X sensor2;// define object for sensor 2

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

  sensor1.init();// initialize sensor 1
  sensor1.setTimeout(500);// set time out for sensor 1
  
  sensor2.init();// initialize sensor 2
  sensor2.setTimeout(500);// set time out for sensor 2
  

  // 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)).
  sensor1.startContinuous();// measure continuously for sensor 1
  sensor2.startContinuous();// measure continuously for sensor 2  
}

void loop()
{
  int distance1 =sensor1.readRangeContinuousMillimeters();// get distance for sensor 1
  int distance2 =sensor2.readRangeContinuousMillimeters();// get distance for sensor 2
  
 distance1 = distance1 -55;// -55 is to compensate for error. Change or set it to zero to make it work for your sensor
 distance2 = distance2 -34;// -35 is to compensate for error. Change or set it to zero to make it work for your sensor
 
  Serial.print("Distance 1: ");
  Serial.print(distance1);// print distance from sensor 1
  Serial.print("mm Distance 2: ");  
  Serial.print(distance2);// print distance from sensor 2 
  Serial.print("mm");
  if (sensor1.timeoutOccurred()) { Serial.print(" TIMEOUT 1"); }
  if (sensor2.timeoutOccurred()) { Serial.print(" TIMEOUT 2"); }  

  Serial.println();
}

Albarkatun da kuma shafukan da za a duba

Babu kayan aiki tukuna.

Fayiloli📁

Fayil Fritzing

  • 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
  • Adafruit VL6180X Time of Flight Distance Sensor
    Fritzing part file for the Adafruit VL6180X Time of Flight distance sensor. This module measures absolute distance up to 100mm and ambient light, communicating over I2C. Includes the sensor breakout board with pins for power, ground, SDA, SCL, and interrupt.
    Adafruit VL6180X Time of Flight Distance Sensor.fzpz 0.02 MB

Sauran fayiloli